各位大侠帮忙看一下这个小程序,有没有问题,谢谢啦!
public class TestVar{
static int j;
public static void main(String[] args) {
int i = 0;
System.out.println(i);
System.out.println(j);
}
}
请问变量j能够正常输出吗?

解决方案 »

  1.   

    这个J能正常运行,虽然J没有赋值给它,默认情况就是0;   j=0 输出结果:
    0
    0
      

  2.   

    在我的机器上运行的结果是0java的机制,保证了你没有给变量赋值的情况下,java会自动给变量赋一个初始值。在一些书中对此有解释。因为这个初始值某些时候是不确定的。所以所有人都建议,由设计人员自己来赋值,以保证程序在任何情况下都可以忠实的完成设计者的设计意图。
      

  3.   

    int类型的成员变量的默认值是0,跟是否是static无关。
      

  4.   

    static静态的意思。修饰一个值或者其他的东西,比如一个类里面的方法(public权限),用static修饰了不需要new对象来调用这个方法,你可以直接类名.方法
      

  5.   

    一旦定义了static  那这个static后的变量 就不会随以后的变量变换而变了
      

  6.   

    我来回答吧!
    首先可以输出,输出是0
    你要明白为什么输出0.你首先要明白static的意义。
    static int a 和 int b 
    有什么区别?
    区别就在加载顺序上!这个涉及到栈的概念!变量都是存在栈中 
    static int a 也就是静态变量!加载在这个类之前!也就是说。在这个类开始前。系统就为a分配了一段空间!但是不能平白无辜就说,我占用了这段内存资源!在计算机里,机器就会默认分配00 00去占这段内存。一个int 4个字节。内存中就是00 00
    int b 是在程序运行到这一句 也就是第4句。才会被加载!才会分配空间
      

  7.   


    你就在这扯淡吧!
    java的内存有:堆,虚拟机栈,本地方法栈,方法区,常量池等等,static变量是分配在方法区,而非堆,也不是栈。
      

  8.   

    我也来解释下哈:
    看下面:-------这些都是每个类型的默认值
    int : 0
    byte : 0
    long : 0
    shor : 0
    float : 0.0
    double : 0.0
    boolean : false
    char : '\u0000'
    object reference : null
    比如说你写了个int a;
    又写了个int b=1;
    a与b 的区别在于给b赋值了,值是1.而a明显后面是";"也就是说a没有赋初始值,jav默认给它的值是int的型的默认值:也就是上面列出的 int:0;
    那么如果写的是"Double c;"呢?
    根据上面的表那么c的默认值就是"0.0"了.
      

  9.   

    你也是在扯淡!
    public static void main(String[] args) {
    int i;
    System.out.println(i);
    }上面的代码编译都通不过,别说输出0了。只有field(不管是不是static),也就是成员变量才有默认值。并不是所有的变量都有默认值。
      

  10.   

    http://deng5566.iteye.com/blog/665942
    LZ看下这个