这个问题非常简单,但是很长一段时间它一直困扰着我。
如果我想将一个数字作为字符存储在一个字符变量中,我只能使用数字0到9,因为这些是在ASCII表中指定的。 但如果我希望存储大于9的数字,我不能直接这样做。 例如。
char ch='19';
int n=(int)ch;
System.out.println(n);
这给我一个错误,就在第一行。
还有其他方法可以将大于9的数字存储到char变量中吗?
提前致谢...
答案 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中不是计算的良好基础。