本文目录一览:
java中,两个String类型的字符串相加得到一个新的字符串,请问原来的字符串是否改变,为什么?
java中 有String 和StringBUffer
String 长度不可变
StringBuffer长度可变
String相加 原来的不变
可变不可变的意思是说
你新建一个String型的 你第一次使用呢 他就给你分配那么长的内存堆栈 不可变长度的
你要给他重新赋值了呢 他是重新开辟了一块内存空间指针指向他
原来的内存空间 会被gc() 垃圾回收掉 这样消耗系统内存
而stringBuffer呢 开辟出来了 长度可变了 你重新赋值了之后还是指向那块内存 只不过长度变了
java string 相加有什么不好
数量大的时候 性能比较差
如:
"a"+"b"
除了new "a"和"b"之外,还会new 一个新的内存空间存放"ab"
少量字符相加看不出什么
当几千甚至上万的字符串相加性能就会比较差了
多字符串相加 用StringBuffer 它的原理是把各字符串连接起来 不会多new 内存空间
java中字符串相加本质到底是怎样的
String s="class"+"java";
操作机制应该是缓冲内存取得内容"class","java",然后存入一个新内存空间
跟原先字符串内存没关系