目录
字符串广泛应用在 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 '}
}
}