Java字符需要注意的地方
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、Java字符
在java中编辑如下代码
char a = 1;
char b = '1';
System.out.println(a);
System.out.println(b);
得出结果
1
可见Java中1和’1’是完全不同的东西,1指的是字符a对应的ASCII码值为1,'1’指的是字符b的字符即为1。
现在思考一个问题?我们有两个字符,字符a为’2’,字符b为’1’,那么他们相加结果为多少?
字符进行相加时
char a = '2';
char b = '1';
int c = (a + b);
System.out.println("c的int值:" + c);
char d = (char) c;
System.out.println("c的char值:" + d);
结果为
c的int值:99
c的char值:c
因为字符a对应的字符的ASCII码值为49,2对应的ASCII码值为50,因此和为99,而ASCII码值为99对应的字符是c,因此’1’+'2’结果为99,其对应的字符为c。
新的问题又来了,一道算法题,给两个数,让计算其结果,但注意给的两个数都是字符,要求计算这两个数之和,了、如题中给出字符’1’和字符’2’,计算结果应该为3,如何计算?
char a = '2';
char b = '1';
int c = a -'0';
int d = b - '0';
System.out.println("c = " + c);
System.out.println("d = " + d);
int res = c + d;
System.out.println("res = " + res);
结果为
c = 2
d = 1
res = 3
分析:a为’2’,实际ASCII码值为50,b为’1’,实际ASCII码值为49,字符’0’的实际ASCII码值为48,那么’a’ - '0’即为2,‘b’ - '1’即为1,那么即可计算出1 + 2 = 3了,那如果要将3保存为字符各式返回呢?
int res = 3;
System.out.println("res = " + res);
char res1 = (char) res;
char res2 = (char) (res + '0');
System.out.println("res1 == " + res1);
System.out.println("res2 == " + res2);
结果为
res = 3
res1 ==
res2 == 3
因此我们可知,如果将一个int类型的3转成字符’3’,不能直接进行强制类型转换,而是应该加上字符’0’。
总结
其实Java字符所需要的注意的就两点:
1、1和’1’的区别。为一个字符变量赋值,如果赋值为1,代表该字符变量对应的ASCII码值为1,在ASCII码表中能找到该字符到底是什么,如果赋值为’1’,代表该字符变量所对应的字符即为’1’,其对应的ASCII码值也可在表中找到。
2、数字字符与数字的转换。即’1’与1的互相转换。刷题网站(大数加法)上可能也经常会出现计算数字字符串之和这一类型的题目,其中就蕴涵着数字字符与数字的转换。