Java中的String类是用于处理字符串的核心类之一。它属于Java的标准库,并提供了许多操作字符串的方法。
String类是不可变的,这意味着一旦创建了一个String对象,它的值就不能被改变。当对字符串进行操作时,实际上是创建了一个新的String对象。如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
String类的初始化有以下几种方式:
直接赋值:通过将字符串字面值(用双引号括起来的字符序列)赋给String对象进行初始化。例如:
String str1 = "Hello World";
System.out.println(str1); // 输出: Hello World
使用构造方法:使用String类的构造方法来创建一个新的String对象。常用的构造方法包括:
String()
:创建一个空字符串对象。String(String original)
:根据指定的字符串original创建一个新的字符串对象。String(char[] value)
:根据字符数组value的内容创建一个新的字符串对象。String(char[] value, int offset, int count)
:根据字符数组value中从偏移量offset开始、长度为count的部分创建一个新的字符串对象。String(byte[] bytes)
:根据字节数组bytes的内容使用平台默认字符集创建一个新的字符串对象。String(byte[] bytes, String charsetName)
:根据字节数组bytes的内容使用指定的字符集charsetName创建一个新的字符串对象。String str2 = new String(); // 创建一个空字符串对象
System.out.println(str2); // 输出: ""
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray); // 根据字符数组创建字符串对象
System.out.println(str3); // 输出: Hello
byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray); // 根据字节数组使用默认字符集创建字符串对象
System.out.println(str4); // 输出: Hello
String str5 = new String(byteArray, "UTF-8"); // 根据字节数组使用指定字符集创建字符串对象
System.out.println(str5); // 输出: Hello
使用静态工厂方法:String类提供了一些静态工厂方法用于创建字符串对象,例如:
String.valueOf()
:将其他基本类型或对象转换为字符串。String.format()
:使用格式化字符串和参数创建一个新的字符串对象。String str2 = new String(); // 创建一个空字符串对象
System.out.println(str2); // 输出: ""
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray); // 根据字符数组创建字符串对象
System.out.println(str3); // 输出: Hello
byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray); // 根据字节数组使用默认字符集创建字符串对象
System.out.println(str4); // 输出: Hello
String str5 = new String(byteArray, "UTF-8"); // 根据字节数组使用指定字符集创建字符串对象
System.out.println(str5); // 输出: Hello
下面是 String 类支持的常用方法,更多详细,参看 Java String API 文档:
方法声明 |
功能描述 |
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~(字符串长度-1) |
Boolean endsWith(String suffix) |
判断此字符串是否以指定的字符串结尾 |
int length() |
返回此字符串的长度 |
boolean equals(Object anObject) |
将此字符串与指定的字符串比较 |
boolean isEmpty() |
判断字符串长度是否为0,如果为0则返回true,反之则返回flase |
boolean startsWith(String prefix) |
判断此字符串是否以指定的字符串开始 |
boolean contains(CharSequence cs) |
判断此字符串中是否包含指定的字符序列 |
String toLowerCase() |
使用默认语言环境的规则将String中的所有字符都转换为小写 |
String toUpperCase() |
使用默认语言环境的规则将String中的所有字符都转换为大写 |
static String valueOf(int i) |
将int变量i转换成字符串 |
char[] toCharArray() |
将此字符串转换为一个字符数组 |
String replace(CharSequence oldstr, CharSequence newstr) |
返回一个新的字符串,它是通过用 newstr替换此字符串 中出现的所有 oldstr得到的 |
String[] split(String regex) |
根据参数regex将原来的字符串分割为若干个子字符串 |
String substring(int beginIndex) |
返回一个新字符串,它包含从指定的beginIndex处开始, 直到此字符串末尾的所有字符 |
String substring(int beginIndex, int endIndex) |
返回一个新字符串,它包含从指定的beginIndex处开始, 直到索引endIndex-1处的所有字符 |
String trim() |
返回一个新字符串,它去除了原字符串首尾的空格 |
public class StringExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
// 使用length()方法获取字符串长度
int length = str1.length();
System.out.println("str1的长度为:" + length);
// 使用concat()方法连接两个字符串
String result = str1.concat(str2);
System.out.println("连接后的字public class myclass {
public static void main(String[] args) {
String str = "Hello, World!";
// 字符串长度相关方法
int length = str.length();
System.out.println("字符串长度:" + length);
boolean isEmpty = str.isEmpty();
System.out.println("字符串是否为空:" + isEmpty);
// 字符串比较方法
boolean isEqual = str.equals("hello, world!");
System.out.println("字符串是否相等:" + isEqual);
boolean isIgnoreCaseEqual = str.equalsIgnoreCase("hello, world!");
System.out.println("忽略大小写比较字符串是否相等:" + isIgnoreCaseEqual);
int compareToResult = str.compareTo("Hello");
System.out.println("字符串与\"Hello\"的字典顺序比较结果:" + compareToResult);
// 字符串查找方法
boolean contains = str.contains("World");
System.out.println("字符串是否包含\"World\":" + contains);
int indexOf = str.indexOf('o');
System.out.println("'o'在字符串中第一次出现的索引位置:" + indexOf);
int lastIndexOf = str.lastIndexOf('o');
System.out.println("'o'在字符串中最后一次出现的索引位置:" + lastIndexOf);
boolean startsWith = str.startsWith("He");
System.out.println("字符串是否以\"He\"开头:" + startsWith);
boolean endsWith = str.endsWith("d!");
System.out.println("字符串是否以\"d!\"结尾:" + endsWith);
// 字符串提取方法
char firstChar = str.charAt(0);
System.out.println("字符串的第一个字符:" + firstChar);
String subString1 = str.substring(7);
System.out.println("从索引位置7开始到末尾的子字符串:" + subString1);
String subString2 = str.substring(7, 12);
System.out.println("从索引位置7开始到索引位置12结束的子字符串:" + subString2);
// 字符串替换方法
String replacedString = str.replace('o', 'O');
System.out.println("将字符串中的'o'替换为'O'后的结果:" + replacedString);
String regexReplacedString = str.replaceAll("o", "O");
System.out.println("将字符串中所有的'o'替换为'O'后的结果:" + regexReplacedString);
// 字符串拆分与连接方法
String[] splitStrings = str.split(",");
System.out.println("通过','拆分后的字符串数组:");
for (String s : splitStrings) {
System.out.println(s);
}
String joinedString = String.join("-", "Java", "Programming", "Language");
System.out.println("将多个元素用'-'连接成一个字符串:" + joinedString);
// 大小写转换方法
String upperCaseString = str.toUpperCase();
System.out.println("转换为大写字母的字符串:" + upperCaseString);
String lowerCaseString = str.toLowerCase();
System.out.println("转换为小写字母的字符串:" + lowerCaseString);
}
}
符串为:" + result);
// 使用toUpperCase()方法将字符串转换为大写
String uppercase = result.toUpperCase();
System.out.println("转换为大写后的字符串为:" + uppercase);
// 使用charAt()方法获取指定索引位置的字符
char firstChar = str2.charAt(0);
System.out.println("str2的第一个字符为:" + firstChar);
// 使用substring()方法截取子字符串
String substring = result.substring(6, 10);
System.out.println("截取的子字符串为:" + substring);
// 使用replace()方法替换字符串中的字符
String replacedString = result.replace('o', 'x');
System.out.println("替换后的字符串为:" + replacedString);
}
}
运行:
字符串长度:13
字符串是否为空:false
字符串是否相等:false
忽略大小写比较字符串是否相等:true
字符串与"Hello"的字典顺序比较结果:8
字符串是否包含"World":true
'o'在字符串中第一次出现的索引位置:4
'o'在字符串中最后一次出现的索引位置:8
字符串是否以"He"开头:true
字符串是否以"d!"结尾:true
字符串的第一个字符:H
从索引位置7开始到末尾的子字符串:World!
从索引位置7开始到索引位置12结束的子字符串:World
将字符串中的'o'替换为'O'后的结果:HellO, WOrld!
将字符串中所有的'o'替换为'O'后的结果:HellO, WOrld!
通过','拆分后的字符串数组:
Hello
World!
将多个元素用'-'连接成一个字符串:Java-Programming-Language
转换为大写字母的字符串:HELLO, WORLD!
转换为小写字母的字符串:hello, world!