在 Java 中获取 String 的长度非常简单,主要使用 String 类自带的 length() 方法。
核心方法:length()
length() 方法返回 String 对象中包含的字符数量(Unicode 代码单元的数量)。
语法
int length = yourString.length();
示例代码
public class StringLengthExample {
public static void main(String[] args) {
String str1 = "Hello, World!";
String str2 = "Java";
String str3 = ""; // 空字符串
String str4 = "你好,世界"; // 中文
// 获取并打印字符串长度
System.out.println("字符串 \"" + str1 + "\" 的长度是: " + str1.length()); // 输出: 13
System.out.println("字符串 \"" + str2 + "\" 的长度是: " + str2.length()); // 输出: 4
System.out.println("字符串 \"" + str3 + "\" 的长度是: " + str3.length()); // 输出: 0
System.out.println("字符串 \"" + str4 + "\" 的长度是: " + str4.length()); // 输出: 6
}
}
重要注意事项
length() 是方法,不是属性
与许多其他语言(如 Python 的 len() 或 C# 的 string.Length)不同,Java 中 length 是一个方法,需要加上括号 来调用。
错误示例:
// 错误!String 没有 length 属性 int len = "hello".length;
正确示例:
// 正确!length() 是一个方法 int len = "hello".length();
length() 与 length 的区别
初学者很容易混淆 String.length() 和数组的 .length 属性。
| 特性 | String.length() |
数组 .length |
|---|---|---|
| 类型 | 方法 (Method) | 属性 / 字段 (Field) |
| 调用方式 | 需要括号 | 直接使用,无需括号 |
| 作用 | 获取字符串中的字符数 | 获取数组中的元素个数 |
| 示例 | "abc".length() 返回 3 |
new int[5].length 返回 5 |
Unicode 和代码单元 (Code Units)
在 Java 中,String 是由 char 值序列组成的,每个 char 是一个 16 位的 Unicode 代码单元。
- 对于大多数常见的字符(如英文字母、数字、欧洲语言的字母),一个字符对应一个
char,length()的结果就是直观的字符数。 - 对于一些辅助字符(如某些 Emoji 或特殊符号),它们需要两个
char来表示(一个代理对,surrogate pair),在这种情况下,length()返回的值会大于你直观看到的字符数。
示例:Emoji 字符
// 一个Emoji字符 "😂" 实际上由两个char组成
String emojiString = "😂";
System.out.println("字符串 \"" + emojiString + "\" 的长度是: " + emojiString.length()); // 输出: 2
// 如果你想要计算真正的字符数(而不是代码单元数),应该使用 codePointCount()
int trueLength = emojiString.codePointCount(0, emojiString.length());
System.out.println("字符串 \"" + emojiString + "\" 的真实字符数是: " + trueLength); // 输出: 1
null 字符串
如果尝试对一个 null 对象调用 length() 方法,会抛出 NullPointerException。
String nullString = null; // 这行代码会抛出 java.lang.NullPointerException // int len = nullString.length();
为了避免这种情况,最好在调用前进行判断:
String nullString = null;
if (nullString != null) {
System.out.println("长度是: " + nullString.length());
} else {
System.out.println("字符串对象为 null,无法获取长度。");
}
| 需求 | 推荐方法 | 说明 |
|---|---|---|
| 获取字符串的字符数(标准) | myString.length() |
最常用,返回代码单元数,适用于绝大多数情况。 |
| 获取字符串的真实字符数 | myString.codePointCount(0, myString.length()) |
正确处理代理对(如 Emoji),返回真正的 Unicode 字符数。 |
| 获取数组的长度 | myArray.length |
注意,这是数组的属性,不是方法。 |
| 安全地获取长度(防 null) | if (myString != null) { ... } |
在调用前进行空指针检查。 |
对于日常开发,myString.length() 是获取字符串长度的标准、最简单也是最常用的方法。
