本文目录一览:
- 1、java中,两个String类型的字符串相加得到一个新的字符串,请问原来的字符串是否改变,为什么?
- 2、java string 相加有什么不好
- 3、java中字符串相加本质到底是怎样的
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",然后存入一个新内存空间
跟原先字符串内存没关系