package cn.stack;
public class Test_String
{
public static void main(String[] args)
{
String x = "a";
String a = "abc";
String b = "a"+"bc";
String c = x+"bc";
String d = new String("a")+"bc";
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a==d);
}
}
结果:
true
false
false
//将.class文件反编译的结果
package cn.stack;
import java.io.PrintStream;
public class Test_String
{
public static void main(String[] args)
{
String x = "a";
String a = "abc";
String b = "abc";
String c = x + "bc";
String d = new String("a") + "bc";
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a == d);
}
}可以看出b ="ab"+"c"在编译的时候就直接编译成b="abc"了。
本文通过一个简单的Java程序,深入探讨了字符串常量池的概念及其如何影响字符串的比较操作。通过对不同字符串创建方式的对比,解释了为什么某些字符串可以直接通过==进行比较而返回true,而有些则不行。
900

被折叠的 条评论
为什么被折叠?



