您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Java中String类字符串怎么用
## 一、String类概述
String类是Java语言中最常用的类之一,用于表示和操作字符串。在Java中,字符串是不可变的(immutable),这意味着一旦创建了一个String对象,它的值就不能被改变。任何看似修改字符串的操作,实际上都是创建了一个新的String对象。
### 1.1 String类的重要性
- 字符串处理是编程中最常见的操作之一
- Java中所有双引号括起来的文本都是String类的实例
- String类提供了丰富的方法用于字符串操作
- 字符串在内存管理上有特殊处理(字符串常量池)
### 1.2 String类的不可变性
```java
String str = "hello";
str = str + " world"; // 实际上是创建了新对象
不可变性的优点: - 线程安全 - 可以缓存hash值 - 适合作为Map的key - 字符串常量池的实现基础
String str1 = "Java"; // 使用字符串常量池
特点: - JVM会先检查字符串常量池 - 如果存在则直接引用,否则创建新对象并放入池中 - 效率较高,推荐使用
String str2 = new String("Java"); // 强制创建新对象
特点: - 无论常量池是否存在,都会在堆中创建新对象 - 可能造成内存浪费 - 适用于需要明确新建对象的场景
String a = "abc";
String b = "abc";
String c = new String("abc");
String d = new String("abc");
System.out.println(a == b); // true
System.out.println(a == c); // false
System.out.println(c == d); // false
System.out.println(a.equals(c)); // true
String str = "Hello World";
// 获取长度
int len = str.length(); // 11
// 获取指定位置字符
char ch = str.charAt(1); // 'e'
// 获取子字符串位置
int index1 = str.indexOf('o'); // 4
int index2 = str.indexOf("World"); // 6
int index3 = str.lastIndexOf('o'); // 7
String s1 = "Java";
String s2 = "java";
String s3 = "Java";
// 区分大小写比较
boolean b1 = s1.equals(s2); // false
// 不区分大小写比较
boolean b2 = s1.equalsIgnoreCase(s2); // true
// 比较引用地址
boolean b3 = (s1 == s3); // true (如果使用常量池)
// 字典序比较
int result = s1.compareTo(s2); // 负数(s1 < s2)
String original = " Java Programming ";
// 去除首尾空格
String trimmed = original.trim(); // "Java Programming"
// 转换为大写/小写
String upper = original.toUpperCase(); // " JAVA PROGRAMMING "
String lower = original.toLowerCase(); // " java programming "
// 替换字符或字符串
String replaced = original.replace('a', 'A'); // " JAvA ProgrAmming "
String replacedAll = original.replaceAll("a", "A"); // " JAvA ProgrAmming "
// 拼接字符串
String concated = original.concat(" Language"); // " Java Programming Language"
String fruits = "apple,orange,banana,grape";
// 分割字符串
String[] fruitArray = fruits.split(",");
// ["apple", "orange", "banana", "grape"]
// 使用正则表达式分割
String complex = "a b c d";
String[] parts = complex.split("\\s+"); // 按一个或多个空格分割
// ["a", "b", "c", "d"]
// 字符串数组连接
String joined = String.join("-", "2020", "10", "20"); // "2020-10-20"
// 多种转换方式
int num = 123;
String s1 = num + ""; // 简单但效率不高
String s2 = String.valueOf(num); // 推荐方式
String s3 = Integer.toString(num);
String numStr = "123";
// 使用包装类的parse方法
int i = Integer.parseInt(numStr);
double d = Double.parseDouble("3.14");
boolean b = Boolean.parseBoolean("true");
// 注意处理NumberFormatException
try {
int n = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("数字格式错误");
}
// String转字符数组
String str = "hello";
char[] charArray = str.toCharArray();
// 字符数组转String
char[] arr = {'J', 'a', 'v', 'a'};
String newStr1 = new String(arr);
String newStr2 = String.valueOf(arr);
String的不可变性导致频繁修改时性能低下:
String result = "";
for (int i = 0; i < 10000; i++) {
result += i; // 每次循环都创建新对象
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i); // 不会创建新对象
}
String result = sb.toString();
常用方法: - append(): 追加内容 - insert(): 插入内容 - delete(): 删除内容 - reverse(): 反转字符串
// 推荐方式 - 使用常量池
String s1 = "hello";
// 不推荐方式 - 创建新对象
String s2 = new String("hello");
// 低效方式(编译后自动优化为StringBuilder)
String result = str1 + str2 + str3;
// 高效方式
StringBuilder sb = new StringBuilder();
sb.append(str1).append(str2).append(str3);
String result = sb.toString();
String s1 = new String("hello").intern();
String s2 = "hello";
System.out.println(s1 == s2); // true
intern()方法的作用: - 将字符串放入常量池(如果池中不存在) - 返回池中的引用
// 使用分隔符连接多个字符串
String joined = String.join(", ", "Java", "Python", "C++");
// "Java, Python, C++"
// 获取IntStream处理字符
"hello".chars().forEach(c -> System.out.print((char)c));
// 判断字符串是否空白
boolean blank = " ".isBlank(); // true
// 去除首尾空白(包括全角空格等)
String stripped = " hello ".strip(); // "hello"
// 重复字符串
String repeated = "Java".repeat(3); // "JavaJavaJava"
// 按行分割字符串
String text = "line1\nline2\nline3";
String[] lines = text.lines().toArray(String[]::new);
public boolean isValidUsername(String username) {
if (username == null || username.isBlank()) {
return false;
}
return username.matches("[a-zA-Z0-9_]{4,16}");
}
String path = "/usr/local/bin/java";
String[] parts = path.split("/");
String filename = path.substring(path.lastIndexOf("/") + 1);
public String filterSensitiveWords(String content, Set<String> sensitiveWords) {
String result = content;
for (String word : sensitiveWords) {
result = result.replace(word, "***");
}
return result;
}
Java中的String类提供了丰富的字符串操作方法,理解其不可变性和内存管理机制对于编写高效程序至关重要。在实际开发中:
掌握String类的使用是Java开发的基础,合理运用可以显著提高程序性能和代码质量。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。