A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-刘心武 初级黑马   /  2012-8-9 19:13  /  1476 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

变量初始化问题,为什么只有第二种情况编译通过?

  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. }
复制代码

4 个回复

倒序浏览
(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);
}
回复 使用道具 举报
补充(1)
static块在类被加载的时候就执行了

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




               
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马