public class XianChen1 { public XianChen1() {
}
public static void main(String []arg){
MyThread r=new MyThread();
Thread t=new Thread(r);
t.start();
for(int i=0;i<5;i++)
{
System.out.println("Bb");
}
}
}class MyThread implements Runnable
{
int j;//为什么不用初始化j=0;
public void run()
{
while(true)
{
System.out.println("Aa"+j++);
if(j==3)
{
break;
}
}
}
}
代码运行能出三种结果.
第一种:
Bb
Bb
Bb
Bb
Bb
Aa0
Aa1
Aa2Process completed.
第二种:
Bb
Aa0
Bb
Aa1
Bb
Aa2
Bb
BbProcess completed.
第三种:
Bb
Bb
Aa0
Bb
Aa1
Bb
Aa2
BbProcess completed.这三种情况是随机出现的,请问为什么程序运行会出现这样的不确定性?另外j为什么不用初始化为0?
java中,所有类型都有默认值的,j是int所以默认是0
“java中,所有类型都有默认值的,j是int所以默认是0”,你说的是java中,为什么下面这个代码会有一个编译错误public class uninit { public uninit() {
}
public static void main(String []arg){
int j;
System.out.println(j);
}
}
第二个问题,对于class处的基本型变量系统会给定一个默认的初值。但对函数内部的不会。
java中,所有类型都有默认值的,j是int所以默认是0是值变量是成员变量,可你把j放到局部变量就不行了