一、String
1、是什么
String
是 Java 中用于表示字符串的类。Java 中的字符串是不可变的,也就是说一旦创建,字符串的内容无法更改。
2、如何构造
(1)无参数构造方法:
String str = new String();
//创建一个空字符串。
(2)从字符数组创建:
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str = new String(charArray);
(3)从字节数组创建:
byte[] byteArray = {65, 66, 67}; // 对应字符 A, B, C
String str = new String(byteArray);
(4)从字符串字面量创建:
String str = "Hello, World!";
(5)从另一个字符串创建:
String original = "Hello";
String str = new String(original);
3、常用方法
- length():返回字符串的长度。
- charAt(int index):返回指定索引处的字符。
- substring(int beginIndex, int endIndex):返回指定范围内的子字符串。
- indexOf(String str):返回指定子字符串第一次出现的索引。
- toUpperCase() / toLowerCase():转换为大写或小写。
- trim():去掉字符串两端的空白字符。
- equals(Object obj):比较两个字符串是否相等。
- split(String regex):根据指定的正则表达式分割字符串。
示例:
public class StringExample {
public static void main(String[] args) {
// 从字面量创建字符串
String str1 = "Hello, World!";
System.out.println("Length: " + str1.length()); // 输出: Length: 13
// 获取特定索引的字符
char ch = str1.charAt(7);
System.out.println("Character at index 7: " + ch); // 输出: Character at index 7: W
// 获取子字符串
String subStr = str1.substring(7, 12);
System.out.println("Substring: " + subStr); // 输出: Substring: World
// 查找子字符串的索引
int index = str1.indexOf("World");
System.out.println("Index of 'World': " + index); // 输出: Index of 'World': 7
// 转换为大写和小写
String upper = str1.toUpperCase();
String lower = str1.toLowerCase();
System.out.println("Uppercase: " + upper); // 输出: Uppercase: HELLO, WORLD!
System.out.println("Lowercase: " + lower); // 输出: Lowercase: hello, world!
// 去除空格
String str2 = " Hello, Java! ";
String trimmed = str2.trim();
System.out.println("Trimmed string: '" + trimmed + "'"); // 输出: Trimmed string: 'Hello, Java!'
// 字符串比较
String str3 = "Hello";
String str4 = new String("Hello");
System.out.println("Are str3 and str4 equal? " + str3.equals(str4)); // 输出: Are str3 and str4 equal? true
// 字符串分割
String csv = "Apple,Banana,Cherry";
String[] fruits = csv.split(",");
for (String fruit : fruits) {
System.out.println(fruit); // 输出: Apple Banana Cherry
}
}
}
4、使用场景
(1)遍历字符串和统计字母个数
package week6_String;
import java.util.Scanner;
public class StringDemo1 {
//键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符的出现次数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
int big =0;
int small=0;
int number=0;
for (int i = 0; i <str.length() ; i++) {
char c = str.charAt(i);
if('a'<=c&&c<='z'){
//char 类型的变量参与计算时候自动类型提升为int
small++;
}else if('A'<=c && c<='Z'){
big++;
}else if(c>='0'&&c<='9'){
number++;
}
}
System.out.println("小写字母有:"+small+"个");
System.out.println("大写字母有:"+big+"个");
System.out.println("数字有:"+number+"个");
}
}
(2)字符串的拼接
package week6_String;
//定义一个方法,把int 数组中的数据按照指定的格式拼接成一个字符串返回,
调用该方法,并在控制台输出结果
public class StringDemo2 {
public static void main(String[] args) {
int[] arr ={1,2,3,4,5};
String str = arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[] arr){
//使用String方法:
if(arr == null){
return "";
}
if(arr.length==0){
return "[]";
}
String result ="[";
int i = 0;
for (; i < arr.length-1; i++) {
result = result+arr[i]+",";
}
result =result+arr[i]+"]";
return result;
}
}
输出结果:[1,2,3,4,5]
(3)字符串的反转
package week6_String;
public class StringDemo3 {
public static void main(String[] args) {
String s =reverse("abcdefghij");
System.out.println(s);
}
public static String reverse(String str){
String result = "";
for (int i = str.length()-1; i >=0 ; i--) {
char c = str.charAt(i);
result = result +c;
}
return result;
}
}
输出结果: jihgfedcba
二、StringBuider
1、是什么
StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。
作用:提高字符串的操作效率
2、如何构造
-
无参数构造:
StringBuilder sb = new StringBuilder(); //创建一个空的 StringBuilder,默认初始容量为 16。
-
指定初始容量:
StringBuilder sb = new StringBuilder(int capacity);\ //创建一个指定初始容量的 StringBuilder。
-
从字符串初始化:
StringBuilder sb = new StringBuilder(String str); //创建一个包含指定字符串内容的 StringBuilder。
3、常用方法
- append():追加字符串。
- insert():在指定位置插入字符串。
- delete():删除指定范围内的字符。
- replace():替换指定范围内的字符。
- reverse():反转字符序列。
- toString():将
StringBuilder
转换为String
。
示例:
public class StringBuilderDemo1 {
public static void main(String[] args) {
// 创建一个空的 StringBuilder
StringBuilder sb1 = new StringBuilder();
// 添加内容
sb1.append("Hello");
sb1.append(" ");
sb1.append("World!");
System.out.println(sb1.toString()); // 输出: Hello World!
// 创建并初始化 StringBuilder
StringBuilder sb2 = new StringBuilder("Java");
System.out.println(sb2.toString()); // 输出: Java
// 插入字符串
sb2.insert(4, " Programming");
System.out.println(sb2.toString()); // 输出: Java Programming
// 删除部分字符串
sb2.delete(4, 15);
System.out.println(sb2.toString()); // 输出: Java
// 替换字符串
sb2.replace(0, 4, "Python");
System.out.println(sb2.toString()); // 输出: Python
// 反转字符串
sb2.reverse();
System.out.println(sb2.toString()); // 输出: nohtyP
}
}
4、使用场景
(1)字符串拼接
package week6_String;
//定义一个方法,把int 数组中的数据按照指定的格式拼接成一个字符串返回,
调用该方法,并在控制台输出结果
public class StringDemo2 {
public static void main(String[] args) {
int[] arr ={1,2,3,4,5};
String str = arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[] arr){
//使用String方法:
// if(arr == null){
// return "";
// }
// if(arr.length==0){
// return "[]";
// }
// String result ="[";
// int i = 0;
// for (; i < arr.length-1; i++) {
// result = result+arr[i]+",";
// }
// result =result+arr[i]+"]";
// return result;
//使用StringBuilder方法:
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i <arr.length ; i++) {
if(i== arr.length-1){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
}
(2)字符串的反转
package week6_String;
import java.util.Scanner;
public class StringBuilderDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
String result = new StringBuilder().append(str).reverse().toString();
if(str.equals(result)){
System.out.println("当前字符串是对称字符串。");
}else{
System.out.println("当前字符串不是对称字符串。");
}
}
}
三、Stringjoiner
1、是什么
StringJoiner也可以看成一个容器,创建之后内容是可变的。
StringJoiner
是 Java 8 中引入的一个类,用于构建由分隔符、前缀和后缀包围的字符串序列。
它特别适用于将多个字符串连接在一起,避免了使用字符串拼接时出现的额外分隔符的问题
示例:
2、如何构造
(1)基本构造方法:
StringJoiner joiner = new StringJoiner(CharSequence delimiter);
//创建一个 StringJoiner,指定用于连接元素的分隔符。
(2)指定前缀和后缀:
StringJoiner joiner = new StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix);
//创建一个 StringJoiner,同时指定分隔符、前缀和后缀。
3、常用方法
- add():添加一个新的元素到
StringJoiner
。- merge():将另一个
StringJoiner
的内容合并到当前StringJoiner
中。- toString():返回构建的字符串。
示例:
import java.util.StringJoiner;
public class StringJoinerExample {
public static void main(String[] args) {
// 创建一个 StringJoiner,使用逗号作为分隔符
StringJoiner joiner1 = new StringJoiner(", ");
joiner1.add("Apple");
joiner1.add("Banana");
joiner1.add("Cherry");
System.out.println(joiner1.toString()); // 输出: Apple, Banana, Cherry
// 创建一个 StringJoiner,指定前缀和后缀
StringJoiner joiner2 = new StringJoiner(", ", "[", "]");
joiner2.add("Tom");
joiner2.add("Jerry");
System.out.println(joiner2.toString()); // 输出: [Tom, Jerry]
// 合并两个 StringJoiner
StringJoiner joiner3 = new StringJoiner("; ");
joiner3.add("Python");
joiner3.add("Java");
// 将 joiner1 和 joiner3 合并
joiner1.merge(joiner3);
System.out.println(joiner1.toString()); // 输出: Apple, Banana, Cherry; Python; Java
}
}