基础语法常见问题2——类型转换

  1. 画出基本数据类型变量之间自动类型提升的运算规则图。

答:当容量小的数据类型和容量大的数据类型的变量做运算:

表示数据范围从小到大
byte,char,short →int→long→float→double

注:当byte,char,short三种类型的变量做运算时,结果为int型。

  1. 说明基本数据类型变量之间强制类型转换的使用规则和强转可能出现的问题。

答:使用规则:需要使用强转符:( ) 。在“()”中写入想要强制转换的类型

可能出现的问题:可能导致精度损失。

  1. 判断是否能通过编译
  1. short s = 5; s = s-2; ?
  2. byte b = 3; b = b + 4; ?

b = (byte)(b+4); ?

3.char c = ‘a’; int i = 5; float d =0.314F; double result = c+i+d; ?

4.byte b = 5; short s = 3; short t = s + b; ?

答:1)题不能通过编译,因为在s=s-2时,无法从int转换到short类型。

2)题byte b = 3; b = b + 4;不能通过编译,原因和上一题一样,但是加上b = (byte)(b+4);可以通过编译,因为使用了强制转换。

3)题能通过编译。

4)题不能通过编译,因为byte,short做运算时,结果为int类型,所以在short t = s + b;会报错。

比较 +  与  +=

short s1 = 1; s1 = s1 + 1;有什么错?

short s1 = 1; s1 += 1;有什么错

答:short s1 = 1; s1 = s1 + 1; s1+1运算时会自动转换成int类型,无法将int类型转换为short类型,我们知道 short 与int 类型 所占的空间不同,int类型所占的空间大于short ,因为害怕因为大转小导致数据丢失,这就导致 int转short 必须强制转换。

对于short s1=1;s1+=1;来说,+=是Java语言规定的运算符,Java会对它进行特殊处理—强制类型转化(short s1 = (short)(s1+1)),因此可以正确编译。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值