| 修飾符 | 適用對象 | 核心含義 |
|---|---|---|
public | 類、接口、成員 | 跨包訪問無限制 |
private | 成員 | 僅在定義類內部可訪問 |
static | 類、方法、字段、初始化塊 | 屬於類而非實例;靜態內部類為頂級類;靜態方法/字段屬類級;靜態初始化塊在類加載時執行 |
final | 類、方法、字段、變量 | 類不可繼承、方法不可覆寫、字段/變量不可修改 |
abstract | 類、接口、方法 | 類含未實現方法不可實例化;抽象方法無方法體,子類實現;含抽象方法的類必須為 abstract |
protected | 成員 | 同包可訪問;跨包僅子類可訪問 |
| 修飾符 | 適用對象 | 核心含義 |
|---|---|---|
native | 方法 | 平台相關,方法體由外部庫(如 C/C++)實現 |
strictfp | 類、方法 | 強制浮點運算嚴格遵循 IEEE 754,所有中間結果限為 float/double 精度,不使用平台額外精度 |
synchronized | 方法 | 靜態方法鎖類;非靜態方法鎖實例;隱式同步機制 |
volatile | 字段 | 禁止指令重排與緩存優化,保證多線程可見性;某些場景可替代 synchronized |
transient | 字段 | 標記非持久化字段,序列化時忽略 |
static 內部類實為頂級類,無外部類實例引用。final 字段必須在聲明時或構造函數中初始化。abstract 方法不能有方法體,也不能是 private/static/final/native/synchronized。volatile 僅保證可見性,不保證原子性(複合操作仍需同步)。transient 僅影響 Java 序列化,不影響其他持久化框架(如 Hibernate 需額外配置)。