Java中final、static关键字的作用

final关键字可用于三个地方: 用于修饰类、类属性和类方法。
被final修饰的类不能被继承,被final修饰的类属性和类方法不能被覆盖(重写);

一、final
1. final修饰变量:
final意为不可改变,修饰成员变量时可以在生命时初始化或者在构造函数中初始化,修饰局部变量时在使用之前初始化。要是企图改变final修饰等变量值则会编译错误
2. final修饰方法:
final修饰的方法不能被重写
3. final修饰类:
final修饰的类不能被继承,jdk中的一些基本类库被定义为final,如String、Integer、Math等,这样可以防止对系统造成危害。

二、static
1. 修饰成员变量:
static关键字可以修饰成员变量,它所修饰的成员变量不属于对象的数据结构,而是属于类的变量,通常通过类名来引用static成员。
当创建对象后,成员变量是存储在堆中的,而static成员变量和类的信息一起存储在方法区, 而不是在堆中,一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象。看如下的示例

public class StaticDemo {
    public static void main(String[] args) {
        People p1 = new People(18);
        People p2 = new People(19);
        People p3 = new People(20);
    }
}
class People {
    private static int num;
    private int age;
    public People(int age) {
        this.age = age;
        System.out.println(++num);
    }
}
  1. static修饰方法:
    static修饰的方法不需要针对某些对象进行操作,其运行结果仅仅与参数有关,直接用类名就可以调用了。因此static方法中不能对非static成员进行访问,static方法的作用在于提供一些工具方法(如Arrays.sort)和工厂方法(有兴趣可以了解静态工厂模式)等
  2. static代码块:
    属于类的代码块,在类加载期间执行并且只执行一次,可以用来加载静态资源。(如图片、音频和视频等文件)

三、 static final
static final修饰的成员变量被成为常量,必须声明时初始化并且不可被改变,static final常量在编译期间会被取代为其初始值。

发布了30 篇原创文章 · 获赞 12 · 访问量 3461

猜你喜欢

转载自blog.csdn.net/zx1293406/article/details/103548704