java面试题-深度解析Java中final与static关键字的区别及应用场景
在Java编程中,final和static是两个关键字,它们都可以用于修饰类、方法、成员变量,但却有着不同的作用和应用场景。本教程将详细讨论final与static的区别,并通过实例代码演示它们在Java中的应用。
1. final与static的共同点
修饰类、方法、成员变量: final和static都可以用于修饰类、方法、成员变量,使得其具有特殊的语义和行为。
不能用于修饰构造方法: 无论是final还是static,都不能用于修饰构造方法,因为构造方法有其独特的初始化过程。
2. final与static的区别
2.1 static的特性
表示静态或全局: 被static修饰的属性和方法属于类,可以通过类名.静态属性/方法名访问。
静态代码块: static可以修饰类的代码块,表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块,只会被执行一次。
类变量: static修饰的属性是类变量,在类加载时被创建并初始化,只会被创建一次。
可重新赋值: static修饰的变量可以重新赋值。
this和super关键字: 在static方法中不能使用this和super关键字。
不能是抽象方法: static方法必须被实现,不能是抽象的。
不能被重写: static方法不能被子类重写。
2.2 final的特性
表示常量: 被final修饰的成员变量表示常量,一旦创建不可改变。
赋值要求: final标记的成员变量必须在声明的同时赋值,或在该类的构造方法中赋值,不可以重新赋值。
不能被子类重写: final方法不能被子类重写。
类不能被继承: final修饰的类不能被继承,没有子类。final类中的方法默认是final的。
3. 代码演示
3.1 static的应用
public class StaticExample {
// 静态变量
public static int staticVariable = 10;
// 静态代码块
static {
System.out.println("Static Block");
}
// 静态方法
public static void staticMethod() {
System.out.println("Static Method");
}
// 静态内部类
static class StaticInnerClass {
// 静态内部类的成员变量
static int innerClassVariable = 5;
}
}
3.2 final的应用
public class FinalExample {
// 常量
public final int CONSTANT_VALUE = 20;
// final方法
public final void finalMethod() {
System.out.println("Final Method");
}
// final内部类
final class FinalInnerClass {
// final内部类的成员变量
final int innerClassVariable = 8;
}
}
- 本文标签: Java 面试题
- 本文链接: https://www.jietongc.com/article/22
- 版权声明: 本文由大熊科技原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权