20. 字符串类
- 字符串是指一连串的字符,它是由许多单个字符连接而成。
- 字符串可以包含任意字符,这些字符必须包含在一对双引号""之内,例如:“abc”.
- java中封装了3个字符串类,分别是String类、StringBuffer类、StringBuilder类,都在java.lang包中。
20.1 String类的初始化
- 使用字符串方法前,首先要创建字符串对象,java可以使用2种方式创建字符串对象
- 使用字符串常量创建对象
- 使用构造方法创建对象
20.1.1 使用字符串常量初始化
java">String str1 = "abc";
这种方法用于创建并初始化String对象,比较常用,其中"abc"表示字符串常量,在内存中是不可修改的。
20.1.2 使用构造方法初始化
- String类常见的构造方法如下表所示:
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容未空的字符串 |
String(String value) | 根据指定的字符串value创建对象 |
String(char[] value) | 根据指定的字符数组创建对象 |
String(byte[] value) | 通过使用平台的默认字符集解码指定的字节数组来构造新的对象 |
String(byte[] bytes, Charset harset) | 由指定的字节数组构造一个新的String并指定解码字符集charset |
-
以下是使用构造方法创建字符串对象
java">/*** 使用构造方法创建String对的方法** @author root*/public void stringDemo() {// 1. 创建空字符串对象String str = new String();// 2. 创建内容为abcd的字符串对象String str1 = new String("abcd");// 3. 使用字符数组创建字符串对象char[] chars = {'a', 'b', 'c'};String str2 = new String(chars);// 4. 使用字节数组创建字符串对象byte[] bytes = {97, 98, 99};String str3 = new String(bytes);// 5. 使用字节数组创建字符串对象, 同时指定字符集String str4 = new String(bytes, StandardCharsets.UTF_8);System.out.println("str=" + str); // str=System.out.println("str1=" + str1); // str1=abcdSystem.out.println("str2=" + str2); // str2=abcSystem.out.println("str3=" + str3); // str3=abcSystem.out.println("str4=" + str4); // str4=abc}
20.2 String类的常见操作
在实际的开发中,String类对象应用是否广泛,同时对字符串的操作也非常重要。下表是String类常用的一些方法:
表20-1 String类常用方法
方法声明 | 功能描述 |
---|---|
int indexOf(int ch) | 返指定字符ch在字符串中第一次出现位置的下标 |
int lastIndexOf(int ch) | 返指定字符ch在字符串中最后一次出现位置的下标 |
int indexOf(String str) | 返指定字符串str在字符串中第一次出现位置的下标 |
int lastIndexOf(String str) | 返指定字符串str在字符串中最后一次出现位置的下标 |
char charAt(int index) | 返指符串下标为index的字符,index=[0, str.length()-1] |
boolean endsWith(String suffix) | 判断字符串是否是以指定字符串suffix结尾 |
boolean equals(Object anObject) | 判断字符串和anObject字符串的内容是否相等 |
int length() | 返回字符串长度 |
boolean isEmpty() | 如果字符串长度为0返回true, 否则返回false |
boolean startsWith(String prefix) | 判断字符串是否是以指定字符串prefix开头 |
boolean contains(CharSequence s) | 判断字符串是否包含指定字符串序列s |
String toLowerCase() | 字符串转小写字符 |
String toUpperCase() | 字符串转大写字符 |
char[] toCharArray() | 转换字符串为char数组 |
static String valueOf(Object obj) | 将对象obj转换为字符串 |
static String format(String format, Object… args) | 使用指定的转换字符串对args参数进行格式化 |
String replace(CharSequence target, CharSequence replacement) | 返回一个新字符串,是通过replacement替换所有target得到的 |
String[] split(String regex) | 根据参数regex将原来的字符串分割成若干字符串数组 |
String substring(int beginIndex, int endIndex) | 截取下标[beginIndex, endIndex)范围的子字符串 |
String trim() | 返回去除首尾空格的新字符串 |
20.2.1 字符串的获取功能
-
下面的程序是字符串获取的操作,如获得字符串长度,获得指定位置的字符等。
java"> public void stringDemo1() {String str = "ababcdedcba";// 1. 获得字符串长度System.out.println("字符串长度为: " + str.length()); // 字符串长度为: 11// 2. 获得指定位置的字符System.out.println("字符串中第一个字符为: " + str.charAt(0)); // 字符串中第一个字符为: a// 3. 获得字符首次出现的下标System.out.println("字符串中第一个c字符的下标为: " + str.indexOf('c')); // 字符串中第一个c字符的下标为: 4// 4. 获得字符最后出现的下标System