请问string类和stringbuffer有什么区别? 好像没有什么区别如果发送很多字符的话StringBuffer效率高一些。说得不知道对不对:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果需要动态扩展,用StringBuffer,它提供append方法,而String 是没有的 有区别,String是定长的一旦定义,长度就不能改变。而stringbuffer是不定长的,可以通过append等进行操作,你要想改变string的长度,只能通过重新复制,相当于把string指向了新的地址空间。而stringbuffer 都是在同一地址空间操作。 他们的区别是很大的,它们是两个独立的类,可以这么说吧,除了名字有些相似,完全不相干.String类是不可改变的,如果你更改了String类的实例,那么以前的就“不存在了”,所指向的是一个新的实例。而StringBuffer类是可以更改的。 看如下例子,体会这一点: String s1="Hello"; String s2="Hello"; if(s1==s2) System.out.println("Equal"); else System.out.println("Not equla"); 这个程序片断将输出Equal,原因是String类的实例是不能更改的.在生成第2个实例时它发现在缓冲池中已经有了"Hello"字符串,于是它就直接索引到这个字符串. 然而如果,你将第二行代码改为: String s2 = new String("Hello");再运行结果将是Not equal,因为更换了一个构造器形式,在生成第二个实例时,它就不在缓冲池中索引了,而是直接在内存中构造这样一个对象.因此,其句柄的值是不同的. 也就是说,当你更改了String类的实例,那么其句柄索引的将是在Heap Memory的另外一个位置的对象,以前的就不能再索引到了. 但是,StringBuffer类却不是如此,如果你更改了它的实例,但是在Heap Memory的缓冲池中,索引的是同一个实例.即更改了实例,但句柄的只是不变的,它是可以更改的! 两者都是对字符串进行操作的String类是基本的字符串类,只能用来处理简单的字符串StringBuffer类可以动态的进行扩展好像在处理上,对于String类,一旦创建了实例,系统就分配内存空间StringBuffer类可以不分配内存空间,在程序执行的时候再根据需要分配 java泛型如何得到T的class ext.ajax.request的问题 基础问题 请问什么是方法签名? 一个类含有多个jdbc操作的问题? Runtime.getRuntime().exec如果执行的".bat"有错误,那么就死了,如何解决?(在线) 关于读取.properties文件中的中文字符问题, 如何得到一个字符的Unicode编码 在ORACLE816中,插入VARCHAR2类型数据的怪问题... 如何通过javascript把IE的窗口中的菜单条,url栏,联接栏,状态栏全部隐藏 请问这个程序怎么修改呀? java 如何使用编写好的Oracle pl/sql程序
你要想改变string的长度,只能通过重新复制,相当于把string指向了新的地址空间。而stringbuffer 都是在同一地址空间操作。
看如下例子,体会这一点:
String s1="Hello";
String s2="Hello";
if(s1==s2)
System.out.println("Equal");
else
System.out.println("Not equla");
这个程序片断将输出Equal,原因是String类的实例是不能更改的.在生成第2个实例时它发现在缓冲池中已经有了"Hello"字符串,于是它就直接索引到这个字符串.
然而如果,你将第二行代码改为:
String s2 = new String("Hello");
再运行结果将是Not equal,因为更换了一个构造器形式,在生成第二个实例时,它就不在缓冲池中索引了,而是直接在内存中构造这样一个对象.因此,其句柄的值是不同的.
也就是说,当你更改了String类的实例,那么其句柄索引的将是在Heap Memory的另外一个位置的对象,以前的就不能再索引到了.
但是,StringBuffer类却不是如此,如果你更改了它的实例,但是在Heap Memory的缓冲池中,索引的是同一个实例.即更改了实例,但句柄的只是不变的,它是可以更改的!
String类是基本的字符串类,只能用来处理简单的字符串
StringBuffer类可以动态的进行扩展好像在处理上,对于String类,一旦创建了实例,系统就分配内存空间
StringBuffer类可以不分配内存空间,在程序执行的时候再根据需要分配