JAVA - final与static final

本文详细介绍了Java中final关键字的多种用途及其对变量、方法及类的影响。解释了final如何限制变量赋值、防止方法被重写以及阻止类被继承。同时,文章还探讨了static final的特殊用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final的用法:

* final关键字修饰基本类型变量

final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的,因此变量也必须在声明时或者在构造方法中被初始化(不会默认初始化,默认初始化只有普通的非final属性,,否则出现编译错误

编译器在编译时期就对该数据进行替换甚至执行计算。

public class Test{
final int m = 0;
	final int n;
	public TestFinal(int n) {
		this.n = n;
	}	
}

* final关键字修饰引用类型变量

final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。

* final关键字修饰方法参数

final关键字修饰修饰方法参数时,表示可以读取使用该参数,但是无法改变该参数的值。

public void test(final int i) {
    //i++;    //i是final类型的,值不允许改变的.
    System.out.print(i);
}

* final关键字修饰方法

final关键字修饰一个函数的时候,该函数不能被重写(override)。

使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

* final关键字修饰

final关键字修饰一个类的时候,该类不能被继承。

注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

static final的用法:

同时使用static和final修饰的成员在内存中只占据一段不能改变的存储空间。

static final修饰属性表示一旦赋值后不能修改其引用,基本类型常量不能修改其值static final修饰属性只能在两种情况下初始化:定义时或类的静态块中。(特别对于初始化时候调用抛出异常的构造函数,初始化方法如下,特别是在实现单例模式时

class A
{ 
	private final static A a;
	private final static int b;;
	static
	{
		try
		{
			b = 1;
			a = new A();
		}catch(Exception e)
		{
			throw new RuntimeException(e);          //必须有,不然不能完成常量的正确初始化
		}
	}
	A() throws Exception{}
}

static final修饰方法表示该方法不能重写,可以在不new对象的情况下调用

 

常量的修饰符一般为: public static final

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值