黑马程序员技术交流社区

标题: 问一个变量初始化问题 [打印本页]

作者: 黑马-刘心武    时间: 2012-8-9 19:13
标题: 问一个变量初始化问题
变量初始化问题,为什么只有第二种情况编译通过?

  1. (1)
  2. static final int x;
  3. public static void main(String[] args)
  4. {               
  5.     System.out.println(x);
  6. }
  7.                
  8. (2)
  9. static int x;
  10. public static void main(String[] args)
  11. {       
  12.   System.out.println(x);
  13. }

  14. (3)
  15. public static void main(String[] args)
  16. {
  17.     int x;
  18.     System.out.println(x);
  19. }
复制代码

作者: 杨彪    时间: 2012-8-9 19:21
(1)
static final int x;一个变量既是final又是static的,我们必须在声明变量时直接赋值
public static void main(String[] args)
{               
    System.out.println(x);
}
(3)
public static void main(String[] args)
{
    int x;因为它在局部变量里  因为没有默认值。只能按照声明,赋值,使用的步骤。
    System.out.println(x);
}
作者: 杨彪    时间: 2012-8-9 19:26
补充(1)
static块在类被加载的时候就执行了

如果没有赋初始值的话,java虚拟机会报错
作者: 周世阳    时间: 2012-8-9 19:33
1).凡事final变量必须在定义的时候赋值
2).全局变量是有默认值的,int的默认值是0,所以mian方法可以输出x-->0;
3).不同于全局变量,局部变量没有默认值,如果没有复制就调用变量,编译器就会报错,表明局部变量没有被初始化
作者: 魏-玉-彪    时间: 2012-8-9 19:42
第一种情况,static final int x;  静态终结变量,只声明,没赋值,而且这个值已经无法赋了。
第三种情况,int x; 是定义在静态的主函数main方法中的局部变量。局部变量没有默认值,
第二种情况,static int x; 打印的是默认值。




               





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