A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© noiary 高级黑马   /  2014-11-1 11:03  /  2435 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚百度查了下, char类型和int类型互相转换可以
自由转换
char ch = 'a'; int i = ch;

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

有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

6 个回复

倒序浏览
没区别,强制类型转换是类型占字节数较大转较小的时候用的
char占2个字节,int4个字节,所以自动类型转换即可,没必要强转
另外说一下Integer.valueOf(),里面传'1',会先自动转成int,结果是49;传"1"才会当成字符串,结果是1

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
小爷邱烙 发表于 2014-11-1 11:23
没区别,强制类型转换是类型占字节数较大转较小的时候用的
char占2个字节,int4个字节,所以自动类型转换即 ...

初学者表示Java的世界各种未知...
回复 使用道具 举报
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类型不会报错,但会有数据丢失

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
说到区别,就是char类型占两个字节,int类型占四个字节,无论是Java 还是C,都是低往高转不需要强制转换,高往低转需要,char类型转int类型其实转换后的int值仅利用低两个字节,高两个字节被自动补全了,int转char类型,需要强转,因为要丢失高两个字节的数据

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
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:50
7#
小鸡捉你 发表于 2014-11-1 12:14
说到区别,就是char类型占两个字节,int类型占四个字节,无论是Java 还是C,都是低往高转不需要强制转换, ...

完全明白了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马