Java中的final 修饰参数问题
今天面试做了一道这样的题目
public void test(final int[] args){
if(args.length>1){
args[0]=5;
}
}
询问这段代码有没有出题。
这段代码是可以通过测试的,并没有问题。
final在修饰引用数据类型的时候,是指变量的引用不能改变,但是可以对这个引用的内容进行修改,所以上文的代码是正确的。而下面是错误的说法。
public void test(final int[] args){
if(args.length>1){
args[0]=5;
}
int[] a={1,2,3};
// args=a;//编译错误
args={1,3};//不允许
}
如果final修饰的是基本数据类型,那么在这个方法内,这个参数就不能再进行更改。
public void test(final int i){
i=200;//编译不能通过
}
浙公网安备 33010602011771号