char和int的转换关系

大家都知道 char 是字符型类型,占用两个字节 可以存储一个汉字。另外特别的是 char 也是可以和int 类型互相转换的。

相信大家都碰到过下面这种情况:
一。将中文 “一” 转换成 int 类型,然后运行, 控制台得到的结果是 19968.

int b = '一';
System.out.println(b);


19968


二。将数值 “22545” 转换成 char 类型,然后运行, 控制台得到的结果是 中文“堑”.

char b = (char)22545;
System.out.println(b);


其实这样的转换得到的结果根本没有什么意义,我主要想说下为什么会出现这样的结果,好理性的去做自己的操作。真的想把 char 类型的数值正确的提取出来,最后会附上两种方法。

为什么他们互相转换会出现这样的结果呢?
主要原因出在它们两个在转换的过程中其实不是直接转换,而是中间有个 二进制的 传递 转换。怎么理解呢?将char 转换成int 的过程其实是:cha字符--------对应Ascii编码的二进制数--------转换成十进制数的int 类型值,例:

int b = '一';
System.out.println(b);

将中文 “一” 转换成int 类型,过程是:  ‘一’--------100111000000000--------19968


相反将int转换成char的过程其实是:int值--------对应Ascii编码的二进制数--------char字符,例:


char b = (char)22545;
System.out.println(b);

将 int 值 22545 转换成 char类型,过程是: 22545-----------101100000010001------堑



 把 char 类型的数值正确的提取出来的两种方法:

        char  numChar  =  '9' ;  
        int  intNum = (int)numChar;  
       
        //method 1:  
        char[] charArray = {numChar};  
        intNum = Integer.parseInt(new String(charArray));  
        System.out.println("method 1: " + numChar + ":" + intNum);  
          
        //method 2:  
        System.out.println("method 2: " + numChar + ":" + Character.getNumericValue(numChar));  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值