Char中的数字

时间:2014-12-28 07:56:19

标签: java types

这个问题非常简单,但是很长一段时间它一直困扰着我。

如果我想将一个数字作为字符存储在一个字符变量中,我只能使用数字0到9,因为这些是在ASCII表中指定的。 但如果我希望存储大于9的数字,我不能直接这样做。 例如。

char ch='19';
int n=(int)ch;
System.out.println(n); 

这给我一个错误,就在第一行。

还有其他方法可以将大于9的数字存储到char变量中吗?

提前致谢...

3 个答案:

答案 0 :(得分:1)

' 19'不是一个字符。 char是单个字符。

您可以在char变量中存储介于0和2 ^ 16-1之间的任何数字。该值代表一些单个字符。

char ch=19;

请注意,数值为19的字符与' 1'无关。或者' 9'字符。

答案 1 :(得分:0)

char具有整数等价物,即其字符代码。您可以在字符中存储最多2 ^ 16-1的值,但您需要删除引号。只需将整数值赋给char。

答案 2 :(得分:0)

在char中存储数字(用于计算)几乎总是一个坏主意。考虑一下:

 char a = 100;
 char b = 52;                    // Output
 System.out.println( b );        // 4
 System.out.println( a - b );    // 48
 char c = (char)(a - b);
 System.out.println( c );        // 0
 System.out.println( b - a );    // -48
 char d = (char)(b - a);
 System.out.println( d );        // ￐

一个人不会在char中存储“数字”:它(由于历史或最近计划的开发)更好地称为“字符枚举”:罗马字母,数字,特殊字符,希腊字母,西里尔字母,CJK语标无论如何,数学符号,变音符号,dingbats,...这是因为计算机存储二进制数这一事实对序数的使用。

char dig0 = '0';   // This stores the *character* we use as "zero". It has the ordinal 48.
char letA = 65;    // The character in let is what we call "capital A".

将数字'0'到'9'存储在它们的序号48到57中不是计算的良好基础。