一个是变量,一个是对象,变量不等于对象 String s = "sd"; String t = new String("sd");但s不等于t
我感觉应该都是对象,只是Java的语法分析器,允许使用类的对象在赋值时 调用默认构造器,进行初始化。 String s = "sd"; 在进行赋值时同样调用了new String("sd"); String t = new String("sd");更加显示的调用。 s不等于t,因为分配的内存区是不同的。
不同之处在于: 这样声明:String s="ssss"; java会把"ssss"放在pool of literal strings里面。 此后假如再声明String s1 = "ssss"; s 和 s1将是同一个串。而如果用new的话将总是新建一个新串,除非调用intern(),否则字符串值不会被放入 pool of literal strings里面。
String s = "sd";
String t = new String("sd");但s不等于t
调用默认构造器,进行初始化。
String s = "sd";
在进行赋值时同样调用了new String("sd");
String t = new String("sd");更加显示的调用。
s不等于t,因为分配的内存区是不同的。
楼上的应该再看看基本概念,什么叫“s不等于t ”?
s和t是在不同的内存区,所以只能说s!=t,但s.equals(t)是true.
这样声明:String s="ssss"; java会把"ssss"放在pool of literal strings里面。
此后假如再声明String s1 = "ssss"; s 和 s1将是同一个串。而如果用new的话将总是新建一个新串,除非调用intern(),否则字符串值不会被放入
pool of literal strings里面。