我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

String、StringBuffer和StringBuilder-创新互联

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

成都创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站设计、网站建设,塑造企业网络形象打造互联网企业效应。

文章目录
  • 1.String类
    • 概述
    • String的特点
    • 构造方法
    • 创建字符串对象两种方式的区别
    • 字符串比较
  • 2.StringBuilder和String相互转换
  • 3.StringBuilder和StringBuffer
  • 它们的异同


1.String类 概述

代表字符串,程序中的带双引号字符串都是String类的对象,其在java.lang包下,所以使用时不用导包。
String适用于少量的字符串操作。

String的特点

字符串不可变,值在创建后不能被更改,创建后这个值会存储在常量池中,虽然它的不可变,但可被共享,也就是说多个对象可以指向同个字符串。而字符串效果上相当于字符数组,char[ ],底层原理上是字节数组byte[ ]。

构造方法

1)直接赋值创建对象,例如 String s = “abb”。
2)根据字符数组或者字节数组内容,来创建对象,例如char [ ] chs = {‘a’, ‘b’, ‘c’};String s = new String(chs);

创建字符串对象两种方式的区别

1)构造方法
通过new创建的字符串对象,每次都会申请一个内存空间,内容相同,地址值不同。

2)直接赋值
以双引号形式给出的字符串,只要字符的顺序和大小写不变,无论出现几次,都只会建立一个String对象,并在字符串池中维护。

字符串比较

1)==的作用。基本数据类型:具体的值;引用数据类型:对象地址值。
2)equals方法的作用。比较两个字符串内容是否相同,区分大小写。

2.StringBuilder和String相互转换

1)StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String。
2)String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder

3.StringBuilder和StringBuffer

1)
StringBuilder是一个(内容)可变的字符串类,可看成一个容器。和String相比,它的内容是可变的。
StringBuffer是线程安全的、可变的字符序列。
因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 synchronized 修饰。
2)
StringBuffer、StringBuilder和String类似,底层也是用一个数组来存储字符串的值,并且数组默认长度为16,也就是说一个空的StringBuffer对象的数组长度为16。
创建一个StringBuffer对象也就是创建了一个大小为16个字符的字符串缓冲区。但是​当我们调用有参构造函数创建一个StringBuffer对象时,数组长度就不再是16了,而是根据当前对象的值来决定数组的长度,数组的长度为“当前对象的值的长+16”。所以一个 StringBuffer 创建完成之后,有16个字符的空间可以对其值进行修改。如果修改的值范围超出了16个字符,会先检查StringBuffer对象的原char数组的容量能不能装下新的字符串,如果装不下则会对 char 数组进行扩容。

它们的异同

String、StringBuffer和StringBuilder的异同?
相同点:底层都是通过char数组实现的
不同点:
1)
String对象一旦创建,其值是不能修改的,如果修改,会重新开辟一个内存空间来存储修改之后的对象;而StringBuffer和StringBuilder对象的值是可以被修改的;
2)
StringBuffer,带有synchronized关键字,所以线程比较安全,在多线程系统中可以保证数据同步,而StringBuillder不带有该关键字,所以线程不安全,在多线程系统中不能使用 StringBuilder。
3)
String适用于少量的字符串操作的情况;
StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况;
StringBuffer适用多线程下在字符缓冲区进行大量操作的情况;

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:String、StringBuffer和StringBuilder-创新互联
本文来源:http://shouzuofang.com/article/djeggh.html

其他资讯