Java中的final和static

final关键字

final 关键字可以用来修饰类、方法和变量,其含义和作用如下:
1、修饰类:
一个被 final 修饰的类不能被继承。例如:

public final class FinalClass {
    // 类内容
}

// 下面的代码会导致编译错误
// public class SubClass extends FinalClass {
// }

2、修饰方法
一个被 final 修饰的方法不能被子类重写。例如:

public class Parent {
    public final void display() {
        System.out.println("Parent display");
    }
}

public class Child extends Parent {
    // 下面的代码会导致编译错误
    // public void display() {
    //     System.out.println("Child display");
    // }
}

3、修饰变量
被 final 修饰的变量在初始化后不能被修改。它可以是成员变量,也可以是局部变量。对于引用类型,final 关键字确保引用不可变,但引用的对象本身可以是可变的,例如:

public class Example {
    public static void main(String[] args) {
        final int x = 10;
        // 下面的代码会导致编译错误
        // x = 20;

        final MyClass obj = new MyClass();
        // obj = new MyClass(); // 编译错误,因为 obj 不能被重新赋值
        obj.value = 100; // 合法,因为 obj 引用的对象是可变的
    }
}

class MyClass {
    int value;
}

static 关键字

static 关键字用于修饰类的成员(变量和方法),以及静态代码块。
1、修饰变量(静态变量)
一个被 static 修饰的变量是类变量,它属于类,而不是某个特定的实例。所有实例共享这个变量。

public class Example {
    public static int count = 0;

    public Example() {
        count++;
    }

    public static void main(String[] args) {
        Example obj1 = new Example();
        Example obj2 = new Example();
        System.out.println(Example.count); // 输出 2
    }
}

2、修饰方法(静态方法)
一个被 static 修饰的方法是类方法,可以不通过实例调用。静态方法不能访问实例变量和实例方法,但可以访问静态变量和静态方法。

public class Example {
    public static void display() {
        System.out.println("Static method");
    }

    public static void main(String[] args) {
        Example.display(); // 直接通过类名调用
    }
}

3、静态代码块
静态代码块在类加载时执行,用于初始化静态变量。

public class Example {
    static int count;

    static {
        count = 10;
        System.out.println("Static block executed");
    }

    public static void main(String[] args) {
        System.out.println(Example.count); // 输出 10
    }
}

final 和 static 结合使用

可以将 final 和 static 结合使用,通常用于定义常量。

public class Constants {
    public static final int MAX_VALUE = 100;
}

在这种情况下,MAX_VALUE 是一个类常量,在类加载时初始化,且在整个生命周期中不能被修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值