String、StringBuffer、StringBuilder

String类的特点:

1, java语言中用于描述最常见的字符串数据的对象。

2, 字符串数据都是一个对象

3, 字符串数据一旦初始化就不可以被改变了。双引号表示的都是字符串常量。

4, 字符串对象都存储在常量池中。字符串常量池。

String s1=”abcd”;//这时在常量池中创建了一个字符串对象。

String s2=new String(“abcd”);//这是在堆内存创建一个String类的对象。并在常量池创建了

//“abcd对象”

对于字符串对象的比较,应该用equals方法完成。

基本数据用==进行比较相同。对象比较相同都用equals方法。

S1.equals(s2);//true String类覆盖了Object中的equals方法,比较的是字符串内容是否相同。

String s3=”ab”+”cd”;

S1==s3//true

字符串缓冲区StringBuffer

特点:

1, 缓冲区就是用来缓存数据,意味着它是一个容器。

2, 该容器的长度是可变的

3, 提供了对容器中内容的操作方法(最多无外乎四种:增删该查)

4, 缓冲区中可以添加多种类型的元素,基本类型和引用类型

5, 无论怎么样的改变容器中的数据,最终要使用结果,还是必须要将其转成字符串,使用toString方法

append():追加:在结尾处添加

StringBuilder含义:

Jdk1.5版本出现了一个新的字符串缓冲区

功能和StringBuffer一模一样

 

StringBuffer是线程安全的

StringBuilder是线程不安全的。为了提高效率。因为不用判断同步锁

对于容器,被多线程操作,容器出现安全问题。因为一个线程负责添加,一个线程负责删除,因为线程的随机性就会出现安全问题

 

加锁。一个线程在执行容器中的内容时,其他线程不可以执行,所以凡是可以操作容器数据的方法,都需要明确这个锁。每调用一次操作容器的方法(添加,删除)都需要判断这个锁。

对于多线程而言,安全了,但是效率低

对已单线程而言,不涉及安全,但是效率低。所以,对于线程提供了StringBuilder。不需要同步的缓冲区。

实际开发时,建议使用StringBuilder,只有在多线程时,才用StringBuffer

升级:

1, 简化书写

2, 提高效率

3, 提高安全性

 

StringBuffer和数组容器的区别

1,

数组容器固定长度

StringBuffer是可变长度

2,

数组容器一旦初始化就明确了元素的类型

StringBuffer可以存储任意类型。包括基本和引用

3,

数组存储完元素可以对元素进行操作(通过角标)

StringBuffer存储完元素后,都会变成字符,只能用字符串的方法来操作。

 

什么时候用StringBuffer或者StringBuilder?

数据个数可以是固定的,可是是不固定的,数据类型也可以是固定的,或者不固定的。

只要最终这些数据都需要变成字符串来操作时,就可以使用字符串缓冲区

基本数据类型比较用的是比较运算符

对象的比较用的是compareTo方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值