String x = "abc"和String y = new String("abc")的区别,String和StringBuffer的区别

String x = "abc"和String y = new String("abc")的区别
x变量指向的是常量池中的字符串常量对象,y变量指向的是堆空间中的字符串对象,但堆中字符串对象需要以常量池中字符串常量对象作为模板,所以y其实产生了两个对象,一个在常量池一个在堆中。
例子:
String str1 = "abc";
String str2 = "abc";


String str3 = new String("abc");
String str4 = new String("abc");


System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str3 == str4);


System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
System.out.println(str3.equals(str4));


输出的结果:true  false false true  true  true  




String和StringBuffer的区别
String具有长度不可改变的特性,在字符串对象做添加,删除,替换时不会更改原来的字符串对象,而是产生新
新的字符串
对象
StringBuffer是为了解决String内容不可变而产生的
StringBuffer会在缓冲区中开辟一个空间,当StringBuffer的内容作连接、替换、删除等操作时不会产生新对象。
例子:
String x = "abc";
StringBuffer sb = new StringBuffer("abc");


test(x,sb);
Sysotem.out.println(x+"   "+sb);


private static void test(String  x,StringBuffer sb){
x = x+"***";
sb.append("***");

}


结果:abc   abc***;
因为String改变内容是要产生新对象,而StringBuffer不会 


StringBuffer的效率比String要高,线程安全


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值