String 和 new String

String s1=”welcome”;
String s2= “welcome:;
String s3 =new String(”welcome”);  //新建对象   指向新的内存   比较内容相同 但是地址不同  
System.out.println(s1.equals(s3));
System.out.println(s1 ==s3);
== 是比较内存地址
equals 是比较内容 
在s1 和s2比较的时候,他们都引用了同一块内存地址,所以他们 ==和equals 都是true
但是在s1和s3比较的时候,  因为s3是new String ,相当于在内存中新建了一个对象 ,指向了一块新的内存地址,
所以在比较==的时候,引用地址是不同的 ,报false,比较equals的时候是相同的
原文地址:https://www.cnblogs.com/alexhere/p/8092386.html