强制类型转换
最直接、最常用的方法是使用 Java 的强制类型转换((char)),因为 char 类型在 Java 中本质上是 16 位的无符号 Unicode 字符,它可以直接存储一个 ASCII 值。

语法
char character = (char) asciiValue;
asciiValue 是一个 int 类型的数值。
示例代码
下面是一个完整的 Java 示例,展示了如何将单个 ASCII 码和 ASCII 码数组转换成字符。
public class AsciiToChar {
public static void main(String[] args) {
// --- 示例 1:将单个 ASCII 码转换为字符 ---
int asciiCode1 = 65; // 'A' 的 ASCII 码
int asciiCode2 = 97; // 'a' 的 ASCII 码
int asciiCode3 = 48; // '0' 的 ASCII 码
int asciiCode4 = 33; // '!' 的 ASCII 码
// 使用强制类型转换 (char)
char char1 = (char) asciiCode1;
char char2 = (char) asciiCode2;
char char3 = (char) asciiCode3;
char char4 = (char) asciiCode4;
System.out.println("ASCII 码 " + asciiCode1 + " 对应的字符是: " + char1);
System.out.println("ASCII 码 " + asciiCode2 + " 对应的字符是: " + char2);
System.out.println("ASCII 码 " + asciiCode3 + " 对应的字符是: " + char3);
System.out.println("ASCII 码 " + asciiCode4 + " 对应的字符是: " + char4);
System.out.println("------------------------------------");
// --- 示例 2:将 ASCII 码数组转换为字符串 ---
int[] asciiCodes = {72, 101, 108, 108, 111}; // "Hello" 的 ASCII 码数组
StringBuilder sb = new StringBuilder();
for (int code : asciiCodes) {
// 将每个 ASCII 码转换为字符并追加到 StringBuilder 中
sb.append((char) code);
}
String resultString = sb.toString();
System.out.println("ASCII 码数组 " + java.util.Arrays.toString(asciiCodes) + " 对应的字符串是: " + resultString);
}
}
输出结果
ASCII 码 65 对应的字符是: A
ASCII 码 97 对应的字符是: a
ASCII 码 48 对应的字符是: 0
ASCII 码 33 对应的字符是: !
------------------------------------
ASCII 码数组 [72, 101, 108, 108, 111] 对应的字符串是: Hello
重要注意事项:char 和 String 的区别
这是一个非常常见的初学者错误,当你把一个数字 int 强制转换成 char 后,它就变成了一个字符,如果你想在输出时直接打印这个数字本身,而不是它代表的字符,你需要把它转换回 String。
错误示范
int myAscii = 65; char myChar = (char) myAscii; // 错误:这会打印字符 'A' System.out.println(myChar); // 错误:这也会打印字符 'A',因为 println 会自动调用 myChar 的 toString() 方法 System.out.println(myChar + "");
正确示范(打印数字本身)
如果你想在输出中显示数字 65 而不是字符 A,你需要将 int 类型的数字转换为 String。

int myAscii = 65;
char myChar = (char) myAscii;
// 方法1:直接打印 int 变量
System.out.println("字符是: " + myChar + ", 它的ASCII码是: " + myAscii);
// 方法2:将 char 转换为 String 来显示其数字表示
// 这需要使用 Character 类的 getNumericValue() 方法,但请注意,它主要用于获取数字字符的值。
// 对于显示码点,更直接的方法是先转 int。
System.out.println("字符是: " + myChar + ", 它的ASCII码是: " + (int)myChar);
输出:
字符是: A, 它的ASCII码是: 65
字符是: A, 它的ASCII码是: 65
替代方法:Character.forDigit()
这个方法有特定的用途,不适用于通用的 ASCII 转换,它主要用于将一个数字(0-15)转换为其对应的十六进制字符('0'-'9', 'a'-'f')。
// 将数字 10 转换为十六进制字符 'a' char hexChar = Character.forDigit(10, 16); // 第二个参数是进制 System.out.println(hexChar); // 输出 a // 将数字 15 转换为十六进制字符 'f' char hexChar2 = Character.forDigit(15, 16); System.out.println(hexChar2); // 输出 f // 这不是将 ASCII 码 10 转换为换行符! // char wrongChar = Character.forDigit(10, 10); // 会抛出 IllegalArgumentException,因为 10 不是 10 进制的有效数字
对于将 ASCII 码(0-127)转换为对应字符,请始终使用强制类型转换 (char),这是最正确、最高效的方法。
| 任务 | 推荐方法 | 示例 |
|---|---|---|
| 将单个 ASCII 码(int)转换为字符(char) | 强制类型转换 | char c = (char) 65; |
| 将 ASCII 码数组转换为字符串 | 循环 + StringBuilder + 强制类型转换 |
for (int code : codes) { sb.append((char)code); } |
| 打印字符的 ASCII 码值 | 将 char 强制转换回 int |
System.out.println((int) 'A'); |
| 将数字转换为十六进制字符 | Character.forDigit() |
char c = Character.forDigit(10, 16); |
