黑马程序员技术交流社区
标题:
类型转换问题
[打印本页]
作者:
松毛
时间:
2013-11-10 07:26
标题:
类型转换问题
这个语句byte b = 1; b = ++b; 能够编译通过。
请问一下为什么,它的类型是怎样转换的?
作者:
蓝雨星空
时间:
2013-11-10 08:54
执行 byte b=1 这句时,java虚拟机自动对 1 这个常量进行检查,没有超出byte类型的范围,然后赋值给b。
执行 b=++b 这句时,变量 b 进行自增运算,但没有和其它类型的变量或常量进行运算,所以 b 并没有发生类型提升的情况,最后把 b 的值赋给 b
作者:
hubby
时间:
2013-11-10 08:58
这个没有转换,就是b自增1,但是如果写b=b+1的话后面的1就是个int型的,那时候才要转换类型,虽然都是加1,但是性质不一样。
作者:
Shimano
时间:
2013-11-10 10:37
首先,自增自减运算是一种特殊的算术运算。既然是特殊,绝对有不同
--------------------自增自减运算实例代码-----------------------------
public class ZiZengJian {
public static void main(String[] args){
byte b1 = 5; //定义一个byte类型的变量
byte b2 = (byte)(b1 + 1);//进行强制类型转换
System.out.println("使用加运算符的结果是"+b2);
byte b3 = 5; //定义一个byte类型的变量
byte b4 = ++b3; //进行自增运算,不需要类型转换
}
}
-------------------------------------------------------------
在该程序中,当对byte类型执行+1运算时,由于java默认整数类型为int,
所以1为int类型,加运算后的结果也是int类型,从而需要进行强制类型转换
而在使用自增自减运算时,并不需要强制类型转换。
使用自增自减运算时,并不进行类型的提升,
操作前数值是什么类型,操作后的类型仍然是什么类型
作者:
杨增坤
时间:
2013-11-10 10:39
++b: b=b+1; b
是
byte
,
1
是
byte
类型,
这是
++
运算符的特点
b
本来就是
byte
类型,所以这正确。
作者:
黄炳期
时间:
2013-11-10 10:40
帖子已分类,若仍有疑惑,可重新提问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2