public class StringDemo {
public static void main(String[] args) {
String str1="Hello";
String str3=str1;
System.out.println("str1==str3"+":"+str1==str3);
}
}
为什么是输出是false 最好用内存图解解释下,谢谢了 内存知识不太懂,
1为什么是输出是false 最好用内存图解解释下,谢谢了 内存知识不太懂,
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 你是直接定义的字符串常量,本质上str1和str3是指向同一个常量池的。你的代码之所以输出false是因为你真正执行的是字符串"str1==str3:hello"和str3进行等操作
优先执行前面的字符串加操作,后执行后面的==操作了。
修正测试代码:boolean flag = str1==str3; System.out.println("str1==str3:"+flag);
或者修正如下(加一括号提高优先级)
System.out.println("str1==str3"+":"+(str1==str3));
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 onvif+openssl,vs2022编译openssl64
- ¥15 iOS 自定义输入法-第三方输入法
- ¥15 很想要一个很好的答案或提示
- ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
- ¥15 怀疑手机被监控,请问怎么解决和防止
- ¥15 Qt下使用tcp获取数据的详细操作
- ¥15 idea右下角设置编码是灰色的
- ¥15 全志H618ROM新增分区
- ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
- ¥15 NAO机器人的录音程序保存问题