Java中的final关键字

我们都知道Java中final关键字的用法:

  1. 被fiinal修饰的类不能被继承。
  2. 被final修饰的方法不能被重写。
  3. 被final修饰的变量不能被修改。

        然而,被final修饰的变量不能被修改,这个怎么理解呢,是变量的值不能被修改,还是引用不能被修改呢,引用的对象可以被修改吗,我们来看代码:

package com.yuwl.jdk;
/**
 * 测试内容:final修饰变量
 * @author Yuwl
 * 2018-3-18
 */
public class FinalTest {

	private final int one = 1;
	private final Value two = new Value(2);
	private final int[] array = new int[]{1,2,3,4};
	
	public static void main(String[] args) {
		FinalTest ft = new FinalTest();
		//ft.one = 2;	//被final修饰的变量值不能更改,编译报错
		
		Value v3 = new Value(3);	
		//ft.two = v3;	//被final修饰的引用不能更改,编译报错
		
		int n = ft.two.setValue(3);	//被final修饰的引用不能更改,但引用的对象内容可以修改
		
		int[] array2 = new int[]{1,2,3,4,5};
		//array = array2;	//被final修饰的数组引用不能更改,编译报错
		
		ft.array[1] = 5;	//被final修饰的数组引用不能更改,但引用的数组内容可以修改
	}

}

class Value {
	
	private int i;
	
	public Value(int i) {
		this.i = i;
	}
	
	public int setValue(int num) {
		this.i = num;
		return this.i;
	}
}

 通过以上代码测试,可以总结:被final修饰的变量值,引用不能修改,但引用的对象可以被修改。

猜你喜欢

转载自yuwenlin.iteye.com/blog/2413484