代码不会骗人,这是我写的测试程序,答案不是你说的。
public class TestJava {

	static String s1="hello";
	String s2=new String("hello");
	String s3=new String("hello");
	public static void main(String[] args) {
	
		TestJava aa=new TestJava();
		aa.match();
	}
	public void match(){
		System.out.println(s1==s2);
		System.out.println(s2==s3);
	}
}
结果是:false,false。
说明:不管常量池中是否有“hello”这个字符串,每次new String()这种方式创建String类型变量时,都会在堆中创建一个String类型的“hello”,所以s1和s2,s3的值都是不同的,并且s2和s3也是不同的。