不理解一段代码,找人看下
public class Test
{
public static void main(String args[])
{
String s0 = "Hello ";
String s1 = "Hello ";
String s2 = "Hell " + "o ";
String s3 = new String( "Hello ");
String s4 = new String( "Hello ");
System.out.println(s0 == s1); //true
System.out.println(s1 == s2); //true
System.out.println(s1 == s3); //false
System.out.println(s3 == s4); //false
System.out.println(s3.equals(s4)); //true
System.out.println(s2.equals(s3)); //true
}
}
刚学java,有些东西不理解。上面这段代码中s3、s4不是指向同一个对象,s0、s1为什么指向同一个对象?String s0 = "Hello ";和String s3 = new String( "Hello ");不是等同的吗?请教大家这两句有什么区别。
------解决方案--------------------是这样的S0 是把数据放在缓冲池中间 ,S3 是在动态分配区重新申请一块内存
String s0 = "Hello " 是先在缓冲池中找有没有相同的数据有的话直接把s0映射到这个地址
String s3 = new String( "Hello "); 是在内存中申请一个新的区域 把 "Hello "写进去,再把这个区域的首地址给s3,所以地址会不同