Java 为什么';t整数。数字字符的值是否返回其值?
我不得不说,这是一个错误,因为我试图将Java 为什么';t整数。数字字符的值是否返回其值?,java,sqldatatypes,Java,Sqldatatypes,我不得不说,这是一个错误,因为我试图将字符串转换为整数,但我没有意识到它是字符类型,而不是整数 但是不知何故,Integer.valueOf仍然可以使用字符参数运行,尽管在中没有提到这一点 虽然它适用于“2”的字符串参数,但它不提供字符参数'2'的预期结果。为什么会发生这种情况 我想知道我是否错过了什么?为什么它返回50而不是2 谢谢 好的,我检查了ASCII表,它返回50,因为字符'2'的索引是50。整数。valueOf(char))给出了ASCII值 Integer.valueOf('2'
字符串
转换为整数
,但我没有意识到它是字符
类型,而不是整数
但是不知何故,Integer.valueOf
仍然可以使用字符
参数运行,尽管在中没有提到这一点
虽然它适用于“2”
的字符串参数,但它不提供字符参数'2'
的预期结果。为什么会发生这种情况
我想知道我是否错过了什么?为什么它返回50而不是2
谢谢
好的,我检查了ASCII表,它返回50,因为字符'2'
的索引是50。整数。valueOf(char))给出了ASCII值
Integer.valueOf('2'); // >>> 50
如果你想得到数值
Character.getNumericValue('2')); // >>> 2
valueOf(char))给出ASCII值
Integer.valueOf('2'); // >>> 50
如果你想得到数值
Character.getNumericValue('2')); // >>> 2
ASCII表示法应该能为您提供一条线索,说明为什么会出现这种行为
请记住,整数和字符类是int和char基元类型的包装器。Integer.valueOf()
与字符一起工作的原因是存在对Integer的隐式转换。将字符强制转换为整数时,整数将保存该字符的ASCII码。基本类型也会发生同样的情况。比如说
Character yourChar = new Character('2');
Integer yourInt = Integer.valueOf(yourChar); //Implicit casting
char biz = '2';
int baz = (int)biz; //Explicit casting to int
System.out.println(baz);
System.out.println(yourInt);
这里,yourInt和baz的值都是50,因为这是“2”的ASCII码。隐式和显式转换做同样的事情
如果确实要将包含数字的字符转换为正确的整数,请使用Character.getNumericValue()。例如
现在myInt保存值2
就最佳实践而言,使用这种类型的隐式转换不是一个好主意。这并不能让你明白你想做什么 ASCII表示法应该能为您提供一条线索,说明为什么会出现这种行为
请记住,整数和字符类是int和char基元类型的包装器。Integer.valueOf()
与字符一起工作的原因是存在对Integer的隐式转换。将字符强制转换为整数时,整数将保存该字符的ASCII码。基本类型也会发生同样的情况。比如说
Character yourChar = new Character('2');
Integer yourInt = Integer.valueOf(yourChar); //Implicit casting
char biz = '2';
int baz = (int)biz; //Explicit casting to int
System.out.println(baz);
System.out.println(yourInt);
这里,yourInt和baz的值都是50,因为这是“2”的ASCII码。隐式和显式转换做同样的事情
如果确实要将包含数字的字符转换为正确的整数,请使用Character.getNumericValue()。例如
现在myInt保存值2
就最佳实践而言,使用这种类型的隐式转换不是一个好主意。这并不能让你明白你想做什么 你是对的,但我想问的是,为什么java允许Integer.valueOf(Character)
?这不是在JDK文档中编写的。嗯,数字2是作为字符而不是整数传递的。因此Integer.valueOf返回字符“2”的ASCII值。@JamesKPolk、char或Character在这里真的很重要吗?@Rowi:我不确定,可能不会自动取消装箱。@Code\u Control\u jxie0755您是对的,但我想问为什么java允许Integer.valueOf(Character)调用它是因为(JLS-5.1.2链接)(char
扩展为int
)。至于为什么允许这样做,'a'+1=='b'
(我希望这会有所帮助)。你是对的,但我问java为什么允许Integer.valueOf(Character)
?这不是JDK文档中写的。好吧,数字2作为字符而不是int传递。因此Integer.valueOf返回字符“2”的ASCII值。@JamesKPolk、char或Character在这里真的很重要吗?@Rowi:我不确定,可能不是自动取消装箱。@code\u Control\u jxie0755您是对的,但我问为什么java允许int它之所以调用(Character)是因为(JLS-5.1.2链接)(char
被扩展为int
)。至于为什么允许这样做,'a'+1=='b'
(我希望这会有所帮助).char是无符号16位整数类型。“2”只是指定整数50的另一种方式。“2”==50将返回true。“2”只是升级为int,因为char
是数字类型,尽管它看起来不像数字类型。char是无符号16位整数类型。“2”只是指定in的另一种方式teger 50。“2'==50将返回true。“2”仅升级为int,因为char
是数字类型,尽管它看起来不像数字类型。