为什么不是同一个
s1是一个方法内部变量,在类加载、验证、准备、解析、初始化等过程中是不会对s1变量进行正式赋值的,只有在使用时才对其进行初始化。 String是一个对象,s3、s4的变量赋值隐藏了一个初始化实例的过程String s3 = new String(),既然s3与s4是不同的实例对象,那么它们的内存地址也就不一样了。当使用equals()方法时,s3与s4相等,是因为比较的是字符值而不是内存地址。