(转)string和stringbuffer区别
来源:互联网 发布:中华抢红包软件好用吗 编辑:程序博客网 时间:2024/05/18 20:09
string和stringbuffer区别
这是好友面试的一道题,其实我知道使用的区别,StringBuffer必须new出来,StringBuffer的append的效率比string的+=的效率高,
其实发现还有很大的区别,看了看以前scjp的考题
public class Test {
public static void stringReplace (String text) {
text = text.replace('j' , 'i');
}
public static void bufferReplace (StringBuffer text) {
text = text.append("C");
}
public static void main (String args[]) {
String textString = new String ("java");
StringBuffer textBuffer = new StringBuffer ("java");
stringReplace (textString);
bufferReplace (textBuffer);
System.out.println (textString + textBuffer);
}
}
答案是 javajavaC
这是Java参数传递(by value)造成的
而题目中第七行text = text.append (“C”),append方法会改变text中的值
而这个text与main中的textBuffer是指向同一个对象,所以对应的输出是javac。
string的值永远不会改变!
String a = "a";//假设a指向地址0x0001,
a = "b";//重新负值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的。
从表面上看String类型的对象改变了值,但事实是他不能改变值,只能改变指向的地址
StringBuffer则不同,直接改变指向的地址中保留的值
还有
StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
s1.equals(s2)//为什么是false
String s1 = new String("a");
String s2 = new String("a");
s1.equals(s2)//为什么是true
StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
而Object类中的equals方法是用来比较地址的,所以等于false.
String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以会是
true。
对于这样能不能面试出真正的水平,感到怀疑。
- (转)string和stringbuffer区别
- (转)string和stringbuffer区别
- string和stringbuffer区别
- string和stringBuffer区别
- string和stringbuffer区别
- String和StringBuffer区别
- string和stringbuffer区别
- String 和StringBuffer区别
- String和Stringbuffer区别
- String 和 StringBuffer区别
- String和StringBuffer区别
- string和stringbuffer区别
- String 和StringBuffer区别
- String和StringBuffer区别
- String 和 StringBuffer区别
- String 和 StringBuffer区别
- StringBuffer和String区别
- String和StringBuffer区别。
- 最详细的Cisco mib
- 电子钱包、电子现金与qPBOC
- Community Server 2.0 Now Available!
- Android开发之旅:环境搭建及HelloWorld
- awk rand函数问题
- (转)string和stringbuffer区别
- ms 的FOR SQL 2000的JDBC的BUG
- 推荐个AJAX的好站
- java.io.CharConversionException: isHexDigit
- ruby中类变量,实例变量,属性区别(之前一直弄混淆了,转载一篇感觉还可以的)
- YAHOO推出的PHP开发中心
- PHP 开发工具
- C++ string 的 trim 函数
- Java中的String数据类型归纳