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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java有三种引用变量
1数组
2类
3接口
等于C++中的普通数据类型的指针变量
例如:
int[] arr=null;
自动类型提升
1不同数据类型运算
byte b=4;
int x=3;
x=x+b;
结果x=7
byte类型指一个字节,占八位;int类型占四个字节占32位
x+b的是时候,小的数据类型发生自动类型提升
即char to int  float to double 等短到长的提升
2byte类型自加
byte b=3;
b=b+1;
3是常量,默认为int类型

第一句是正确的,第二句是错误的。
第一句,int类型的3成功的自动转换为byte类型的b
第二句,1是int类型,b+1自动类型提升结果也是int类型,但是右边的int类型转换为左边的byte类型却失败了。
因为第一句右边是常量所以转换成功,第二句右边是变量所以自动转换失败,需要强制类型转换,但是有可能丢失精度。
第二句改为:b=byte(b+1);OK
短类型赋值给长类型无论是变量还是常量都会自动类型转换
长类型赋值给短类型只有常量会自动转换,变量是非法的。

评分

参与人数 1黑马币 +3 收起 理由
MVP + 3

查看全部评分

1 个回复

倒序浏览
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马