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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 扬帆起航fonnson 中级黑马   /  2016-7-1 13:11  /  797 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 扬帆起航fonnson 于 2016-7-1 13:30 编辑

我对byte short char int等基本数据类型之间的转换一直没有清晰的概念,今天百度发现了一个好帖子,搬运过来与大家分享。
先说一个比较特殊的boolean类型,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。

虚线箭头意为如果此int型数值尚在char、byte范围内,jvm会自定进行一次隐式类型转换,将此int型数值转换成char、byte类型。
char型其本身是unsigned型,同时具有两个字节,其数值范围是0 ~ 2^16-1,因为,这直接导致byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为负数的问题),同时,byte当然可以直接提升到short型。  byte p = 3; // 编译正确:int到byte编译过程中发生隐式类型转换  int  a = 3;  byte b = a; // 编译出错:cannot convert from int to byte  byte c = (byte) a; // 编译正确3是直接量,编译期间可以直接进行判定,后者a为一变量,需要到运行期间才能确定,也就是说,编译期间为以防万一,当然不可能编译通过了。此时,需要进行强制类型转换。摘了一些我的疑问,原帖有详细讲解带例子,地址:http://www.cnblogs.com/lwbqqyumidi/archive/2014/04/29/3700164.html

4 个回复

倒序浏览
  学习了
回复 使用道具 举报
很详细!!!
回复 使用道具 举报
好详细呀``涨姿势了
回复 使用道具 举报
学习了,mark
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马