System.out.println(Thread.currentThread().getName()+(Thread.currentThread().getName()=="L4"));
输出
L4false
然而在同学电脑(jdk10.2)上输出L4true,我的版本1.7
求解?

java判断线程名和一个字符串是否相等能用==吗?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 一位凡人 2018-11-03 12:04关注
手里没有jdk10 , 如果 == 为 true的话 很可能是线程名被创建到了**常量池** "L4"这个字符串也是从常量池引用过来的,
所以Thread.currentThread().getName() =="L4" 为 true
当然这只是推测 , 具体得看源码 , 我这是jdk1.8
String val1 = "L4";
String val2 = new String("L4");
System.out.println(val1 == "L4"); true
System.out.println(val1 == val2); false
Thread thread = new Thread("L4");
System.out.println(thread.getName()+"="+(thread.getName()=="L4")); true
我认为1.7的创建线程应该是new了一个str本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报