String s = new String("silly");

上面的代码,会创建一个新的String实例,每次都是新的内存地址,应该改为:

String s = "silly";

测试如下:

String s1 = new String("silly");
		String s2 = new String("silly");
		System.out.println(s1 == s2);
		
		String s3 = "silly";
		String s4 = "silly";
		System.out.println(s3 == s4);

测试结果:

false
true

因为new会分配内存。如果对象是不可变的,那么应该重用这个对象。