final

简介: final 类似 c 的 const 。1.用于字段 无论作用于基本类型还是引用类型,效果都是,不允许对字段再次赋值。 java没有提供约束对象不变的机制。 final修饰变量,并不意味着变量的值要在编译期间确定。见下面代码。class A{ private static Random rand=new Random(); private final int i1=rand.ne
final 类似 c 的 const 。

1.用于字段

无论作用于基本类型还是引用类型,效果都是,不允许对字段再次赋值

java没有提供约束对象不变的机制。
final修饰变量,并不意味着变量的值要在编译期间确定。见下面代码。
class A{
	private static Random rand=new Random();
	private final int i1=rand.nextInt();//运行期间确定的final成员
}
class B{
	private final int i1;	//定义处可以不为final成员赋值
	public B(int x){	
		i1=x;		//运行期间确定的final成员
	}
}

2.用于方法

具体又分两种情况。

2.1 方法主体

同时具有两个作用——禁止子类重写与编译器的内联优化。

2.2 函数形参

若形参用 final修饰,与final作用于变量效果一致。感觉没什么实际意义。

public final void f(){}
void fun2(final A reA){
	//reA=new A(); //illeagl,reA is final
}

3.用于类

不允许其他类继承,即该类不能拥有子类。

除了用final,将构造函数设为私有也可以达到同样的效果。


目录
相关文章
|
3月前
|
消息中间件 Kubernetes NoSQL
c++11 关键字 override 与 final
c++11 关键字 override 与 final
|
4月前
|
PHP
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
29 0
|
1月前
|
程序员
final
final
13 0
|
2月前
|
编译器 C++
C++新特性 override和final
C++新特性 override和final
|
9月前
|
Java
JAVA中static、final、static final的区别
JAVA中static、final、static final的区别
|
8月前
|
Java
Java 权限修饰符(private、protected、public、默认、final、static)
Java 权限修饰符(private、protected、public、默认、final、static)
111 0
|
9月前
1. Final 有什么用?
Final(最终)一词可以在不同的语境中有不同的用途和含义。以下是对于"Final"的一般解释,以及一些常见的用途
32 0
|
9月前
静态数据static
静态数据static
31 0
|
11月前
static
static
60 0
private static final long serialVersionUID = 5461344781588144485L;是什么意思,后面的号码是如何生成的
serialVersionUID 用来表明类的不同版本间的兼容性。 序列化的时候,被序列化的类要有一个唯一标记。客户端和服务端必须需要同一个对象,serialVersionUID的唯一值判定其为同一个对象。 后面的号码是自动生成的,只要是唯一的就行,通常为1,此行语句去掉在练习的时候也没有什么影响,只不过此实例类会报一个警告。将鼠标放到警告上,选择第一个解决方案,就会重新加上此行语句,后面的数字和原先的可能会不一样。
126 0
private static final long serialVersionUID = 5461344781588144485L;是什么意思,后面的号码是如何生成的