欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的final关键字 博客分类: Java基础 javafinal

程序员文章站 2024-03-16 15:21:46
...

我们都知道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修饰的变量值,引用不能修改,但引用的对象可以被修改。

相关标签: java final