本帖最后由 逝水大魔王 于 2016-5-24 23:34 编辑
符串是常量值,储存在常量池中,String s1 ="ab";只是将常量池中的地址值赋给了s1,也就是s1的地址值是"ab",是指向常量池ab的,同理s2一样,但String s3 = s1 + "c";而这个时候s1是个变量,不是常量,所以是在堆内存而不是常量池中
String s3 = new( new s1 +"c");所以是这样的,故此s3 == s2是false,因为储存地址不一样,地址值也肯定不一样,而equls是比较的是他们在内存中的值的所以true |