------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------package com.itheima;
/**
* 第4题: 以下代码哪个是正确的?为什么?
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;正确
* @author AbuGe
*/
/*类型转换:(java是强类型的语言)
*byte:整型数据类型的一种,占8位从-128-127;
*整型默认是int型占32位,即4个字节
*a:
*1 + 1 先运算得到2, 是常量int型并在byte范围内,然后默认进行强制类型转换int为byte赋值给byte型的b,故可以
*b:
*byte = 1;是正确地,是常量int型并在byte范围内,默认直接将int型的1强制转换为byte型的,
*但是b = b + 1;
*将byte型的1与int型的1进行运算,自动进行类型提升,即byte的1提升为int型的,运算后
*得到的结果是个int型的占4个字节,不能将一个占四个字节的int型直接赋值给占一个字节的byte型
*可以更正为b = (byte)(b + 2);
*c:
*+=默认进行了强转b先+1然后再赋值给 b
*d:
*自增是可以的,默认会进行类型强制转换
*/
/**
* 第4题: 以下代码哪个是正确的?为什么?
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;正确
* @author AbuGe
*/
/*类型转换:(java是强类型的语言)
*byte:整型数据类型的一种,占8位从-128-127;
*整型默认是int型占32位,即4个字节
*a:
*1 + 1 先运算得到2, 是常量int型并在byte范围内,然后默认进行强制类型转换int为byte赋值给byte型的b,故可以
*b:
*byte = 1;是正确地,是常量int型并在byte范围内,默认直接将int型的1强制转换为byte型的,
*但是b = b + 1;
*将byte型的1与int型的1进行运算,自动进行类型提升,即byte的1提升为int型的,运算后
*得到的结果是个int型的占4个字节,不能将一个占四个字节的int型直接赋值给占一个字节的byte型
*可以更正为b = (byte)(b + 2);
*c:
*+=默认进行了强转b先+1然后再赋值给 b
*d:
*自增是可以的,默认会进行类型强制转换
*/