黑马程序员技术交流社区

标题: 关于类型提升的问题 [打印本页]

作者: 梁珍珍    时间: 2013-7-19 00:39
标题: 关于类型提升的问题
以下代码哪个是正确的?为什么?
         *
         * a. byte b = 1 + 1;
         * b. byte b = 1; b = b + 1;
         * c. byte b = 1; b = b += 1;
         * d. byte b = 1; b = ++b;


作者: 张云杰    时间: 2013-7-19 00:56
byte b = 1 + 1;   //可以  两个int 的加减, 隐式转换

byte b = 1; b = b+1; // 不可以  byte 与int 相加, 最后赋值给 byte ,  最后类型应该是被提升成int  需要强转..

byte b  = 1; b = b+=1;   // 可以  b+=1;  自动做了转换 是byte 类型;

byte b = 1; b = ++b;  // 可以 与上面b+=1 一样
作者: 王峰230321    时间: 2013-7-19 07:57
可能是我理解的有问题吧- - ,
* a. byte b = 1 + 1;                1+1的结果是int。  =左边是byte  这个。 。 能行吗。?
* b. byte b = 1; b = b + 1;      这个肯定不对了, ,  道理一样,   =右边b+1  b自动提升成了int  但是返回去  回不去了
* c. byte b = 1; b = b += 1;    这个应该没问题  因为是一次运算 直接就得到结果了,  
* d. byte b = 1; b = ++b;        这个不太懂 。  感觉应该不行吧, ?    ++b  这个 是什么意思  自增吗。 ?  C语言里 行。  但是JAVA里 不是b++ 吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2