如果是直接赋值的是取常量池的数据, 如果是new的,永远都是重新创建内存.所以 s == d 因为在object比较中 ==比较的是内存地址, 而new String()是告诉jvm重新创建一块内存.
new的对象不再常量池里面的,而直接用string定义的时候他是先在常量池里面去找,找到了就把字符串的引用给他,没找到就把这个字符串放到常量池。new的string凭字面意思也是说我要一个新的啊,所以肯定就不是已经存在的。不知道是否明白。