有人能给我解释一下这是怎么回事吗:
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
这将打印i: 43 ch:-1
。这是否意味着我必须依靠原语转换来将char
转换为int
?那么,如何将Character
转换为Integer
呢?
编辑:是的,我知道如果Character.getNumericValue
不是一个数字值,它会返回-1
,这对我来说很有意义。问题是:为什么进行基元转换会返回43
Edit2: 43
是+
的ASCII码,但我希望演员阵容不会成功,就像getNumericValue
没有成功一样。否则,这意味着有两种语义等价的方法来执行相同的操作,但结果不同?
发布于 2013-10-16 02:08:18
Character.getNumericValue(c)
java.lang.Character.getNumericValue(char ch)
返回指定的int
字符表示的Unicode值。例如,字符'\u216C'
(罗马数字50 )将返回一个值为50的int。
大写('\u0041' through '\u005A')
、小写('\u0061' through '\u007A')
和全角变体('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A')
形式中的字母A-Z的数值介于10到35之间。这与Unicode规范无关,Unicode规范不会将数值分配给这些字符值。
此方法返回字符的数字值,作为非负的int值;
如果字符的数值不是非负整数;
-1,如果字符没有数值。
而here就是这个链接。
发布于 2013-10-16 02:07:11
正如文档中明确指出的那样,Character.getNumericValue()
以数字的形式返回字符的值。
如果字符不是数字,则返回-1
。
如果您想要获取已装箱的Character
对象的数字Unicode代码点,则需要首先对其进行拆箱:
int value = (int)c.charValue();
发布于 2015-08-26 17:09:03
请尝试以下任一选项。这些应该是有效的:
int a = Character.getNumericValue('3');
int a = Integer.parseInt(String.valueOf('3');
https://stackoverflow.com/questions/19388037
复制相似问题