1、String a="a";
String b="a";
请问a==b吗?为什么?
String c=new String("a");
String d=new String("a");
请问c==d吗?为什么?
答:分别是true和false,第一种 String b="a";在执行的时候jvm会先到常量池里面去查是否有值为"a"的字符串,有的话就引用,因此a和b是指向同一个对象。而第二种的new表示在堆内存里重新开辟一块内存,因此c和d指向的是不同的对象
1、String a="a";
String b="a";
请问a==b吗?为什么?
String c=new String("a");
String d=new String("a");
请问c==d吗?为什么?
答:分别是true和false,第一种 String b="a";在执行的时候jvm会先到常量池里面去查是否有值为"a"的字符串,有的话就引用,因此a和b是指向同一个对象。而第二种的new表示在堆内存里重新开辟一块内存,因此c和d指向的是不同的对象