java-关键字(final,static)

关键字

final 和 static 是两个常用的关键字,它们分别用于不同的场景,具有不同的作用。

final

final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。

  • final 变量
  1. 当 final 用于变量时,表示该变量一旦被初始化后,其值不能被修改。
  2. 如果是基本数据类型,值不能改变;如果是引用类型,引用不能改变(但对象内部的状态可以改变)
final int x = 10;
// x = 20; // 编译错误,x 不能被修改

final Person person = new Person("Alice");
// person = new Person("Bob"); // 编译错误,引用不能改变
person.setName("Bob"); // 合法,对象内部状态可以改变
  • final 方法
  1. 当 final 用于方法时,表示该方法不能被子类重写(override)。
class Parent {
    final void display() {
        System.out.println("This is a final method.");
    }
}

class Child extends Parent {
    // void display() { } // 编译错误,不能重写 final 方法
}
  • final 类
  1. 当 final 用于类时,表示该类不能被继承。
final class FinalClass {
    // 类内容
}

// class SubClass extends FinalClass { } // 编译错误,不能继承 final 类

static

static 关键字用于表示某个成员属于类本身,而不是类的实例。它可以应用于变量、方法、代码块和内部类。

  • static 变量
    当 static 用于变量时,表示该变量属于类,而不是类的实例。所有实例共享同一个静态变量。
class Counter {
    static int count = 0;

    Counter() {
        count++;
    }
}

Counter c1 = new Counter();
Counter c2 = new Counter();
System.out.println(Counter.count); // 输出 2,因为 count 是静态变量,所有实例共享
  • static 方法
    当 static 用于方法时,表示该方法属于类,而不是类的实例。静态方法不能访问非静态成员(变量或方法),因为它们依赖于实例。
class MathUtils {
   static int add(int a, int b) {
       return a + b;
   }
}

int result = MathUtils.add(5, 3); // 直接通过类名调用静态方法
  • static 代码块
    static 代码块用于在类加载时执行一些静态初始化操作。
class MyClass {
    static {
        System.out.println("Static block executed.");
    }
}
  • static 内部类
    static 内部类是静态的嵌套类,它不依赖于外部类的实例。
class Outer {
    static class Inner {
        void display() {
            System.out.println("Inside static inner class.");
        }
    }
}

Outer.Inner inner = new Outer.Inner();
inner.display();

final 和 static 的组合

final 和 static 可以一起使用,通常用于定义常量。

class Constants {
    public static final double PI = 3.14159;
}

static 表示该变量属于类,而不是实例。
final 表示该变量的值不能被修改。

总结

  • final 用于表示不可变性,可以应用于变量、方法和类。
  • static 用于表示类级别的成员,可以应用于变量、方法、代码块和内部类。
  • final 和 static 的组合通常用于定义常量。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下陈平安

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值