今天面试做了一道这样的题目
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;//编译不能通过 }