java的问题

java的问题a=b;//a,b是同一种类型的引用b=a+b;为什么第二行的a的内容还是a的内容,而不是b的内容,它里面存的不应该是b的地址值了吗,指向b的对象才对啊??... java的问题a=b; //a,b是同一种类型的引用
b=a+b;

为什么第二行的a的内容还是a的内容,而不是b的内容,它里面存的不应该是b的地址值了吗,指向b的对象才对啊??
展开
 我来答
来自滑雪场欣慰的钢铁侠
2018-07-17 · TA获得超过256个赞
知道答主
回答量:38
采纳率:100%
帮助的人:35.7万
展开全部

a=b将使a,b的引用值相同,他们将分别指向在堆栈中的同一对象,必须明确的是a并不是指向的b,而是指向b所指向的对象。

b=a+b使b的引用值发生变化,但a的引用值并未进行修改,指向的还是先前的对象。

要点:

1、改变引用值并不会改变引用值所指向的对象。

2、改变对象,变化将体现在所有指向他的引用上。

3、对于类似String,Integer等这样的特殊类,即内部数据已经被final关键字修饰,将无法从内部改变他的值。

因此

String a = new String("aaa");

String b = a;

当你要裁剪一个字符串,使用a.subString()是无法改变a指向对象的值的,作为替代它会产生一个返回值,返回值将生成一个新的字符串对象的引用。

a = a.subString() 正确,a的引用发生变化,但b却没有

所以a和b将不再指向同一对象。

4、基本类型类似3中的情况,底层有较大区别,但表层可以按3中的描述理解。

匿名用户
2018-07-17
展开全部

基本类型数据必须赋值后才能去比较

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式