楼主想说的是string s="hi"和string s=new string("hi")的区别吧?
这个问题我给你总结一下:
string s="hi" string s=new string("hi")
是赋值语句 是实例化语句
存储在栈里 存储在堆里
效率高 效率低
也可以这么理解:
String s= "hi"; 先在内存中找是不是有"hi" 这个对象,如果有,就让str指向那个"hi".如果内存里没有"hi",就创建一个新的对象保存"hi".
String s=new String ("hi"); 就是不管内存里是不是已经有"hi"这个对象,都新建一个对象保存"hi".
使用String s = "hi";的方式,可以在一定程度上提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。而对于String s = new String("hi");的代码,则一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担。 |