String a="a"+"b"+1; //java的常量优化机制,在编译的时候自动生成ab1字符串,常量池中就有ab1字符串
String b="ab1"; //常量池中已经有,就不需要再创建, 两个引用指向同一个对象. 所以为true
-------------------------------------------
第二个是
String a="a"; //常量池中生成
String b=a+"f"; //变量与常量的"+",是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。是 在堆内存中创建成的.
String c="af";//常量池中生成. 两个引用指向的地址不同,所以b==c 为false
----------------------------------------------------
final String a="a"; //final修饰为常量
String b=a+"f"; //常量相加,常量的优化机制,在编译的时候自动生成"af",常量池中就有字符串af
String c="af"; //常量池中已有,就不需要再创建,两个引用指向同一个地址 所以为true
System.out.println(b==c); |