方法 1:使用 char 和强制类型转换
Java 的 char 类型本质上是 16 位的 Unicode 字符,可以直接转换为 ASCII 码(如果字符在 ASCII 范围内)。

public class AsciiExample {
public static void main(String[] args) {
String str = "Hello";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int ascii = (int) c; // 强制转换为 int
System.out.println("字符: " + c + " -> ASCII码: " + ascii);
}
}
}
输出:
字符: H -> ASCII码: 72
字符: e -> ASCII码: 101
字符: l -> ASCII码: 108
字符: l -> ASCII码: 108
字符: o -> ASCII码: 111
方法 2:使用 String.codePointAt()
如果字符串包含非 ASCII 字符(如中文、emoji),codePointAt() 可以正确返回 Unicode 码点(可能超过 0xFFFF)。
public class UnicodeExample {
public static void main(String[] args) {
String str = "A中"; // 'A' 是 ASCII,'中' 是 Unicode
for (int i = 0; i < str.length(); i++) {
int codePoint = str.codePointAt(i);
System.out.println("字符: " + str.charAt(i) + " -> Unicode码点: " + codePoint);
}
}
}
输出:
字符: A -> Unicode码点: 65
字符: 中 -> Unicode码点: 20013
方法 3:处理 ASCII 范围外的字符
如果字符超出 ASCII 范围(如中文),直接转换会得到 Unicode 码点,而不是 ASCII(因为 ASCII 仅 0-127),可以通过检查字符是否在 ASCII 范围内:

public class CheckAscii {
public static void main(String[] args) {
String str = "Hello世界";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c <= 127) {
System.out.println("ASCII字符: " + c + " -> 码点: " + (int) c);
} else {
System.out.println("非ASCII字符: " + c + " -> Unicode码点: " + (int) c);
}
}
}
}
输出:
ASCII字符: H -> 码点: 72
ASCII字符: e -> 码点: 101
ASCII字符: l -> 码点: 108
ASCII字符: l -> 码点: 108
ASCII字符: o -> 码点: 111
非ASCII字符: 世 -> Unicode码点: 19990
非ASCII字符: 界 -> Unicode码点: 30028
| 方法 | 适用场景 | 示例 |
|---|---|---|
(int) char |
仅适用于 ASCII 字符(0-127) | (int) 'A' → 65 |
codePointAt() |
适用于所有 Unicode 字符(包括中文、emoji) | "中".codePointAt(0) → 20013 |
检查 char <= 127 |
判断字符是否为 ASCII | if (c <= 127) { ... } |
如果需要严格限制为 ASCII,可以过滤掉非 ASCII 字符:
String asciiOnly = str.replaceAll("[^\\x00-\\x7F]", ""); 