关于java物件参照的一个问题

class Test{
	int x=3;
	void show (){
		System.out.println("x="+x);
	}
}
public class java1{
	public static void main(String [] argv){
		Test a,b,c;
		a=new Test();
		b=new Test();
		System.out.println("a==b?"+(a==b));//为什么这里显示的结果是false呢?程序运行到这里都是一样数值啊!
		

		c=b;//这里是吧b的值给c对吧?还是不是简单地赋值而是别的呢?
		c.x=10;  //不懂这里,按照道理应该是c.show来使用方法,为啥要c.x呢???我原来慕课中也问过这个问题,别人给的答案
		//是这里可以理解为调用,,因为c是Test类的对象,故c既可以使用来调用Test类中的方法,也可以通过查看,修改Test类成员
		变量的值,我还是没有听懂,不知为啥c就是Test类的对象呢?请大神给我解答解答,谢谢了!这里不懂,谢谢了,希望详细给我讲讲!
		System.out.println("c==b?"+(c==b));
		System.out.print("a.");
		a.show();
		System.out.print("b.");
		b.show();
		System.out.print("c.");
		c.show();
		



	}

}


掌门飞哥
浏览 1338回答 3
3回答

Finit

 c=b;是引用赋值,打印System.out.println(c==b);结果为true,即b、c指向同一内存地址;既然是同一引用,所以b.show、c.show一样;然而: a=new Test();        b=new Test();        System.out.println("a==b?"+(a==b));a、b为不同对象,不同存储地址,即引用指向地址不同,a==b为FALSE。望采纳
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java