本帖最后由 黑马嗨嗨嗨 于 2016-11-13 09:54 编辑
在看视频的时候产生的一些疑惑。。
[AppleScript] 纯文本查看 复制代码 class Text
{
public static void main (String[] args)
{
byte b = 4;
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;
System.out.println(b);
}
} //在进行byte变量计算时,会报错,视频所讲是因为变量数值是变化的,有可能会超出byte的范围所以报错
//但当我‘b = (byte)(b1 + b2);’ 将变量计算强制类型转换成byte类型计算时,却可以计算
猜想:
其实byte不能进行变量计算,其实是因为系统将变量运算直接默认自动提升为int类型计算!!!超出了byte的承载范围,所以报错!!!(而并不是变量是不确定的值,可能会超出byte承载范围而报错)
发现:
[AppleScript] 纯文本查看 复制代码 class Text
{
public static void main (String[] args)
{
long b = 2147483647;
System.out.println(b);
}
}
//当我直接‘long b = 2147483647’是可以直接显示的,int类型的上限值是:2147483647。。。
//但当我 long b = 2147483648;却不能直接显示(超出了int类型上限值),必须在后面加‘l’, long b = 2147483648l;才能显示
//
猜想:
int默认类型,其实就是将里面的:数值、计算结果数值,都约束在int类型范围内,如果数值超出int类型范围,则必须进行标识!!!
求助:我的猜想是不是对的? 是视频上讲的有问题,还是我的猜想出了错?
|