问个很很基础问题,关于字符串 String 与 StringBuffer有什么区别。String是常量类,建立有不能修改,是指怎么样不能修改的?StringBuffer可以改变(增长或修改),是怎么修改的?[**现在的发贴,写贴的时候,怎么总是会失去焦点,总要鼠标点一下发贴的文本框?] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如说两个字符串相加的时候。"bei","jing" String是把"bei"和"jing"分别复制到一个新的内存地址中。而StringBuffer是直接把"jing"加在"bei"后面就可以了就是这样的。 String str1 = "aa" ;str1 = "bb";str1 :是一个指针,指向一内存地址,里面存放着"aa". String 不能改变是指这里的"aa"不能改变. 但 str1 是一个指针,他可以指向的别的地方. str1 = "bb"; 是将str1 指向 一个存放着"bb"的内存.当然这里的"bb"也不能改变. 此时,str1 指向"bb",读出来当然也是"bb";但"aa"与"bb"都存在于内存.StringBuffer 是指针不变,改变内存中的内容.String 是不改变内存中的内容,通过改变指针来达到改变变量.java 没有指针是骗人的,到处都是指针好不好... StringBuffer的效率更高 更加节省资源 我的理解,StringBuffer,就像链表一样,所以才可以扩展其空间。这只是一个比喻。 我们在链表里面,对象的联结和扩展,就是通过尾部的指针指向一个新的区域。所以,stringBuffer,在自己空间不够的时候,就自动的扩充自己的空间。但是string就不能这样了。因为,在创建一个string对象的时候,其空间就已经固定了,就是字符串的大小。所以就不能再在需要的时候区扩建其大小。所以,在做字符串的其他的相关操作的时候,系统就只能做新的创建一个字符串对象了。 java不是指针..只是全部是引用而已...String的定义是public final class两个string相加等于是操作了三个内存对象StringBuffer则是在内存中申请了一块空间以后,利用缓存原理里处理数据 String a = "abc"相当于C中a->"abc"这一块地址,当你为a赋值,a='uio'a的地址变为"uio"的地址,而原先保存着"abc"的内容不变,说白了a只是字符串的引用 我的理解是String的定义是内存的常量,而StringBuffer是内存中的一个缓冲区,可以更改内容的地方,在jdk1.5中,和StringBuilder功能类似 MINA粘包消息 处理XML的最好方法 java 多态初始化问题 有人看过RSSOwl的源代码么,请教一个问题 如何在字符串的指定位置插入其他字符 新手上路,问题简单,大家帮忙了!!!!!! java报错求指导 急啊!怎么做这个全屏显示? 接口是否具有类一样的层次结构,可以追溯到源头,像类的object ? @@@@@@ 子类和超类可以放在不同的.java文件中吗?怎样实现? @@@@@ java socket 网络发送和接收文件 (转) 快去找工作(java)了,现在工作的哥哥姐姐们,请说说你们当时找工作的经验。谢谢!散100分。
str1 = "bb";
str1 :是一个指针,指向一内存地址,里面存放着"aa".
String 不能改变是指这里的"aa"不能改变. 但 str1 是一个指针,他可以指向的别的地方.
str1 = "bb"; 是将str1 指向 一个存放着"bb"的内存.当然这里的"bb"也不能改变.
此时,str1 指向"bb",读出来当然也是"bb";但"aa"与"bb"都存在于内存.
StringBuffer 是指针不变,改变内存中的内容.
String 是不改变内存中的内容,通过改变指针来达到改变变量.java 没有指针是骗人的,到处都是指针好不好...
更加节省资源
但是string就不能这样了。因为,在创建一个string对象的时候,其空间就已经固定了,就是字符串的大小。所以就不能再在需要的时候区扩建其大小。所以,在做字符串的其他的相关操作的时候,系统就只能做新的创建一个字符串对象了。
String的定义是public final class
两个string相加等于是操作了三个内存对象
StringBuffer则是在内存中申请了一块空间以后,利用缓存原理里处理数据