关于Java中char,int的互转

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

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

        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

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

你可能感兴趣的:(基础知识)