一种是String s = "123"; 一种是String s = new String("123"); 有什么不同点?
前者绕弯子,多创建了一个string变量,但是结果是一样的
可以这么理解,两种方式的值是一样的,但是对象地址是不一样的;String s = "123"先在String池中开辟存放常量“123”,如果有String c="123",s=c返回true,
因为在String池中已经有"123"对象,String s = new String("123")而是堆内存上创建一个String对象,常量是"123",s指向堆内存对象的首地址,导致s==s返回false