黑马程序员技术交流社区
标题:
java.lang.String类的问题
[打印本页]
作者:
刘晓康
时间:
2012-4-5 20:18
标题:
java.lang.String类的问题
JDK文档中说,String变量的内容是不可改的,那么为什么我们可以写出以下的语句?
String str="ab";
str+="cd"; //这里难道不是修改了str变量的内容吗?
System.out.println(str);//输出:abcd
作者:
秦岩
时间:
2012-4-5 20:22
str += "cd"; 不是改变了String变量的内容 而是 把两个字符串加在一起。。 字符串是可以相加的 比如:System.out.println("ab" + "cd");输出的结果就是 "abcd"。
作者:
宋蕈
时间:
2012-4-5 20:25
String 长度不可变
StringBuffer长度可变
String相加 原来的不变
可变不可变的意思是说
你新建一个String型的 你第一次使用呢 他就给你分配那么长的内存堆栈 不可变长度的
你要给他重新赋值了呢 他是重新开辟了一块内存空间指针指向他
原来的内存空间 会被gc() 垃圾回收掉 这样消耗系统内存
作者:
江远云
时间:
2012-4-5 20:30
String str="ab"; //str变量引用指向ab
str+="cd"; //这里难道不是修改了str变量的内容吗? // str变量引用指向abcd ,ab的值并没有改变,只是str的引用指向了另外的字符串。
System.out.println(str);//输出:abcd
作者:
武庆东
时间:
2012-4-5 20:32
String内容不可以更改,一个String对象内容的改变实际上是通过内存地址的“断开-连接”完成的,而本身没有任何变化!
String str="ab";//假定此时存放“ab”地址为A
str+="cd";//此时存放的地址发生改变,内容变为“abcd”,地址为B
对象是str,没有改变!改变的是str指向的内容!
这里讲到数据在内存的保存形式:
1、栈内存空间:保存对象的名称;
2、堆内存空间:保存对象的属性;
作者:
陈扬
时间:
2012-4-5 21:58
在JDK文档中有:Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。
字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。
作者:
niceBoy
时间:
2012-4-5 22:17
str+="cd";并不是在ab字符串后加上cd,而是让str名称引用自新的abcd字符串对象。
在java中,使用+串联字符串会产生一个新的字符串
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2