杰瑞科技汇

Java中char转int的具体方法是什么?

  1. 获取字符的 ASCII (或 Unicode) 码点值:这是最常见的需求,即将字符 'A' 转换为其对应的整数值 65
  2. 将字符表示的数字转换为整数值:即字符 '5' 转换为整数 5

获取字符的 ASCII/Unicode 码点值

这是最直接、最常用的方法,在 Java 中,char 类型本质上是 16 位的无符号整数,它表示的是 Unicode 字集中的字符码点,当你将一个 char 赋值给一个 int 类型时,Java 会自动将其码点值(也就是数字)进行转换。

Java中char转int的具体方法是什么?-图1
(图片来源网络,侵删)

隐式类型转换(直接赋值)

这是最简单的方式,Java 会自动将 char 提升为 int

public class CharToIntExample {
    public static void main(String[] args) {
        char ch1 = 'A';
        char ch2 = 'a';
        char ch3 = '0'; // 字符 '0'
        char ch4 = '中'; // 一个中文字符
        // 直接将 char 赋值给 int
        int int1 = ch1;
        int int2 = ch2;
        int int3 = ch3;
        int int4 = ch4;
        System.out.println("字符 'A' 的码点是: " + int1); // 输出: 65
        System.out.println("字符 'a' 的码点是: " + int2); // 输出: 97
        System.out.println("字符 '0' 的码点是: " + int3); // 输出: 48
        System.out.println("字符 '中' 的码点是: " + int4); // 输出: 20013
    }
}

原理char 在 Java 中是 unsigned short 的子集,所以可以直接向上转型为 int

显式类型转换(强制类型转换)

你也可以使用强制类型转换 (int) 来达到同样的目的,虽然在这里是多余的,但可以明确表达你的意图。

char ch = 'Z';
int intValue = (int) ch;
System.out.println("字符 'Z' 的码点是: " + intValue); // 输出: 90

将字符表示的数字转换为整数值

如果你有一个字符变量,它的值是数字字符('1', '2', '9'),而你想要得到它所代表的数值(1, 2, 9),不能使用上面直接转换的方法,因为 '1' 的码点是 49,而不是 1

Java中char转int的具体方法是什么?-图2
(图片来源网络,侵删)

有几种方法可以实现这个转换:

使用 Character.getNumericValue(char) (推荐)

这是最安全、最清晰的方法,专门用于获取字符的数值,它不仅能处理 '0''9',还能处理十六进制的字符(如 'A', 'a' 等)。

public class CharDigitToIntExample {
    public static void main(String[] args) {
        char ch1 = '5';
        char ch2 = '9';
        char ch3 = 'A'; // 十六进制的 10
        char ch4 = 'a'; // 十六进制的 10
        int num1 = Character.getNumericValue(ch1);
        int num2 = Character.getNumericValue(ch2);
        int num3 = Character.getNumericValue(ch3);
        int num4 = Character.getNumericValue(ch4);
        System.out.println("字符 '" + ch1 + "' 的数值是: " + num1); // 输出: 5
        System.out.println("字符 '" + ch2 + "' 的数值是: " + num2); // 输出: 9
        System.out.println("字符 '" + ch3 + "' 的数值是: " + num3); // 输出: 10
        System.out.println("字符 '" + ch4 + "' 的数值是: " + num4); // 输出: 10
    }
}

使用减法运算(仅适用于 '0'-'9')

这是一种非常经典和高效的技巧,利用了字符在 ASCII/Unicode 表中连续排列的特性,数字字符 '0''9' 的码点是连续的。

用任意数字字符减去字符 '0',就能得到它对应的数值。

Java中char转int的具体方法是什么?-图3
(图片来源网络,侵删)
public class CharSubtractExample {
    public static void main(String[] args) {
        char ch = '7';
        // '7' 的码点是 55, '0' 的码点是 48
        // 55 - 48 = 7
        int num = ch - '0';
        System.out.println("字符 '" + ch + "' 的数值是: " + num); // 输出: 7
    }
}

注意:此方法适用于 '0''9' 的字符,如果传入 'A',结果会是 65 - 48 = 17,这通常不是你想要的结果。

使用 String.parseInt() (间接方法)

你也可以先将 char 包装成 String,然后使用 Integer.parseInt() 来解析它。

public class CharParseIntExample {
    public static void main(String[] args) {
        char ch = '8';
        // 将 char 转换为 String,再解析为 int
        int num = Integer.parseInt(String.valueOf(ch));
        System.out.println("字符 '" + ch + "' 的数值是: " + num); // 输出: 8
    }
}

这种方法虽然可行,但比前两种方法更啰嗦,性能也稍差,因为它涉及到了额外的 String 对象创建和解析过程。


总结与对比

场景 目标 推荐方法 示例 (char ch = 'A')
获取字符编码 'A' 转换为 65 直接赋值 int code = ch;
获取字符编码 'A' 转换为 65 强制转换 int code = (int) ch;
数字字符转数值 '5' 转换为 5 Character.getNumericValue() int num = Character.getNumericValue(ch);
数字字符转数值 '5' 转换为 5 减法运算 int num = ch - '0';
数字字符转数值 '5' 转换为 5 Integer.parseInt() int num = Integer.parseInt(String.valueOf(ch));

如何选择?

  • 如果你想得到字符在 Unicode 表中的位置(ASCII 码是其子集),直接用 int code = myChar; 即可。
  • 如果你想得到字符本身所代表的数字'1' -> 1),首选 Character.getNumericValue(),因为它最清晰且功能全面,如果你能确保字符一定是 '0''9'ch - '0' 是一个非常高效且简洁的技巧。
分享:
扫描分享到社交APP
上一篇
下一篇