import java.util.*;
class A{
private int i=0;
public int getI(){
return i;}
public void setI(int i){
this.i =i;}
}
public class Main {
public static void main(String[] args) { A a = new A();
A b = new A();
a.setI(4);
b.setI(9);
a=b;
a.setI(6);
System.out.println("a"+a.getI());
System.out.println("b"+b.getI());
}
}我试过编译得出a=6,b=6
为什么b=6???
class A{
private int i=0;
public int getI(){
return i;}
public void setI(int i){
this.i =i;}
}
public class Main {
public static void main(String[] args) { A a = new A();
A b = new A();
a.setI(4);
b.setI(9);
a=b;
a.setI(6);
System.out.println("a"+a.getI());
System.out.println("b"+b.getI());
}
}我试过编译得出a=6,b=6
为什么b=6???
解决方案 »
- 接触p2p,望指点
- 诡异的Java语法,下面这句话神马意思?
- 求推荐一本JAVA经典工具书,基础知识讲的详细,又有深度的!
- 新手 java TextField内容相对路径存入.txt文件中 在以字符形式读取出来.....
- java中往Access数据库里插入记录的问题
- java 注解问题?? @see 这个注解怎么用啊? 他链接到那啊
- 请教如何设置JTable的每行的高度和颜色、背景和字体等,先谢谢了
- 我怎么样设置打印机的纸张默认为A4?
- 求一打印发票金额的程序
- 请高手帮忙:applet、socket、数据库安全问题
- 我找不到java 书籍下载 谁帮帮我?
- 帮我看看为什么这个synchronized没有锁住程序?
楼主【jordanlai】截止到2008-07-02 01:10:03的历史汇总数据(不包括此帖):
发帖的总数量:3 发帖的总分数:40
结贴的总数量:1 结贴的总分数:10
无满意结贴数:0 无满意结贴分:0
未结的帖子数:2 未结的总分数:30
结贴的百分比:33.33 % 结分的百分比:25.00 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主该结一些帖子了
a.setI(6);
System.out.println("a"+a.getI());
System.out.println("b"+b.getI()); //既然是同一个对象,当然输出的属性值也一样拉。
小结:我们平时总是说我们创建了一个对象a,a其实不是这个对象,它只是该对象的一个引用,但是呢,为了方便,我们也就这样称呼它了。
此时,a,b的引用都指向了堆中的a的对象
a.setI(6);//通过a的引用改变堆中的属性,因为a,b都指向同一个对象,所以输出结果为6,6
这句执行之后
a和b就是同一个对象了
如果你把a.setI(6);改成b.setI(6);
也是同样的结果