JAVA基础 - String,StringBuilder,StringBuffer

String

String(出现在JDK1.0时代)      被final修饰,不可被继承,不可变字符序列

String:适用于少量的字符串操作的情况

String 属于不可变类,即一旦String对象被创建以后,对象中的字符序列是不可改变的,直至这个对象被销毁

String a  = "12345";
a = "234567890";
System.out.println(a);   //输出为234567890

上面实例中a的值好像被改变了,其实是a指向了新的字符串对象, “12345”这个对象并没有被改变,如果没有被再次引用,则会被垃圾回收

String实例化有两种方式:

方式1:String a  = "12345"; 

//通过字面量方式为字符串赋值,此时的字符串存储在方法区的字符串常量池

方式2:String a = new String("12345");
//通过new+构造器方式实例化字符串,字符串对象存储在堆中,但是字符串的值仍然存储在方法区的常量池

StringBuffer

StringBuffer(出现在JDK1.0时代)    线程安全的可变字符序列

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer类中的方法都添加了synchronized关键字,保证线程安全

StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变字符串对象的字符序列,不会产生新的对象

StringBuffer stringBuffer = new StringBuffer("abcde");
stringBuffer.append("fgh");
System.out.println(stringBuffer); //输出abcdefgh

StringBuffer生成的字符串,可以调用toString()方法将其转换为一个String对象 

StringBuilder

StringBuilder(出现在JDK1.5时代)   非线程安全的可变字符序列 

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuilder使用方法和StringBuffer基本一样

StringBuilder stringBuilder = new StringBuilder("abcde");
stringBuilder.append("fgh");
System.out.println(stringBuilder);  //输出abcdefgh

StringBuilder是1.5新引入的,其前身就是StringBuffer。StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder作为首选

线程安全性方面,StringBuffer允许多线程进行字符操作,因为在源代码中StringBuffer的很多方法都被关键字synchronized 修饰了,而StringBuilder没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值