大家都知道final是java中的修饰符之一。
用来修饰类,方法或变量。
本文不讨论以上用法,至少讨论啥呢,请看以下代码:
[b]结论:被fianl修饰的变量不会自动改变类型(越界情况特殊考虑)[/b]
用来修饰类,方法或变量。
本文不讨论以上用法,至少讨论啥呢,请看以下代码:
public class Main{
static void normalAdd(){
byte b1=1,b2=1,b3;
// b3=b1+b2;//这样写会导致编译无法通过,因为b1+b2会自动升格成int型,int必须被强转才能赋值给byte
b3=(byte) (b1+b2);//这样写是正确的
}
static void finalAdd(){
final byte b1=1,b2=1,b3;
b3=b1+b2;//看,这里不出错了。因为b1和b2都为final型,不会提升数据类型。
}
static void finalAdd2(){
final byte b1=127,b2=1,b3;
// b3=b1+b2;//这样写依然会导致编译无法通过。虽然b1和b2都是final型,但是两数相加之后为128,超出了byte的范围。
b3=(byte) (b1+b2);//所以此处依然要强转。
}
}
[b]结论:被fianl修饰的变量不会自动改变类型(越界情况特殊考虑)[/b]