类型运算细节(面试会考)

在类型转换会出现下列问题,阅读代码,并判断输出结果

          class VarDemo{
            public static void main(String[] args){
               byte b=4;
               b=3+7;
         
           System.out.println(b);  
     }                           
 }

此时的代码并没有问题,输出结果为10,

那么把代码做一下简单的修改试试

 1  class VarDemo{
 2       public static void main(String[] args){
 3            byte b=4;
 4            //b=3+7;
 5            byte b1=3;
 6            byte b2=4;
 7            b=b1+b2;
 8            System.out.println(b);  
 9      }                           
10  }

此时的的代码就会报错.从而运行不出来。这不也跟上面的没有区别吗??只是把3和4重新用变量定义一下,为什么就没有结果呢?

这个时候,变量b,是byte类型,赋值为4,已经强转一次了,byte类型取值范围为 -128~127,这个应该还记得吧,因为b1和b2也是byte型

所以在下面的运算语句中,不能判断b1和b2的值的范围,因为他们是变量,值是会变化的,如果超出byte类型范围怎么办?所以java就提示报错

那么我再把代码修改一下

 1  class VarDemo{
 2       public static void main(String[] args){
 3            int b=4;
 4            //b=3+7;
 5            byte b1=3;
 6            byte b2=4;
 7            b=b1+b2;
 8            System.out.println(b);  
 9      }                           
10  }

此时就能完全没问题了,第三行b改为int型,所以在输出语句判断时,无论你b1和b2变得多大,我b都能装得下,所以不会报错。遇见这种类型的题需要慎重!

猜你喜欢

转载自www.cnblogs.com/mengang/p/9479747.html