Java学习笔记——String类

目录

一、String 的创建

二、转换

三、比较

四、查找

五、替换

六、其他

七、代码


字符串广泛应用在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。下面介绍String类的构建以及常见方法。

一、String 的创建

  • String s = “xxx”
  • String("xxx")
  • String(char数组)
  • String(char数组,起始下标,长度)
  • String(byte数组)
  • String(byte数组,起始下标,长度)

代码实例1

/* 创建 */
String s1 = "Hello, Jack!";  // Hello, Jack!
String s2 = new String("Hello, Jack!");  // Hello, Jack!
char[] c = {'H', 'e', 'l', 'l', 'o', ',', 'J', 'a', 'c', 'k', '!'};
String s3 = new String(c);  // Hello, Jack!
String s4 = new String(c, 6, 4);  // Jack
byte[] b = {1, 2, 3, 4};
String s5 = new String(b);  // 1234
String s6 = new String(b, 1, 2);  // 23

二、转换

  • toCharArray():字符串 --> char数组
  • toLowerCase():字符串转小写
  • toUpperCase():字符串转大写
  • getBytes():字符串 --> byte数组

代码实例2

/* 转换 */
String s7 = new String("Hello, Jack!"); // Hello, Jack!

// toCharArray():字符串 --> char数组
Object ob1 = s7.toCharArray(); // {H, e, l, l, o, ,, , J, a, c, k, !}
System.out.println("\"Hello, Jack!\"转换为 char数组: " + ob1);

// toLowerCase():字符串转小写
Object ob2 = s7.toLowerCase();  // hello, jack!
System.out.println("\"Hello, Jack!\"转换为 小写: " + ob2);

// toUpperCase():字符串转大写
Object ob3 = s7.toUpperCase(); // HELLO, JACK!
System.out.println("\"Hello, Jack!\"转换为 大写: " + ob3);

// getBytes():字符串 --> byte数组
Object ob4 = s7.getBytes();  // {72, 101, 108, 108, 111, 44, 32, 74, 97, 107,  33}
System.out.println("\"Hello, Jack!\"转换为 byte数组: " + ob4);

三、比较

  • equals():比较两个对象的内容是否相等
  • equalsIgnoreCase(String anotherString):忽略大小写判断两个串是否相等
  • compareTo(String anotherString):按字典顺序比较两个字符串
  • compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写

代码实例3

/* 比较 */
// equals():比较两个对象的内容是否相等
String s8 = new String("abc");
String s9 = new String("Abc");
String s10 = new String("abc");

Object ob5 = (s8 == s9);  // false. s8和s9的内容和地址都不相同
Object ob6 = (s8 == s10); // false. s8和s10的地址不相同
Object ob7 = s8.equals(s9);  // false. s8和s9内容不相同
Object ob8 = s8.equals(s10);  // true. s8和s10内容相同

System.out.println("s8\"abc\"和s9\"Abc\" == : " + ob5);
System.out.println("s8\"abc\"和s10\"Abc\" == : " + ob6);
System.out.println("s8\"abc\"和s9\"Abc\" equals() : " + ob7);
System.out.println("s8\"abc\"和s10\"Abc\" equals() : " + ob8);

// equalsIgnoreCase():忽略大小写判断两个串是否相等
System.out.println("s8\"abc\"和s9\"Abc\" equalsIgnoreCase() : " + s8.equalsIgnoreCase(s9));  // true. 忽略大小写,abc 和 Abc相同

// compareTo():按字典顺序比较两个字符串
String s11 = new String("Abc");
String s12 = new String("aaa");
System.out.println("Abc 和 aaa compareTo(): " + s11.compareTo(s12));  // -32 s11:Abc s12:abc 第一个不相等的字符是A a

// compareToIgnoreCase():按字典顺序比较两个字符串,不考虑大小写
System.out.println("Abc 和 aaa compareToIgnoreCase(): " + s11.compareToIgnoreCase(s12));  // 1 s11:Abc s12:abc 忽略大小写,第一个不相等的字符b a

输出结果3

四、查找

  • contains(CharSequence s):判断字符串中是否包含某个字符或字符串
  • charAt(int index):返回指定位置的字符
  • indexOf(String str):返回str在字符串第一次出现的位置;若存在,返回索引;否则,返回-1;可查找字符字符串Unicode编码在字符串中的索引。
  • lastIndexOf(String str):返回str最后一次出现的位置;若存在,返回索引;否则,返回-1;可查找字符字符串Unicode编码在字符串中的索引。
  • startsWith(String prefix):判断字符串是否以prefix开始
  • endsWith(String suffix):判断字符串是否以suffix结尾

代码实例4

/* 查找 */
String str1 = "I love Java!";

// contains():判断字符串中是否包含某个字符或字符串
System.out.println("字符串\"I love Java!\"中是否包含\"love\": " + str1.contains("love"));
System.out.println("字符串\"I love Java!\"中是否包含\"python\": " + str1.contains("python"));
System.out.println("字符串\"I love Java!\"中是否包含\"J\": " + str1.contains("J"));
System.out.println("字符串\"I love Java!\"中是否包含\"P\": " + str1.contains("P"));

// charAt():返回指定位置的字符
System.out.println("字符串\"I love Java!\"中index = 2的字符: " + str1.charAt(2));  // l

// indexOf():返回str在字符串第一次出现的位置
// 字符
System.out.println("o在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("o"));  // 3
System.out.println("P在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("P"));  // -1 不存在

// 字符串
System.out.println("love在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("love"));  // 2
System.out.println("Python在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("Python"));  // -1

// Unicode编码
System.out.println("97在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf(97));  // 8  ASCII中的a是97
System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a"));  // 8

// 从某一位置后继续查找
System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a"));  // 8
System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a", 9));  // 10. 从第9个位置开始查询a,即从字符串va!后查询a

// lastIndexOf():返回str在字符串最后一次出现的位置
// 字符
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10
System.out.println("P在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("P"));  // -1 不存在

// 字符串
System.out.println("love在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("love"));  // 2
System.out.println("Python在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("Python"));  // -1

// Unicode编码
System.out.println("97在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf(97));  // 10  ASCII中的a是97
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10

// 从某一位置后继续查找
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 7));  // -1. 从0到第7个位置开始查询a,即从字符串I love J后查询a
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 8));  // 8. 从0到第8个位置开始查询a,即从字符串I love Ja后查询a
System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 11));  // 10. 从0到第11个位置开始查询a,即从字符串I love Java后查询a

// startsWith():判断字符串是否以prefix开始
System.out.println("字符串\"I love Java!\"是否以I love开头: " + str1.startsWith("I love"));  // true
System.out.println("字符串\"I love Java!\"是否以Java开头: " + str1.startsWith("Java"));  // false

// endsWith():判断字符串是否以suffix结尾
System.out.println("字符串\"I love Java!\"是否以I love结尾: " + str1.startsWith("I love"));  // true
System.out.println("字符串\"I love Java!\"是否以Java!结尾: " + str1.startsWith("Java!"));  // false

输出结果4 

五、替换

  • replace():新字符替换旧字符,替换所有出现的字符,但不支持正则表达式
  • replaceAll():支持正则表达式,替换所有出现的字符
  • replaceFirst():支持正则表达式,仅替换第一次出现的字符

代码实例5

/* 替换 */
String str2 = "abaac332dda456efF";

System.out.println(str2.replace("a", "A"));
System.out.println(str2.replaceAll("a", "A"));
System.out.println(str2.replaceAll("\\d", "*"));
System.out.println(str2.replaceFirst("a", "A"));
System.out.println(str2.replaceFirst("\\d", "*"));

输出结果5 

六、其他

  • trim():去除字符串两边空格
  • concat(String str):将指定字符串连接到此字符串的结尾
  • length():字符串长度
  • isEmpty():字符串是否为空
  • substring(int beginIndex):从beginIndex开始截取字串
  • split(String regex):将字符串以regex分割

代码实例6

/* 其他 */
String str3 = "  Java and Python  ";
String str4 = "I love";
String str5 = "";
String str6 = " ";

// trim():去除字符串两边空格
System.out.println(str3.trim());

// concat(String str):将指定字符串连接到此字符串的结尾
System.out.println(str4.concat(str3));

// length():字符串长度
System.out.println(str3.length());

// isEmpty():字符串是否为空
System.out.println("\"  Java and Python  \"是否为空: " + str3.isEmpty());  // false
System.out.println("\"\"是否为空: " + str5.isEmpty());  // true
System.out.println("\" \"是否为空: " + str6.isEmpty());  // false

// substring(int beginIndex):从beginIndex开始截取字串
System.out.println(str4.substring(2)); // 从索引2开始的子字符串
System.out.println(str4.substring(2, 4));  // 从索引2到索引4的子字符串

// split(String regex):将字符串以regex分割
Object tmp = str3.split("a");  // {'  J', 'v', ' ', 'nd Python  '}

输出结果6

七、代码

public class Day7 {
    public static void main(String[] args){
        /* 创建 */
        String s1 = "Hello, Jack!";  // Hello, Jack!
        String s2 = new String("Hello, Jack!");  // Hello, Jack!
        char[] c = {'H', 'e', 'l', 'l', 'o', ',', 'J', 'a', 'c', 'k', '!'};
        String s3 = new String(c);  // Hello, Jack!
        String s4 = new String(c, 6, 4);  // Jack
        byte[] b = {1, 2, 3, 4};
        String s5 = new String(b);  // 1234
        String s6 = new String(b, 1, 2);  // 23

        System.out.println("s1: " + s1);
        System.out.println("s2: " + s2);
        System.out.println("s3: " + s3);
        System.out.println("s4: " + s4);
        System.out.println("s5: " + s5);
        System.out.println("s6: " + s6);

        /* 转换 */
        String s7 = new String("Hello, Jack!"); // Hello, Jack!

        // toCharArray():字符串 --> char数组
        Object ob1 = s7.toCharArray(); // {H, e, l, l, o, ,, , J, a, c, k, !}
        System.out.println("\"Hello, Jack!\"转换为 char数组: " + ob1);

        // toLowerCase():字符串转小写
        Object ob2 = s7.toLowerCase();  // hello, jack!
        System.out.println("\"Hello, Jack!\"转换为 小写: " + ob2);

        // toUpperCase():字符串转大写
        Object ob3 = s7.toUpperCase(); // HELLO, JACK!
        System.out.println("\"Hello, Jack!\"转换为 大写: " + ob3);

        // getBytes():字符串 --> byte数组
        Object ob4 = s7.getBytes();  // {72, 101, 108, 108, 111, 44, 32, 74, 97, 107,  33}
        System.out.println("\"Hello, Jack!\"转换为 byte数组: " + ob4);

        /* 比较 */
        // equals():比较两个对象的内容是否相等
        String s8 = new String("abc");
        String s9 = new String("Abc");
        String s10 = new String("abc");

        Object ob5 = (s8 == s9);  // false. s8和s9的内容和地址都不相同
        Object ob6 = (s8 == s10); // false. s8和s10的地址不相同
        Object ob7 = s8.equals(s9);  // false. s8和s9内容不相同
        Object ob8 = s8.equals(s10);  // true. s8和s10内容相同

        System.out.println("s8\"abc\"和s9\"Abc\" == : " + ob5);
        System.out.println("s8\"abc\"和s10\"Abc\" == : " + ob6);
        System.out.println("s8\"abc\"和s9\"Abc\" equals() : " + ob7);
        System.out.println("s8\"abc\"和s10\"Abc\" equals() : " + ob8);

        // equalsIgnoreCase():忽略大小写判断两个串是否相等
        System.out.println("s8\"abc\"和s9\"Abc\" equalsIgnoreCase() : " + s8.equalsIgnoreCase(s9));  // true. 忽略大小写,abc 和 Abc相同

        // compareTo():按字典顺序比较两个字符串
        String s11 = new String("Abc");
        String s12 = new String("aaa");
        System.out.println("Abc 和 aaa compareTo(): " + s11.compareTo(s12));  // -32 s11:Abc s12:abc 第一个不相等的字符是A a

        // compareToIgnoreCase():按字典顺序比较两个字符串,不考虑大小写
        System.out.println("Abc 和 aaa compareToIgnoreCase(): " + s11.compareToIgnoreCase(s12));  // 1 s11:Abc s12:abc 忽略大小写,第一个不相等的字符b a

        /* 查找 */
        String str1 = "I love Java!";

        // contains():判断字符串中是否包含某个字符或字符串
        System.out.println("字符串\"I love Java!\"中是否包含\"love\": " + str1.contains("love"));
        System.out.println("字符串\"I love Java!\"中是否包含\"python\": " + str1.contains("python"));
        System.out.println("字符串\"I love Java!\"中是否包含\"J\": " + str1.contains("J"));
        System.out.println("字符串\"I love Java!\"中是否包含\"P\": " + str1.contains("P"));

        // charAt():返回指定位置的字符
        System.out.println("字符串\"I love Java!\"中index = 2的字符: " + str1.charAt(2));  // l

        // indexOf():返回str在字符串第一次出现的位置
        // 字符
        System.out.println("o在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("o"));  // 3
        System.out.println("P在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("P"));  // -1 不存在

        // 字符串
        System.out.println("love在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("love"));  // 2
        System.out.println("Python在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("Python"));  // -1

        // Unicode编码
        System.out.println("97在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf(97));  // 8  ASCII中的a是97
        System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a"));  // 8

        // 从某一位置后继续查找
        System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a"));  // 8
        System.out.println("a在字符串\"I love Java!\"中第一次的索引: " + str1.indexOf("a", 9));  // 10. 从第9个位置开始查询a,即从字符串va!后查询a

        // lastIndexOf():返回str在字符串最后一次出现的位置
        // 字符
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10
        System.out.println("P在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("P"));  // -1 不存在

        // 字符串
        System.out.println("love在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("love"));  // 2
        System.out.println("Python在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("Python"));  // -1

        // Unicode编码
        System.out.println("97在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf(97));  // 10  ASCII中的a是97
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10

        // 从某一位置后继续查找
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a"));  // 10
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 7));  // -1. 从0到第7个位置开始查询a,即从字符串I love J后查询a
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 8));  // 8. 从0到第8个位置开始查询a,即从字符串I love Ja后查询a
        System.out.println("a在字符串\"I love Java!\"中最后一次的索引: " + str1.lastIndexOf("a", 11));  // 10. 从0到第11个位置开始查询a,即从字符串I love Java后查询a

        // startsWith():判断字符串是否以prefix开始
        System.out.println("字符串\"I love Java!\"是否以I love开头: " + str1.startsWith("I love"));  // true
        System.out.println("字符串\"I love Java!\"是否以Java开头: " + str1.startsWith("Java"));  // false

        // endsWith():判断字符串是否以suffix结尾
        System.out.println("字符串\"I love Java!\"是否以I love结尾: " + str1.startsWith("I love"));  // true
        System.out.println("字符串\"I love Java!\"是否以Java!结尾: " + str1.startsWith("Java!"));  // false

        /* 替换 */
        String str2 = "abaac332dda456efF";

        System.out.println(str2.replace("a", "A"));
        System.out.println(str2.replaceAll("a", "A"));
        System.out.println(str2.replaceAll("\\d", "*"));
        System.out.println(str2.replaceFirst("a", "A"));
        System.out.println(str2.replaceFirst("\\d", "*"));

        /* 其他 */
        String str3 = "  Java and Python  ";
        String str4 = "I love";
        String str5 = "";
        String str6 = " ";

        // trim():去除字符串两边空格
        System.out.println(str3.trim());

        // concat(String str):将指定字符串连接到此字符串的结尾
        System.out.println(str4.concat(str3));

        // length():字符串长度
        System.out.println(str3.length());

        // isEmpty():字符串是否为空
        System.out.println("\"  Java and Python  \"是否为空: " + str3.isEmpty());  // false
        System.out.println("\"\"是否为空: " + str5.isEmpty());  // true
        System.out.println("\" \"是否为空: " + str6.isEmpty());  // false

        // substring(int beginIndex):从beginIndex开始截取字串
        System.out.println(str4.substring(2)); // 从索引2开始的子字符串
        System.out.println(str4.substring(2, 4));  // 从索引2到索引4的子字符串

        // split(String regex):将字符串以regex分割
        Object tmp = str3.split("a");  // {'  J', 'v', ' ', 'nd Python  '}
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值