很简单的JAVA程序

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:57:58
public class Temp {
byte x;
}
class Test{
public static void main(String [] args){
Test t = new Test();
t.start();

}
void start(){
Temp tmp= new Temp();
System .out.println(tmp.x + " ");
Temp tmp1=fix(tmp);
System.out.println(tmp.x + " " +tmp1.x);

}
Temp fix(Temp tmp2){
tmp2.x=42;
return tmp2;
}

}
结果是 0 42 42
我觉得tmp.x默认的一直是0啊。结果不应该是0 0 42吗?

注意看你的调用。
Temp tmp1=fix(tmp); —>

Temp fix(Temp tmp2){
tmp2.x=42;
return tmp2;
}

此时tmp 就是 tmp2 对吧, tmp2.x=42 说明tmp的一个属性x已经被赋值为42。 你下面打印tmp.x 自然就是42,因为你在这中间并没有重新建立新的tmp对象

所以出现结果 0 42 42

Test是没有public的,这种类只能在一个包里引用。我个人感觉有点类被序列化的意思,所以就是这个答案。