本帖最后由 FFF 于 2013-10-10 16:39 编辑
这个问题很简单,给你分享一下题目你就懂了。
题目如下:- package com.itheima;
- public class Temp10_10{
- /**
- * 以下代码哪个是正确的?为什么?
- *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;
- *
- *@FFF
- */
- public static void main(String arge[]){
-
- //编译通过。等价于byte = 2;因为右边是常量,其值固定,
- //若在byte型的范围内,编译器会自动完成强制转换;若不在范围内,
- //则编译失败。
- byte b = 1 + 1;
-
- //编译失败。b是变量,编译器编译时并不会知道b具体是多少
- //(编译时不会赋值,所以不知道b是多少),所以会认为b是所有可能的值,
- //因此b+1不能通过编译。正确为: b = (byte) (b + 1);
- byte b = 1;
- b= b + 1;
-
- //编译通过。+=是一个赋值运算符,加和赋值是一步完成的,
- //含有强制类型转换。等价于b = b = (byte)(b+1);
- byte b = 1;
- b = b += 1;
-
- //编译通过。++是自增运算符,自身加1再赋值给自己,
- //加1和赋值也是一步完成的,且不会改变变量的类型(含有强制类型转换)。
- byte b = 1;
- b = ++b;
- }
- }
复制代码 |
|