用户从键盘输入的符号信息通常需要转换为数字,或者程序员应该从中获取数字。Java 中有一些方法可以做到这一点。在本文中,我们将找出帮助我们将 char 值转换为 int 值的方法。
隐式类型转换
类型转换是将一种数据类型的值转换为另一种数据类型的值的过程。类型转换可以是手动的,也可以是自动的,具体取决于类型。类型应该兼容。在 Java 中,我们有两种类型的类型转换,显式和隐式。只有当我们将变量从“较大”类型转换为“较小”类型(例如,从
int
到
long
). 如果我们想将一个 char 类型的变量转换为 int 数据类型,通常我们需要从 ASCII 表中获取它的等效值。每个可以数字输入的字母表或符号都有一个对应的唯一整数。例如,字母“A”的 ASCII 代码为 65。通过类型转换,我们强制将字符值转换为其等效的 ASCII 整数代码。这是我们使用类型转换的 Java char 到 int 示例。
Java char 到 int 示例(使用类型转换)
package charToInt;
public class Implicit {
public static void main(String[] args) {
char char1 = 'A';
char char2 = 'a';
int x = char1;
int y = char2;
System.out.println("ASCII value of '" + char1 + "' is " + x);
System.out.println("ASCII value of '" + char2 + "' is " + y);
'A' 的 ASCII 值是 65 'a' 的 ASCII 值是 97
显式类型转换
正如我们在上面看到的,在 char 到 int 转换的情况下,没有必要显式地这样做,因为 2 个字节用于存储 char,而 4 个字节用于存储 int。即int类型是“大”。尽管如此,作为练习,我们可以将 char 变量显式转换为整数。对于此操作,我们在括号中提到 (int)。
package charToInt;
public class Explicit {
public static void main(String[] args) {
char char1 = 'A';
System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
'A' 的 ASCII 值是 65
使用 getNumericValue()
getNumericValue()
的工作方式类似于类型转换,但它不是遵循 ASCII 表,而是遵循 Unicode 编码标准。ASCII 只能表示一组特定的符号和字符,例如拉丁字母(加上一些国家字母符号)、数字、标点符号和控制字符。Unicode 包含超过一百万个值,其中包含世界上每种语言的字母和符号。例如,A在Unicode中的值为\u0041,相当于数值10。如果该字符没有数值,则该方法返回-1。使用此方法可以方便地返回非负整数。
package charToInt;
public class UsingGetNumericValue {
public static void main(String[] args) {
char char1 = '7';
char char2 = 'A';
char char3 = '*';
int x = Character.getNumericValue(char1);
int y = Character.getNumericValue(char2);
int z = Character.getNumericValue(char3);
System.out.println("The Unicode value of '" + char1 + "' is " + x);
System.out.println("The Unicode value of '" + char2 + "' is " + y);
System.out.println("The Unicode value of '" + char3 + "' is " + z);
'7' 的 Unicode 值为 7 'A' 的 Unicode 值为 10 '*' 的 Unicode 值为 -1
使用 ParseInt()
ParseInt()
是另一种将 char 转换为 int 的方法。它还广泛用于在其他数字数据类型(如浮点数、双精度数和长整型)之间进行交叉转换。
ParseInt()
需要至少一个参数,最多两个参数。第一个参数是我们要转换的值的变量名。第二个参数是基数,它指的是十进制、八进制、十六进制等的基值。由于
ParseInt()
转换数据类型的能力也考虑了数字系统,因此它是转换“数字”的最佳选择” 在 Java 中将 char 转换为 int。如果要使用此方法,请牢记两点。
解析整数()
方法只接受 String 参数,因此您应该首先将 char 转换为 String(使用
String.valueOf
)。您不能使用
parseInt()
转换字母表或其他符号,但存储在 char 数据类型中的数值除外。如果您输入非数字值,则会出现错误。这是一个 Java 示例:
package charToInt;
public class ParseInt {
public static void main(String args[]){
char ch = '7';
int n = Integer.parseInt(String.valueOf(ch));
System.out.println(n);
让我们尝试使用 parseInt 吨非数字值:
package charToInt;
public class ParseInt {
public static void main(String args[]){
char ch = 'q';
int n = Integer.parseInt(String.valueOf(ch));
System.out.println(n);
线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“q”在 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) 在 java.base/java.lang.Integer.parseInt (Integer.java:652) 在 java.base/java.lang.Integer.parseInt(Integer.java:770) 在 charToInt.ValueOf.main(ValueOf.java:6)
减去'0'
有一种非常简单的方法可以将字符转换为整数。为此,只需从字符中减去字符“0”的 ASCII 值即可。例如,要从字符“7”获取 int 7:
int intValue = '7'-' 0 ';
请注意,这适用于专门为整数字符获取 int 值!例如,如果从“A”中减去“0”,该方法将只返回零的 ASCII 代码与字母 A 之间的差异。这是一个示例。
package charToInt;
public class SubtractingZero {
public static void main(String[] args) {
char char1 = '7';
char char2 = 'A';
char char3 = '*';
System.out.println(char1);
System.out.println(char1 - '0');
System.out.println(char2);
System.out.println(char2 - '0');
System.out.println(char3);
System.out.println(char3 - '0');
7 7 17 * -6
结论
如果您需要在 Java 中将 char 转换为 int,请使用以下方法之一:
隐式类型转换 //获取 ASCII 值
字符.getNumericValue()
Integer.parseInt()
//与 String.valueOf() 配对
)
减去“0”//仅适用于整数数值
您还可以进行显式类型转换。然而,这是一个多余的操作:它不是必需的,但只适用于 Java。
CodeGym 是一个从零开始学习 Java 语言编程的在线课程。本课程是初学者掌握 Java 语言的绝佳方式。它包含 1200 多个可即时验证的任务,以及基本范围内的 Java 基础理论。为了帮助你在教育上取得成功,我们实现了一组激励功能:小测验、编码项目以及有关高效学习和 Java 语言开发人员职业方面的内容。