String类、StringBuffer、StringBuilder

布满荆棘的人生 2024-03-31 13:35 177阅读 0赞

String类的构造方法:

1.直接构造

  1. String str = "HelloWorld";

2.将字符串封装成字符串对象

  1. String str2 = new String("HelloWorld");

3.将字符数组的数据封装成字符串对象

  1. char[] array = {'H','e','l','l','0','W','o','r','l','d'};
  2. String str3 = new String(array);

4.将字符数组的数据从索引2开始解析2个长度

  1. char[] array2 = {'H','e','l','l','0','W','o','r','l','d'};
  2. String str4 = new String(array2,2,2);
  3. System.out.println(str4);
  4. // 输出结果为 ll

5. 把字节整数型数组按照ASCII码表解析成字符串

  1. byte[] bytes = {97,98,99,100,101,102};// byte取值范围 -128~127 如果超过这个范围则编译错误
  2. String str5 = new String(bytes);
  3. System.out.println(str5);
  4. // 输出结果为 abcdef

6. 对字节整数型数组从索引为2开始解析2个长度

  1. byte[] bytes2 = {97,98,99,100,101,102};
  2. String str6 = new String(bytes2,2,2);
  3. System.out.println(str6);
  4. // 输出结果为 cd

String类的不可变性

  1. public static void main(String[] args) {
  2. String str = "HelloWorld";
  3. String str2 = str;
  4. str = "GoodBye";
  5. System.out.println("str:"+str);
  6. System.out.println("str2:"+str2);
  7. }

输出结果:

4a2e46b96c264cbca2b9b298a9df13c7.png

为什么修改了str的值,str2的值没有一起修改呢?这是因为String是引用数据类型,是不可变的

e7cd8cc1b29f4a1d80103a4446117863.png 2a4bb14b02fb4d1693390dc7310e1436.png

我们通过修改str=“GoodBye”,只是在字符串池中新建了一个“GoodBye”,并且将str的栈内存地址修改所对应的地址,而str2的地址还是不变的


String类的方法摘要:

返回指定索引处的 char 值 。

  1. String str = "HelloWorld";
  2. System.out.println(str.charAt(0));
  3. // 输出结果 H

返回指定索引处的字符(Unicode 代码点)。

  1. String str = "HelloWorld";
  2. System.out.println(str.codePointAt(3));
  3. // 输出结果为 108,输出下标为 3 的字母 l 所对应的Unicode编码 为108(十进制)

返回指定索引之前的字符(Unicode 代码点)。

  1. String str = "HelloWorld";
  2. System.out.println(str.codePointBefore(2));
  3. // 输出结果为 101,输出下标为 2 的字母 l 之前的字母 e 所对应的Unicode编码 为101(十进制)

将指定字符串连接到此字符串的结尾。

  1. String str = "Hello";
  2. System.out.println(str.concat("World"));
  3. // 输出结果为 HelloWorld

当且仅当此字符串包含指定的 char 值序列时,返回 true。

  1. String str = "Hello";
  2. System.out.println(str.contains("Hell"));
  3. System.out.println(str.contains("World"));
  4. // 输出结果为 第一个是 true 第二个是 false

返回指定字符在此字符串中第一次出现处的索引。

  1. String str = "Hello";
  2. System.out.println(str.indexOf("l"));
  3. // 输出结果为 2

判断字符串是否为空(空则返回true,反之返回false)。

  1. String str = "HelloWorld";
  2. String str2 = "";
  3. System.out.println(str.isEmpty());
  4. System.out.println(str2.isEmpty());
  5. // 输出结果为 false 、 true

返回指定字符在此字符串中最后一次出现处的索引。

  1. String str = "HelloWorld";
  2. System.out.println(str.lastIndexOf("l"));
  3. // 输出结果为 8

返回此字符串的长度。

  1. String str = "HelloWorld";
  2. System.out.println(str.length());
  3. // 输出结果为 10

使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

  1. String str = "HelloWorld";
  2. System.out.println(str.replace("World","世界"));
  3. // 输出结果为 Hello世界

根据关键字拆分字符串。

  1. String str = "HelloWorld";
  2. String[] str2 = str.split("l");
  3. for(String s :str2){
  4. System.out.println(s);
  5. }
  6. // 输出结果为 He oWor d

返回一个新的字符串,它是此字符串的一个子字符串。

  1. String str = "HelloWorld";
  2. System.out.println(str.substring(5));
  3. // 输出结果为 World

将此字符串转换为一个新的字符数组。

  1. String str = "HelloWorld";
  2. char[] chars = str.toCharArray();
  3. for (char aChar : chars) {
  4. System.out.println(aChar);
  5. }
  6. // 输出结果为 H、e、l、l、o、W、o、r、l、d

使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

  1. String str = "HelloWorld";
  2. System.out.println(str.toLowerCase());
  3. // 输出结果为 helloworld

使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

  1. String str = "HelloWorld";
  2. System.out.println(str.toUpperCase());
  3. // 输出结果为 HELLOWORLD

返回字符串的副本,忽略前导空白和尾部空白。

  1. String str = " He lloWorld ";
  2. System.out.println(str.trim());
  3. // 输出结果为 He lloWorld

StringBuffer和StringBuilder

StringBuffer和StringBuilder的方法基本上相同

区别:

StringBuffer线程安全

StringBuilder线程不安全

StringBuilder:

  1. StringBuilder sb=new StringBuilder();
  2. //添加内容到容器尾部
  3. sb.append("aaaaa");
  4. //删除第一个到第二个的元素
  5. sb.delete(1,2);
  6. //插入元素到指定位置
  7. sb.insert(2,"bbb");
  8. //删除指定位置的元素
  9. sb.deleteCharAt(2);
  10. //替换指定位置的元素
  11. sb.replace(1,3,"ccc");
  12. //反转内容
  13. sb.reverse();
  14. //截取内容返回一个字符串
  15. System.out.println(sb.substring(1));
  16. sb.append("weweraereasearaerwarsa");
  17. //获取string buffer的长度
  18. System.out.println(sb.length());
  19. //将stringbuffer转成string对象
  20. String sb1 = sb.toString();
  21. System.out.println(sb);

StringBuffer:

  1. StringBuffer sb = new StringBuffer("aaa");
  2. //添加内容到容器尾部
  3. sb.append("aaaaa");
  4. //删除第一个到第二个的元素
  5. sb.delete(1,2);
  6. //插入元素到指定位置
  7. sb.insert(2,"bbb");
  8. //删除指定位置的元素
  9. sb.deleteCharAt(2);
  10. //替换指定位置的元素
  11. sb.replace(1,3,"ccc");
  12. //反转内容
  13. sb.reverse();
  14. //截取内容返回一个字符串
  15. System.out.println(sb.substring(1));
  16. sb.append("weweraereasearaerwarsa");
  17. //获取string buffer的长度
  18. System.out.println(sb.length());
  19. //将stringbuffer转成string对象
  20. String sb1 = sb.toString();
  21. System.out.println(sb);

发表评论

表情:
评论列表 (有 0 条评论,177人围观)

还没有评论,来说两句吧...

相关阅读

    相关 String

    一.String类中的常用方法 ![0872b1c32d0c40d2b4698952336c2079.png][] ![02b43123012c4debbf021aad33

    相关 String

    一、概述 1、修饰存放字符序列的变量的【是表现字符序列的一种形式】【描述字符序列的集合体】 2、所有的字符串常量都是String类的对象 3、所有的字符串常量jvm提

    相关 String

    String类 概念:多个字符组成的字符序列,也可以理解为字符数组。 字符串特点: 1.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。

    相关 String

    所在包 java.lang 介绍 String类代表字符串。 因为String对象是不可变的,它们可以被共享。 String类包括用于检查序列的各个字符的