public class TestValue {
private static int a; public static void main(String[] args) {
modify(a);
System.out.println(a);
} public static void modify(int a) {
a++;
}}最后输出了:0
问:a是私有变量,也没有初始化过,怎么可以使用了呢

解决方案 »

  1.   

    每个变量都有个初始的值  int型初始为0
      

  2.   

    成员变量有默认初始值,int 默认值为0
      

  3.   

    一般说来,假如实例变量在定义的时候没有被显式的初始化,
    那么 Java 将变量自动初始化为 "似零" 的值,具体值由变量的数据类型决定: boolean  false
    byte     0
    char     \u0000
    short    0
    int      0
    long     0
    float    0.0
    double   0.0
    user-defined-type    null
      

  4.   

    modify()函数没用起到作用的。然后那个没有赋值的变量默认值为0
      

  5.   

    int 类型的默认值为0,因为限定了static,所以a的值将一直保持为0 ,之所以可以直接访问时因为你的public方法也为static,所以在不须声明的情况下,就可以访问。因为modify方法操作的是 静态的(static) 属性值,所以你即便是a++,它的值仍然不会变化。
      

  6.   

    首先类的成员变量都有默认初始值,而局部变量(方法内部的变量)没有。
    而且类的静态成员也有默认初值。故a为int,初值为0.
    a是该类的静态成员,虽然是private,但main方法是该类的静态方法。
    类的静态方法可以访问静态成员,所以可以访问a。
      

  7.   

    int型的默认初始值是0,
    int是基本类型,modify方法里操作的a跟外面的a不是一回事。所以是0。
      

  8.   

    modify里面的a的作用域是局部的