黑马程序员技术交流社区

标题: 对象声明赋值问题 [打印本页]

作者: 刘文飞    时间: 2012-10-19 11:54
标题: 对象声明赋值问题
本帖最后由 刘文飞 于 2012-10-19 14:28 编辑

代码:
——————————————————————————————————————————————
import java.util.*;
import java.text.*;
public class SimpleDateFormatDemo01{
        public static void main(String args[]){
                String strDate = "2012:10-19 10:59:38:839";
                String pat1 = "yyyy:MM-dd HH:mm:ss:SSS";
                String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
                SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
                SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
                //Date d = null;
                try{
                        Date d = sdf1.parse(strDate);//声明的时候直接赋值怎么不行,而要先在前面Date d = null
                }catch(Exception e){
                        e.printStackTrace();
                }
                System.out.println(sdf2.format(d));
        }
}

————————————————————————————————————————————
错误提示:
————————————————————————————————————————————————————————
I:\code\java>javac SimpleDateFormatDemo01.java
SimpleDateFormatDemo01.java:16: 找不到符号
符号: 变量 d
位置: 类 SimpleDateFormatDemo01
                System.out.println(sdf2.format(d));
                                               ^
1 错误




作者: 徐梦侠    时间: 2012-10-19 12:05
因为你在后面还调用了变量d的,不能把它定义在try代码块中
import java.util.*;
import java.text.*;
public class SimpleDateFormatDemo01{
        public static void main(String args[]){
                String strDate = "2012:10-19 10:59:38:839";
                String pat1 = "yyyy:MM-dd HH:mm:ss:SSS";
                String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
                SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
                SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
                //Date d = null;
                try{
                        Date d = sdf1.parse(strDate); //如果在此定义变量,那么后面出来try代码块就不能用了声明
                }catch(Exception e){
                        e.printStackTrace();
                }
                System.out.println(sdf2.format(d)); //d是局部变量
        }
}

作者: qhasilver    时间: 2012-10-19 12:06
有没有听说过一句话——局部变量,出了大括号就没人认识它。
你把Date d = sdf1.parse(strDate);写在了try{}里面,而在{}外面调用System.out.println(sdf2.format(d));
是不对的。
我改了一下你的代码
  1. import java.util.*;
  2. import java.text.*;
  3. public class SimpleDateFormatDemo01{
  4.         public static void main(String args[]){
  5.                 String strDate = "2012:10-19 10:59:38:839";
  6.                 String pat1 = "yyyy:MM-dd HH:mm:ss:SSS";
  7.                 String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
  8.                 SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
  9.                 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
  10.                 //Date d = null;
  11.                 try{
  12.                         Date d = sdf1.parse(strDate);//声明的时候直接赋值怎么不行,而要先在前面Date d = null
  13.                         System.out.println(sdf2.format(d));
  14.                 }catch(Exception e){
  15.                         e.printStackTrace();
  16.                 }
  17.                
  18.         }
  19. }
复制代码

作者: 刘伟平    时间: 2012-10-19 12:16
定义变量需要注意变量的作用区域,局部变量是只能作用在它所在的代码块和其内部代码块的,就像你在try代码块中定义了 d 变量,那么在catch和try上层代码块就无法访问了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2