黑马程序员技术交流社区

标题: char 和 int 转换方式的区别? [打印本页]

作者: noiary    时间: 2014-11-1 11:03
标题: char 和 int 转换方式的区别?
刚百度查了下, char类型和int类型互相转换可以
自由转换
char ch = 'a'; int i = ch;

也可以强制转换
char ch = 'a'; int i = (int)ch;

有什么区别吗?
作者: 小爷邱烙    时间: 2014-11-1 11:23
没区别,强制类型转换是类型占字节数较大转较小的时候用的
char占2个字节,int4个字节,所以自动类型转换即可,没必要强转
另外说一下Integer.valueOf(),里面传'1',会先自动转成int,结果是49;传"1"才会当成字符串,结果是1
作者: noiary    时间: 2014-11-1 11:59
小爷邱烙 发表于 2014-11-1 11:23
没区别,强制类型转换是类型占字节数较大转较小的时候用的
char占2个字节,int4个字节,所以自动类型转换即 ...

初学者表示Java的世界各种未知...
作者: cxdzh    时间: 2014-11-1 12:12
noiary 发表于 2014-11-1 11:59
初学者表示Java的世界各种未知...

                char ch='a';
                int a=5000;
                System.out.println((int)ch);
                System.out.println((char)a);
char 占用1个字节,取值的范围是-2^7~2^7-1=-128~127;
int占用4个字节,取值范围远远大于char,
所以char转int,会将符号变成整数,
整数强转成char类型不会报错,但会有数据丢失
作者: 小鸡捉你    时间: 2014-11-1 12:14
说到区别,就是char类型占两个字节,int类型占四个字节,无论是Java 还是C,都是低往高转不需要强制转换,高往低转需要,char类型转int类型其实转换后的int值仅利用低两个字节,高两个字节被自动补全了,int转char类型,需要强转,因为要丢失高两个字节的数据
作者: noiary    时间: 2014-11-1 12:48
cxdzh 发表于 2014-11-1 12:12
char ch='a';
                int a=5000;
                System.out.println((int)ch);

懂起~ 感谢   

不过char是2个字节吧{:3_56:}
作者: noiary    时间: 2014-11-1 12:49
小鸡捉你 发表于 2014-11-1 12:14
说到区别,就是char类型占两个字节,int类型占四个字节,无论是Java 还是C,都是低往高转不需要强制转换, ...

完全明白了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2