package com.sing.tij.ch3;import static com.sing.tij.util.Print.*;
public class Assignment { public static void main(String[] args) {
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level = 9;
t2.level = 47; println("1:t1.level:" + t1.level + ",t2.level:" + t2.level);
t1 = t2; println("2:t1.level:" + t1.level + ",t2.level:" + t2.level); t1.level = 27;
println("3:t1.level:" + t1.level + ",t2.level:" + t2.level);
}
}
class Tank {
int level;
}
请大家说出上面打印的结果println就是一个打印方法。
并说出原因。
2:t1.level:47,t2.level:47//t1=t2;t1指向t2指向的值
3:t1.level:27,t2.level:27//改变t1,t2指向的共同的值
内存分析
t1.level:47,t2.level:47//t1指向t2的对象
t1.level:27,t2.level:27//t1 t2指向同一个对象,t1改变的对象也是t2的对象也跟着改变
t1.level:47,t2.level:47//t1指向t2的对象
t1.level:27,t2.level:27//t1 t2指向同一个对象,t1改变的对象也是t2的对象也跟着改变
t1和t2已经指向同一个对象了,所以无论t1和t2的改变,都会引起同样的变化
所以为
t1.level:9,t2.level:47
t1.level:47,t2.level:47
t1.level:27,t2.level:27
Java codepackage com.sing.tij.ch3;importstatic com.sing.tij.util.Print.*;publicclass Assignment {publicstaticvoid main(String[] args) {
Tank t1=new Tank();
Tank t2=new Tank();
t1.level=9;
t2.level=47; println("1:t1.level:"+ t1.level+",t2.level:"+ t2.level);
t1= t2; println("2:t1.level:"+ t1.level+",t2.level:"+ t2.level); t1.level=27;
t2.level=37;
println("3:t1.level:"+ t1.level+",t2.level:"+ t2.level);
}
}class Tank {int level;
}
这样去运行一次你就明白了