发布网友 发布时间:2024-10-23 22:36
共1个回答
热心网友 时间:2024-11-06 03:28
在Java当中,String是一个比较特殊的类,跟其他引用类型的变量不同,String在某些时候可以当作基本类型的变量来看待,这就是题目当中的s1和s2跟只创建一个对象的道理,创建的两个变量都指向了同一块内存空间。
String s1=new String("bc"); String s2=new String("bc");则是创建两个对象,每次new的时候都是在内存当中另外开辟出一块空间分别储存。
还有一句很重要的话就是:String永远不会发生改变,任何对String的操作都是另外返回一个新的String,而不是在原有的String上进行修改:
例如:String s1 = "bc";
String s2 = s1;
s1 = "de";
这时输出s2会发现s2仍然等于"bc"
正是String的这个特性,占用太多内存空间,后来才有了StringBuffer/StringBuilder两个类。
关于String这个比较特殊类的用法还有很多,楼主有兴趣的话可以单独找来看看。