看起是没有什么区别,但是里面的区别可大了,因为String s="a"定义之后,是一个基本变量,在内存中是存储在堆栈中的,面String s=new String("a")这所定义的对象是存储在堆中的,两个之间访问速度就是不一样的
String s2=new String("aa");
String s22=s2; //s22也指向"aa",
s22="bb"; //创建一个"bb",s22引用指向"bb",并不是改变"aa"的值,所以s2是不会受影响的
System.out.println(s2);
第一个是用用来直接创建一个量,让其为string类型的,而后者,则是是一个构造函数,生成一个新的对象,然后将这个新的对象的引用赋给a,两个分配内存是不一样的,如有不太对的地方,请多指正,小弟不胜感激
String a = "123"的意思是赋值的意思,就是让a的值等于123.
String a = new String("123")的意思是两个,一个是让创建一个字符串对象等于“123”,然后把这个字符串对象赋值给a
实际使用没区别
只在内存分配上有区别