目录
    
   
    
     字符串广泛应用
    
    在 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  '}
    }
}
 
版权声明:本文为weixin_45666660原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
