专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

String类

String类

String类基础

1、 代表字符串,使用一对“”引起来表示
2、 声明为final类,不可被继承
3、 String实现的接口

 *  Serializable接口:表示字符串是支持序列化的
 *  Comparable接口:表示String可以比较大小

4、 String内部定义了final char[] value用于存储字符串数据
5、 String代表一个不可变的字符序列(不可变性)

 *  通过字面量的方式(区别于new方式)给一个字符串复制,此时的字符串值声明在字符串常量池中
 *  字符串常量池中是不会存储相同内容的字符串的
 *  体现

     *  当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值
     *  当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能在原有的value进行赋值
     *  当调用String.replace()方法修改指定的字符或字符串时,也必须重新指定内存区域赋值

6、 String实例化方式

 *  通过字面量定义的方式
 *  通过new + 构造器的方式

     *  变量保存的是地址值,是数据在堆空间中开辟空间以后对应的地址值

7、 String字符串拼接

 *  常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的常量
 *  只要有一个是变量,结果就在堆中
 *  ⭕如果拼接的结果调用intern()方法,返回值就在常量池中

String类常用方法

1、 s.length():返回字符串的长度

    String s = "abcdefg";//7
    System.out.println(s.length());

2、 s.charAt(int index) :返回某索引处的字符

index属于数组长度范围
    String s = "abcdefg";
    System.out.println(s.charAt(3));//d

3、 s.isEmpty():判断是否是空字符串

    String s = "abcdefg";
    System.out.println(s.isEmpty());//false

4、 s.toLowerCase():将String中的所有字符转换为小写

    String s = "ABCDEFG";
    System.out.println(s.toLowerCase());//abcdefg

5、 s.toUpperCase():将String中的所有字符转换为大写

    String s = "abcdefg";
    System.out.println(s.toUpperCase());//ABCDEFG

6、 s.trim():返回字符串副本,忽略前导空白和尾部空白

    String s = "  ASDF GJ  ";
    System.out.println(s.trim());//ASDF GJ

7、 equals():比较字符串的内容是否相等
8、 s1.equalsIgnoreCase(s2):忽略大小写比较两者是否相等

    String s1 = "asdfg";
    String s2 = "ASDFG";
    System.out.println(s1.equalsIgnoreCase(s2));//true

9、 s1.concat(“s2”):将指定字符串连接到此字符串的结尾,相当于用“+”

    String s1 = "qwert";
    System.out.println(s1.concat("+mnb"));//qwert+mnb

10、 s1.compareTo(s2):比较两个字符串的大小(无论哪种方式建的字符串都可以)

 *  涉及到字符串排序
 *  结果为负数代表前者小
 *  结果为0代表两者相同
    String s1 = "asd";
    String s2 = "cvb";
    System.out.println(s1.compareTo(s2));//-2

11、 String s2 = s16.substring(int index):返回一个新的字符串,它是此字符串从index开始截取到最后一个字符串

    String s1 = "克里斯马殷阁下";
    System.out.println(s1.substring(4));//殷阁下

12、 String s2 = s1.substring(int beginIndex, int endIndex):返回一个新的字符串,它是从beginIndex开始截取到endIndex(不包含)的一个子字符串(左闭右开)

    String s1 = "克里斯马殷阁下";
    System.out.println(s1.substring(0,4));//克里斯马

13、 boolean b = s1.endsWith(String suffix) :测试此字符串是否以指定的后缀结束

    String s = "asdfg";
    System.out.println(s.endsWith("g"));//true

14、 boolean b = s1.startsWith(String suffix):测试此字符串是否以指定的前缀开始

    String s = "asdfg";
    System.out.println(s.startsWith("a"));//true

15、 boolean b = s.startsWith(prefix,toffset):测试此字符串从指定的索引开始的子字符串是否与指定前缀开始

    String s = "asdfg";
    System.out.println(s.startsWith("df", 2));//true

16、 s1.contains(s2):此字符串包含指定的char值序列时,返回true

    String s = "asdfg";
        System.out.println(s.contains("sdf"));//true
        System.out.println(s.contains("sf"));//false

17、 s.indexOf(String str):返回指定子字符串中第一次出现处的索引,不存在出现-1

    String s = "asdfg";
    System.out.println(s.indexOf("d"));//2
    System.out.println(s.indexOf("b"));//-1

18、 s.indexOf(str,fromIndex):返回指定子字符串在此字符串中第一次出现的索引,从fromIndex开始查找

    String s = "asdfgasdfg";
    System.out.println(s.indexOf("d", 5));//7

19、 s.lastIndexOf(String str):返回指定的子字符串在此字符串中最右边出现处的索引(还是从前向后找,返回的索引也是从前往后数的索引)

    String s = "asdfgasdfg";
    System.out.println(s.lastIndexOf("f"));//8

 *  什么情况indexOf(str)和lastIndexOf(str)返回值相同?

     *  str中的元素都只存在一个
     *  不存在str

20、 str.lastIndexOf(str,fromIndex):返回指定的子字符串中最后一次出现处的索引,从指定的索引开始反向搜索(返回的索引值还是从前往后找得到的索引)

    String s = "asdfgasdfg";
    System.out.println(s.lastIndexOf("g", 5));//4

21、 s.replace(oldchar,newchar):返回一个新的字符串,用newchar替换oldchar(替换字符)

    String s = "asdfgasdfg";
    String replace = s.replace("as", "bn");
    System.out.println(replace);//bndfgbndfg

22、 s.replace(target, replacement):返回一个新的字符串,replacement替换target

    String s = "最好的队长殷志源";
    String replace = s.replace("最好的队长", "丸子");
    System.out.println(replace);//丸子殷志源

String与其他类型数据的转换

String与基本数据类型转换

  • String类型—->包装类类型:调用包装类的parseXXX()方法
    String s = "123";
    int i = Integer.parseInt(s);
    System.out.println(i);//123

  • 包装类类型—->String类型:调用String类的valueOf()方法
    double d = 2.6;
    String s = String.valueOf(d);
    System.out.println(s);

String类型与char[]类型转换

  • String类型—->char[]类型:调用String的toCharArray()方法
    String s = "abc";
    char[] c = s.toCharArray();
    System.out.println(Arrays.toString(c));//[a, b, c]

  • char[]类型—->String类型:调用String构造器
    char[] c = new char[]{'a','b','c'};
    String s = new String(c);
    System.out.println(s);//abc

String与byte[]类型转换

  • String类型—->byte[]转换:调用String的getBytes()方法
    • 使用utf-8进行编码
        String s  = "殷志源123";
        byte[] b = s.getBytes();
        System.out.println(Arrays.toString(b));//[-26, -82, -73, -27, -65, -105, -26, -70, -112, 49, 50, 51]

 *  使用gbk字符集进行编码
        String s  = "殷志源123";
        byte[] b = s.getBytes("gbk");
        System.out.println(Arrays.toString(b));//[-46, -13, -42, -66, -44, -76, 49, 50, 51]

> 编码:字符串--->字节(能看的懂转换为看不懂的(计算机底层的二进制数据))

> 解码:字节------->字符串(编码的逆过程)

* byte[]类型—->String类型转换:调用String的构造器

在解码时,要求解码使用的解码集必须与编码时使用的字符集一致,否则会出现乱码
    String s  = "殷志源123";
    byte[] b1 = s.getBytes();
    System.out.println(Arrays.toString(b1));//[-26, -82, -73, -27, -65, -105, -26, -70, -112, 49, 50, 51]
    String s1 = new String(b1);
    System.out.println(s1);//殷志源123

未经允许不得转载:搜云库技术团队 » String类

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们