关键字final 和static

Posted SSimeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关键字final 和static相关的知识,希望对你有一定的参考价值。

1. final

final可以用来修饰类、方法、变量、基本类型以及引用类型。具体功能如下:

1.1 用final修饰类

用final修饰类,则表示该类不能被其它类继承。

//用final修饰的类不可以被继承
public final class Tes1 {
    // 用final修饰的变量必须赋值,并且不能再修改
	private final int i = 1;
}

1.2 用final修饰方法

用final修饰方法,则表示该方法不能被其子类重写。若父类是public,则子类可以继承到该方法,但是不能重写;若父类是private,则子类继承不到该方法。所以final不能修饰构造方法。

	public final void getId() {
		//用final修饰的方法不可以被重写
	}

1.3 用final修饰变量

用final修饰变量,则表示该变量在定义的时候必须赋值,况且被赋值之后,变量的值就不能再修改,否则会报错。

//用final修饰的变量必须赋值,并且不能再修改
private final int i=1;

1.4 用final修饰基本类型

用final修饰基本类型,则表示该类型的变量在定义的时候必须初始化,况且被初始化之后,变量的值就不能再修改,否则会报错。

1.5 用final修饰引用类型

引用类型可以理解为一个引用变量指向一个对象。因此用final修饰引用类型变量时,只可以指向一个对象,不能再指向其它,但是对象的内容是可以改变的。并且不可以通过【引用型变量名=null】的方式来解除绑定。

	public  class SandFina {
	   public static void main(String[] args) {
		  final A a =new B();
		  a=new B();
		  a=null;
	    }	
     }

结果:
在这里插入图片描述

2. static

static 可以用来修饰成员变量、方法,也可以形成代码块。

2.1 用static修饰成员变量

(1)用static 修饰的变量,也叫静态变量,静态变量可以被所有对象共享。
(2)static成员变量的是按照定义的顺序进行初始化,而且static不可以修饰局部变量。
(3)所以一般在需要实现以下两个功能时使用静态变量:
① 在对象之间共享值时;②方便访问变量时

2.2 用staticl修饰方法

用static 修饰的方法也叫类方法。静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态成员变量和成员方法。

2.3 static代码块

static代码块是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

以上是关于关键字final 和static的主要内容,如果未能解决你的问题,请参考以下文章

java多线程04----------final和static

final与static关键字的区别?(skycto JEEditor)

final和static使用场景

Java中Static关键字和Final关键字

static和final

static关键字和final关键字