黑马程序员技术交流社区
标题: 怎样让char类型的东西转换成int类型 [打印本页]
作者: 温立华 时间: 2013-3-18 21:36
标题: 怎样让char类型的东西转换成int类型
本帖最后由 温立华 于 2013-3-19 09:31 编辑
怎样让char类型的东西转换成int类型?请举例论证
作者: 杨博 时间: 2013-3-18 21:40
char c = ‘A’;
int i = c;//自动转换为int型
//反过来只要作强制类型转换就行了
c = (char) I;
作者: 杨博 时间: 2013-3-18 21:40
char c = ‘A’;
int i = c;//自动转换为int型
//反过来只要作强制类型转换就行了
c = (char) I;
作者: 谢洋 时间: 2013-3-18 21:40
本帖最后由 谢洋 于 2013-3-18 22:01 编辑
编译器自动帮忙转了,char与int都是基本类型,char二字节,int四字节大小
作者: 孙晋学 时间: 2013-3-18 21:44
本帖最后由 孙晋学 于 2013-3-18 21:46 编辑
char类型占两个字节,int占四个字节,所以想到Java会自动转型
作者: lxww 时间: 2013-3-18 21:50
由低精度向高精度转换,会自动转换
由高精度向低精度转换,需要强制转换
但是强制转换可能出现问题1 损失精度 2.溢出
例如:char i='a';
int k=i;自动转换得到k=97.
反之如果int a=97;char b=a;b=(char)a
作者: 伍淑江 时间: 2013-3-18 21:50
整型的取值范围从小到大依次是 char----short------int-----long
因为char 比int 小,所以char类型的可以放到int中,不会造成精度损失,而且是自动转换
但char是字符类型的,所以转换成int类型时会输出字符所对应的ASCII码值
char x='a';
int b=x+1;
x是char类型,1是int类型,相加后自动转换成int类型赋值给b。
'a'对应的ASCII值是97,所以输出b的值就是98
作者: 董霁辉 时间: 2013-3-18 23:51
int高于char,当编译时,jdk会将char自动转为int,如:char x = 'z'; int y = 0; y = x;//x会自动转型为int 赋给y;楼上正解!
作者: 黑马-王鹏 时间: 2013-3-18 23:59
本帖最后由 黑马-王鹏 于 2013-3-19 00:00 编辑
- class Demo1
- {
- public static void main(String[] args)
- {
- char b = 3;
- b = 2+b;
- System.out.println(b);
- }
- }
复制代码 结果:编译不能通过,可能损失精度
分析原因:因为char在内存占2个字节,整数2在内存中占四个字节,当2+b在运算过程会把b自动提升到4个字节进行运算,运算完毕会把占四个字节的5赋予占两个字节的b,这样做就可能损失精度。
解决途径:(1)把 b = 2+b;改为: b = char(2+b);这叫强制转换,即把占四个字节的数int强制转换成char
(2)把 b = 2+b;改为:b+=2,因为b+=2在内存中完成了自动强制转换功能
作者: 祁振朋 时间: 2013-3-19 00:25
基本类型精度从大到小 double float long int short(char) byte
在类型转换时查看等号左右两边个如果左边高右边低,那么自动转。如果左边低右边高,强制转。
所以char c='a';
int i=c;
这样没问题,是自动转。输出的是a在unicode码表中对应的值。(java用的unicode码)
;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |