java判断线程名和一个字符串是否相等能用==吗?

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

手里没有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

==是使用内存地址判断是否相同,所以两个字面值相同的字符串使用==进行判等不一定相同。对于你这个问题来说最好不要做不确定的事情。
至于你同学使用的jdk10,这个问题有可能是版本导致的。

避免这种问题请用equals