Java中的String类是用于处理字符串的核心类之一。它属于Java的标准库,并提供了许多操作字符串的方法。
String类是不可变的,这意味着一旦创建了一个String对象,它的值就不能被改变。当对字符串进行操作时,实际上是创建了一个新的String对象。如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
String类的初始化
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 方法
下面是 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 originalString.replaceAll(regex, replacement); |
这个方法返回一个新的字符串,其中所有与正则表达式匹配的内容都被替换为指定的新内容。 |
String[] split(String regex) |
根据参数regex将原来的字符串分割为若干个子字符串 |
String substring(int beginIndex) |
返回一个新字符串,它包含从指定的beginIndex处开始, 直到此字符串末尾的所有字符 |
String substring(int beginIndex, int endIndex) |
返回一个新字符串,它包含从指定的beginIndex处开始, 直到索引endIndex-1处的所有字符 |
String trim() |
返回一个新字符串,它去除了原字符串首尾的空格 |
示例代码:
public class myclass {
public static void main(String[] args) {
// 示例字符串
String str = "Java编程很有趣!";
// 判断是否以指定前缀开头
boolean startsWith = str.startsWith("Java");
System.out.println("是否以 'Java' 开头:" + startsWith);
// 判断是否以指定后缀结尾
boolean endsWith = str.endsWith("趣!");
System.out.println("是否以 '趣!' 结尾:" + endsWith);
// 获取字符在字符串中的位置
int indexOfChar = str.indexOf('编');
System.out.println("'编' 在字符串中的位置:" + indexOfChar);
// 替换子字符串
String replacedStr = str.replace("很有趣", "非常有趣");
System.out.println("替换后的字符串:" + replacedStr);
// 将字符串转换为大写
String uppercaseStr = str.toUpperCase();
System.out.println("转换为大写字母:" + uppercaseStr);
// 将字符串转换为小写
String lowercaseStr = str.toLowerCase();
System.out.println("转换为小写字母:" + lowercaseStr);
// 拆分字符串为字符数组
char[] chars = str.toCharArray();
System.out.println("拆分后的字符数组:");
for (char c : chars) {
System.out.println(c);
}
// 检查字符串是否为空
boolean isEmpty = str.isEmpty();
System.out.println("字符串是否为空:" + isEmpty);
// 字符串按照指定分隔符拼接
String[] words = {"Java", "编程", "很有趣"};
String joinedStr = String.join("-", words);
System.out.println("拼接后的字符串:" + joinedStr);
// 去除字符串中的空格
String stringWithSpaces = " Java 编程 很有趣 ";
String trimmedStr = stringWithSpaces.replaceAll("\\s", "");
System.out.println("去除空格后的字符串:" + trimmedStr);
}
}
运行:
是否以 'Java' 开头:true
是否以 '趣!' 结尾:true
'编' 在字符串中的位置:4
替换后的字符串:Java编程非常有趣!
转换为大写字母:JAVA编程很有趣!
转换为小写字母:java编程很有趣!
拆分后的字符数组:
J
a
v
a
编
程
很
有
趣
!
字符串是否为空:false
拼接后的字符串:Java-编程-很有趣
去除空格后的字符串:Java编程很有趣