Java修饰符主要有以下四种:
-
访问控制修饰符:这些修饰符用于设置类、方法和变量的访问级别。
- public:公共的,表示该元素可以被任何其他类访问。
- private:私有的,表示该元素只能被其所在的类访问。
- protected:受保护的,表示该元素可以被同一个包中的类以及子类访问。
- 默认(无修饰符):当没有指定访问控制修饰符时,默认为包级私有,表示该元素可以被同一个包中的类访问,但不能被其他包中的类访问。
-
非访问控制修饰符:这些修饰符用于限制类、方法和变量的使用。
- static:静态的,表示该元素属于类本身而不是类的实例。静态变量和静态方法可以直接通过类名进行访问,而不需要创建类的实例。
- final:最终的,表示该元素不能被修改。对于类来说,final表示该类不能被继承;对于方法来说,final表示该方法不能被重写;对于变量来说,final表示该变量的值不能被改变。
- abstract:抽象的,表示该元素没有具体的实现。对于类来说,abstract表示该类是一个抽象类,不能被实例化;对于方法来说,abstract表示该方法是一个抽象方法,没有具体的实现,需要在子类中进行实现。
- synchronized:同步的,表示该方法或代码块在运行时只能被一个线程访问,用于解决多线程之间的同步问题。
- volatile:易失的,表示该变量可能会被多个线程同时访问,需要保证其在多线程环境下的可见性和有序性。
- transient:瞬态的,表示该变量不会被序列化,即在进行序列化和反序列化操作时,该变量的值不会被保存和恢复。
- native:原生的,表示该方法是用其他语言(如C、C++)编写的,并在Java代码中通过JNI(Java Native Interface)进行调用。
- strictfp:严格的,表示该类或方法采用严格的浮点运算规则,以确保在不同平台上的计算结果一致。