为什么结果一个是true,一个是false?

 我来答
_hawk_Amlo
2015-11-25 · TA获得超过188个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:96.7万
展开全部

java的==运算符是对引用进行比较(也就是比较地址),因此对字符串使用==运算符只是比较字符串的地址,而不是比较字符串内容。

a == c //结果为true的原因

java编译器进行了优化。

String c = b + 2;

由于c是一个常量字符串,编译器在编译时会直接计算出b + 2,将b + 2替换为"hello2",此时c就会被赋值为"hello2"

String c = "hello2";

又因为代码里有两个"hello2"字符串,字符串内容相同,编译器会优化成:

String a = "hello2";
// ...
String c = a;

此时a和c引用的是同一个字符串的地址,因此a==c结果为true。


a == e //结果为false的原因

变量d不是常量字符串,编译器不会优化变量e的初始值。即使a和e的字符串内容相同,他们引用的字符串地址不一样,因此a==e结果为false

追问
也就是说编译器会自动用a去替代b+2然后给到c?
则秀教育
2021-04-11
知道答主
回答量:34
采纳率:0%
帮助的人:1.6万
展开全部

0106-逻辑值(TRUE和FALSE)与数值的关系及转换

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式