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;//编译不能通过
		 
	 }
		

 

posted on 2018-01-25 22:56  feettable  阅读(791)  评论(0编辑  收藏  举报