请问关于String和Stringbuilder的区别既然说StringBuilder是一个类 那为什么不能直接进行赋值StringBuilder one=“慕课网”;请问这个为什么错了,应该如何使用sringBuilder这个我的理解是 当String one=“慕课网”;
String two=new String("慕课网");//这里是利用String新建了一个对象存储在堆中,占用了内存空间。虽然说one和
two内容相同,但是内存不同。在常量池中拥有了一个内存"爱慕课"他不是对常量池的一个修改,只能在堆中重新
创建一个"爱慕课"。占用了空间,影响了运行速度
StringBulider three=new StringBulider("慕课网")//这里是创建了一个新的StringBulider对象为“慕课网”,但是
这里的"慕课网" 如果之后使用
StringBuilder four=new StringBuilder(“123”);
four=three;
也就是说对于four这个变量是在three的基础上(或者说她的内存空间)
进行了修改。直白说就是"慕课网"内存中的改变为"123"请问大牛我的理解正确吗,如果不对请指正。如何正确那么请问。以及为什么我在输出system.out.print(one==three);的时候提示不兼容,那么来说StringBulider的作用到底应该怎么理解
3 回答
Caballarii
TA贡献1123条经验 获得超629个赞
class StringBuilder{ String s; StringBuilder(String s){ this.s=s; } ...... }
看成这样一个类大概就可以了。实际成员变量应该是char[]
双引号形式的字符串就是String类型的,类之间如果不存在父子关系,是不可以强制转换的,所以
StringBuilder one=“慕课网”;
把String类型赋值给StringBuilder类型就会报错,后面用“==”比较不仅错误而且没意义,对象用==是比较地址的,不是比较内容的。
four=three; 也就是说对于four这个变量是在three的基础上(或者说她的内存空间) 进行了修改。直白说就是"慕课网"内存中的改变为"123"
这句话不对,four=three只是把three的地址传给了four,four修改了three也会跟着变,而"慕课网"这个字符串如果没有变量指向就会被GC回收
添加回答
举报
0/150
提交
取消