楼主的两个例子有着明显的差别:第一个是局部变量,必须显式初始化
第二个是成员变量,如果你不显式初始化他,Java会在实例创建过程中默认初始化之。所以有你上面的差别。

解决方案 »

  1.   

    这个跟static无关
    一个变量做为成员变量(即类变量)时,你不做初始化,编译的时候自动帮你初始化的,
      原理类型初始为0
      对象类型初始为null
    如果你的变量是局部变量,如你上面的在方法中定义的变量则一定要初始化才能编译通过.
      

  2.   

    对,和static无关
    当一个变量作为成员变量出现时,如果不显式地赋初值,系统会给它赋一个默认的初值.
    而作为一个方法中的局部变量,在你没给它赋初值时,系统不会自动给它赋初值.
    另外,系统默认给予的初值根据不同的数据类型而不同. int 默认为0
      

  3.   

    这个跟static无关
    一个变量做为成员变量(即类变量)时,你不做初始化,编译的时候自动帮你初始化的,
      原理类型初始为0
      对象类型初始为null
    如果你的变量是局部变量,如你上面的在方法中定义的变量则一定要初始化才能编译通过.----------同意