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本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备