关于Java中char,int的互转

来源:互联网 发布:手机文件粉碎软件 编辑:程序博客网 时间:2024/05/21 12:53

昨天做大疆的笔试题,遇到了这个蛋疼的问题,居然花了很多时间在这个小知识点上。下面总结下。

先来看看直接转换会得到什么结果:

        char c = 'a';        int i = c;        System.out.println("letter char to int: "+i);        char c2 = '9';        int i2 = c2;        System.out.println("numeric char to int: "+i2);        int i3 = 9;        char c3 = (char) i3;        System.out.println("single int to char: "+c3);        int i4 = 999999999;        char c4 = (char) i4;        System.out.println("big int to char: "+c4);

输出:

letter char to int: 97
numeric char to int: 57
single int to char: (这里其实输出了一个制表符,即ACSII为9对应的字符)
big int to char: 짿

会发现char直接转int会得到相应字符的ASCII码值。注意到上面的转换并没有加强制转换,这是因为byte、short、char在运算的时候本身就会先转换成int再进行运算。当然加上也可以,对结果不影响。
而int转char则必须要加上强制转换(小类型转大类型),转换结果也是将int值作为ACSII码值去找对应的字符。

如果想将一个字符9转换成数字9,或者将数字9转换成字符9,就要使用如下操作:

        char c = '9';        int i = Character.getNumericValue(c);        System.out.println("char to int: "+i);        int j = 9;        char c2 = (char) (j+48);        System.out.println("int to char: "+c2);

输出

char to int: 9
int to char: 9

注意:以上操作是不安全的,必须得首先确定能够转换,才能进行上述操作。实际使用时一定要判断。

原创粉丝点击