【String、StringBuilder、StringBuffer】

文章详细介绍了Java中String、StringBuilder和StringBuffer类的使用,包括创建方法、常见操作以及性能对比。String是不可变的,适合常量存储;StringBuilder和StringBuffer是可变的,后者在多线程环境下更安全,但在单线程中StringBuilder效率更高。
摘要由CSDN通过智能技术生成

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

常用类字符串:
String、StringBuilder、StringBuffer


一、String

表示字符串,最常用,是常量; 它们的值在创建后无法更改;属于final类创建后无法被继承,byte字节数组来保存字符串。

1.1、如何创建

1.“ ”中直接通过字符串常量方式构建,存放在字符串常量池中。通过new String(实参),创建String对象存放在堆内存中。

代码如下:

//创建字符串对象
        String s1=new String("我在堆内存中");
        System.out.println(s1);
        String s2="我在常量池中";
        System.out.println(s2);

2.String(char[] value)用一个字符数组创建String对象

代码如下(示例):

char[] chars = {'a','b','c','d'};
        String str1 = new String(chars);
        System.out.println(str1);

2.String(char[] value, int offset, int count) 分配一个新的String ,其中包含来自字符数组参数的子数组的字符。

 String str2 = new String(chars,0,2);
           System.out.println(str2); //a

3.String(char[] value)通过使用平台的默认字符集解码指定的字节数组来构造一个新的String,并输出新字符数组信息。

byte[] bytes={4,8,6,9};
       String st2 = new String(bytes);
       System.out.println(Arrays.toString(bytes));

4.String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子数组来构造一个新的String。

       String st3=new String(bytes,0,2,"gbk");
       System.out.println(s7);

5.compareTo(String anotherString) 按字典顺序比较两个字符串。

String str1="absksdfd";
String str2="Absksdfd";
System.out.println(str1.compareTo(str2));//a=97>A=65--->32

6.compareToIgnoreCase(String str) 忽略大小写

 System.out.println(str1.compareToIgnoreCase(str2));

7.contentEquals(CharSequence cs) 将此字符串与指定的CharSequence进行比较。

System.out.println(str1.contentEquals(str2));

8.charAt(int index) 返回指定索引处的char值。

 System.out.println(str1.charAt(0));

9.concat(String str) 将指定的字符串连接到此字符串的末尾。

System.out.println(str1.concat(str2)); 

二、StringBuffer和StringBuilder

StringBuffer 类与 StringBuilder 是可变字符串类,创建 StringBuffer
与StringBuilder 类的对象后可以随意修改字符串的内容。

2.1如何创建

1.StringBuilder() 构造一个没有字符且初始容量为 16 个字符的字符串构建器。

       System.out.println(s1);
       System.out.println(s1.length());
       System.out.println(s1.capacity());

2. StringBuilder(int capacity) 构造一个字符串构建器,初始容量由capacity参数指定。

     System.out.println(s2);
     System.out.println(s2.capacity());
     System.out.println(s2.length());

3. StringBuilder(String str) 构造一个初始化为指定字符串内容的字符串构建器。

     System.out.println(s3);
     System.out.println(s3.capacity());
     System.out.println(s3.length());

4.StringBuilder delete(int start, int end) 删除此序列的子字符串中的字符。

	System.out.println(s1.delete(1,3));

5.StringBuilder insert(int offset, String str) 将字符串插入此字符序列。

 System.out.println(s1.insert(2,true));

三.分析比较:

3.1执行效率:

StringBuilder > StringBuffer > String

String : 不可变的字符序列
StringBuilder : 可变的字符序列,线程不安全不同步,相对效率较高–>常用
StringBuffer : 可变的字符序列,线程安全|同步的,相对效率较低

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值