一个关于String的问题

一个关于String的问题

public class Test{
   public static void main(String[]args ){
       String a="asdf";
       String b="asdf";
       System.out.println(a==b);
       System.out.println(a!=b);
   }
}
运行的结果是:
true
false

而我将程序中的String a="asdf";    String b="asdf";  
改为  Sring a=new String("asdf"); String b=new String("asdf");

运行的结果是:
false
true

原因何在?

解答:String X = new String("X");和String Y = new String("X")在内存中分别建立了两个对象。
String x = "x"; java会先在内存中查找有没有"x"这个字符串对象存在,如果存在就把x指向这个字符串对象同理y也指向这个对象因此 x==y
String x = new String("x"); 则不论内存中是否已经存在"x"这个字符串对象,都会新建一个对象同理 y 也指向另一个新建的对象因此 x != y

你可能感兴趣的:(String)