final定义的变量 传递

byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6; 
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);

关于上面代码片段叙述正确的是() 

A.输出结果:13   

B.语句:b6=b4+b5编译出错

C.语句:b3=b1+b2编译出错

D.运行期抛出异常

答案:C


首先,java中基本数据类型参与运算是要符合以下规则:

1.所有的byte型,short型和 char型 将被提升到int

2.如果一个操作数是long型,计算结果就是long型

3.如果一个操作数是float型,计算结果就是float型

4.如果一个操作数是double型,计算结果就是double型


final是java中的一个关键字,可以用来修饰类,方法,成员变量和本地变量,如果用final修饰引用,那么这个引用将不能被改变.使用final修饰变量,则这个变量只是可读不可写的.


分析:

b6=b4+b5;

b4,b5虽然都是byte类型的数据,但是它们都被final修饰,所以参与运算时不会改变数据类型,所以b4+b5=b6是可以通过编译,也可以进行计算的

b3=b1+b2

b1,b2都是byte类型,并且没有被final修饰,所以在参与运算的过程中都会转换成int类型的变量,因此正确的写法应该是b3=(byte)(b1+b2);


你可能感兴趣的:(java基础)