您的位置:

java中字符串相加发生了什么(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",然后存入一个新内存空间

跟原先字符串内存没关系