杰瑞科技汇

Java中char转int的具体方法有哪些?

  1. 获取字符的 ASCII (或 Unicode) 编码值 (最常见)
  2. 将字符 '0' 到 '9' 转换为对应的数字 0 到 9

获取字符的 Unicode 编码值 (直接强制类型转换)

这是最直接、最常用的方法,在 Java 中,char 类型本质上是 16 位的无符号整数,它使用的是 UTF-16 编码,代表了 Unicode 字集中的字符,你可以直接将 char 强制转换为 int,得到的就是该字符对应的 Unicode 码点(code point)。

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

语法

int intValue = (int) charValue;

示例代码

public class CharToIntExample {
    public static void main(String[] args) {
        char ch1 = 'A';
        char ch2 = 'a';
        char ch3 = '0'; // 字符 '0'
        char ch4 = '中'; // 一个中文字符
        char ch5 = '$';
        // 将 char 强制转换为 int
        int int1 = (int) ch1;
        int int2 = (int) ch2;
        int int3 = (int) ch3;
        int int4 = (int) ch4;
        int int5 = (int) ch5;
        System.out.println("字符 '" + ch1 + "' 的 Unicode 编码是: " + int1); // 输出: 65
        System.out.println("字符 '" + ch2 + "' 的 Unicode 编码是: " + int2); // 输出: 97
        System.out.println("字符 '" + ch3 + "' 的 Unicode 编码是: " + int3); // 输出: 48
        System.out.println("字符 '" + ch4 + "' 的 Unicode 编码是: " + int4); // 输出: 20013
        System.out.println("字符 '" + ch5 + "' 的 Unicode 编码是: " + int5); // 输出: 36
    }
}

解释:

  • 'A' 的 Unicode 编码是 65。
  • 'a' 的 Unicode 编码是 97。
  • '0' 的 Unicode 编码是 48,而不是数字 0,这一点非常重要,也是初学者常犯的错误。
  • '中' 的 Unicode 编码是 20013。
  • 的 Unicode 编码是 36。

将数字字符转换为对应的整数值

当你有一个代表数字的字符(如 '5'),并且你希望得到它对应的整数值 5 时,不能直接使用强制类型转换,你需要进行数学运算。

原理

在 ASCII 和 Unicode 编码表中,数字字符 '0''9' 的编码是连续的。'0' 的编码是 48,'1' 是 49,...,'9' 是 57。 任何一个数字字符减去字符 '0',就能得到它对应的数值。

语法

int number = charValue - '0';

示例代码

public class CharDigitToIntExample {
    public static void main(String[] args) {
        char digitChar = '7';
        // 错误的方式:这会得到字符 '7' 的 Unicode 编码 55
        int wrongWay = (int) digitChar;
        System.out.println("强制转换得到: " + wrongWay); // 输出: 55
        // 正确的方式:通过减去 '0' 来得到数字 7
        int correctWay = digitChar - '0';
        System.out.println("减去 '0' 得到: " + correctWay); // 输出: 7
        // 另一个例子
        char anotherChar = '3';
        int number = anotherChar - '0';
        System.out.println("字符 '" + anotherChar + "' 转换为数字是: " + number); // 输出: 3
    }
}

总结与最佳实践

转换目标 方法 代码示例 输出 (当 ch='A')
获取字符的编码值 强制类型转换 int val = (int) ch; 65
获取字符的编码值 使用 Character.getNumericValue() int val = Character.getNumericValue(ch); 65 (或 -1 对于非数字字符)
将数字字符转数字 数学减法 int num = ch - '0'; ch='A',会得到 65-48=17 (通常不是你想要的)
将数字字符转数字 使用 Character.getNumericValue() int num = Character.getNumericValue(ch); 10 (对于 'A') 或 -1 (对于非数字字符)
将数字字符转数字 使用 Character.digit() int num = Character.digit(ch, 10); -1 (对于 'A')

核心要点:

Java中char转int的具体方法有哪些?-图2
(图片来源网络,侵删)
  1. 明确你的目的:你是想得到字符的内部编码,还是想把它当作一个数字来处理?
  2. 获取编码:如果目的是获取编码值,使用 (int) ch 是最快、最直接的方式。
  3. 转换数字字符:如果目的是将 '5' 变成 5,必须使用 ch - '0',这是最标准、最安全的方法。
  4. Character 类方法
    • Character.getNumericValue(char ch):这个方法很智能,它会尝试将字符转换为其数值,对于数字字符 '0'-'9',它返回 0-9,对于十六进制字母 'a'-'f''A'-'F',它返回 10-15,对于其他字符,返回 -1。
    • Character.digit(char ch, int radix):类似于 getNumericValue,但它可以指定进制(radix)。Character.digit('A', 16) 会返回 10

对于初学者来说,记住以下两点就足够了:

  • 想看字符在电脑里存的号码是什么? -> (int) 'A'
  • 想把字符 '9' 变成数字 9? -> '9' - '0'
Java中char转int的具体方法有哪些?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇