Stirng-Stringbuild-Stringbuffer区别
来源:互联网 发布:牙签弩淘宝 编辑:程序博客网 时间:2024/05/24 05:13
1.String 先来看一段代码
public class StringTest { @org.junit.Test public void fun(){ String a="123"; String a1="123"; String b=new String("123"); String c= new String("123"); System.out.println(a==b);//false System.out.println(a.equals(b));//true System.out.println(c.equals(b));//true System.out.println(c==b);//false System.out.println(a==a1);//true }}
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
==比较的是2个对象的地址,而equals比较的是2个对象的内容。
那么为什么 a==a1 会为true呢?在这里其实a和a1是统一个对象,看String的源码、可以看到类是final的,内部其实也是一个final的char数组,所以String对象不能改变他的值,
String a=“123”,其实是定义了一个字符串常量,String a1=“123”,会把这个常来拿过来接着用,对String对象进行 + 操作时,也是重新生成的字符创常量,
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[];2.StringBuffer 和StringBuild
StringBuffer 和StringBuil都继承自抽象类 AbstractStringBuilder 他的内部同样是一个char数组,并且是可变的,所以在做大量字符串连接操作时,比String效率会更高
而两者的区别就是Stringbuffer的方法都加了synchronized关键字,它是线程安全的,相对与Stringbuild来说效率就低一点,Stringbuild适合在对多线程没有要求的情况下
使用,一般我们都是使用Stringbuild
阅读全文
1 0
- Stirng-Stringbuild-Stringbuffer区别
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- Stirng,Stringbuffer,Stringbuild的区别浅淡
- String,StringBuffer,StringBuild区别
- String,StringBuffer,StringBuild 区别
- String ,StringBuffer ,StringBuild 区别
- String,StringBuffer,StringBuild的区别
- String,StringBuffer,StringBuild的区别
- StringBuffer 和StringBuild的区别
- String,StringBuffer,StringBuild的区别
- String,StringBuffer,StringBuild的区别
- String,StringBuffer和StringBuild 区别
- String,StringBuffer和StringBuild 区别
- String,StringBuffer,StringBuild的区别
- String,StringBuffer和StringBuild 区别
- String,StringBuffer,StringBuild的区别
- String,StringBuffer,StringBuild的区别
- mvc框架
- 剑指offer 10----计算一个整数二进制位中1的个数
- 大数除法之估商法
- [mooc]python网络爬虫与信息提取(实例一)
- stm32时钟配置
- Stirng-Stringbuild-Stringbuffer区别
- hdu 5556 Land of Farms
- 第三章:3.9 引用Django 认证登陆
- [GNU/Linux] Linux系统调用-文件操作(一)
- 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
- C++ 向量vector和模板的应用
- Suse11开启SSH密码登录
- spring中工厂模式和单例模式