这里的==比较的是地址值你应该知道吧?
String a = "ab";//字符串常量池里,找不到"ab",好,那就创建一个.地址值假设为001
String b = "ab";//"ab",我常量池里有,直接引用,所以b的地址值也是001.所以 a==b;
String c = "abc"; //字符串常量池里没有"abc",好创建一个,地址值假设为002
String d = a+"c";//而这里要说得话我文笔不是很好,说不太清楚
你可以这样理解,这个d是在堆内存中的对象,地址值你觉得和常量池里的abc是一样吗?
底层好像是一个StringBuilder对象.最后这段话看不懂的话就忽略吧,你就当它是一个堆内存对象,那它的地址值和常量池里的对象有可能是一样的吗? |