字符串类型的拼接——java数据类型(三)

前言

Java中字符串类型的声明包括String、StringBuffer、StringBuilder,这三种字符串类型各有特点,在使用时根据其特点使用。

String类型

String类型是程序员最常用的类型,每个字符串是一种对象。创建对象我们可以使用构造函数创建,如:

String str = new String"abc";

此时创建一个全新的对象,不会使用字符串池中对象。
我们常用方式是下面方式,这种方式和并非是基本数据类型的赋值,而是创建一个新的对象,等同于使用构造函数创建对象的方式,不同的是在创建对象前会在字符串池中找“abc”这个对象是否存在,如果存在复用这个对象

String str ="abc";

String使用final修饰类,一旦创建完成则不允许修改。换句话说String的值是不可变的,这就导致每次对String的操作都会生成新的String对象。如:

String str = "abc";
Str = str +"d";

这个过程是需要重新在栈堆内存中开辟内存空间的,最终得到了“abcd”字符串也相应的需要开辟内存空间。

StringBuffer 和 StringBuilder

和 String 类不同的是StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的使用对象。如:

StringBuilder  aa = new StringBuffer(“abc”);
aa.append(“d”)

无需开辟新的内存空间。StringBuffer和StringBuilder功能相同,不同的StringBuffer线程安全,但效率低,一般用于多线程。而StringBuilder线程不安全,但效率高。

三种字符串类型使用场景

如果要操作少量的数据(也就是字符串很短,而且变化少
)用 String;字符串很长,如字符串代表一篇文章或一部小说(修改一个标点符号,内存里再产生一个新的对象,不划算),此时用StringBuffer或StringBuilder,多线程下使用StringBuffer,单线程操作字符串缓冲区下操作大量数据 StringBuilder。

字符串的拼接

当字符串使用String时,拼接使用+;如:

String str="abc";
str ="hello"+str+"okkk";

实际上执行时转换为以下代码

(new StringBuilder("hello")).append(str).append("okkk").toString();

使用"+"进行拼接时有很好的可读性,对于单个字符串的拼接时,性能和使用append差不多。但如果结构比较复杂,如使用循环来连接字符串,就不如使用StringBuilder。如:

String str="abc";
for(int i=0;i<10;i++){
   str = str + i;
}

使用“+”需要创建10个StringBuilder对象。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值