Java 语法核心知识点总结(错题复盘完整版)

一、类声明与修饰符规则

1. finalabstract 不能共存

  • 错误示例final abstract class A {}
  • 原因final 表示类不能被继承,abstract 表示类必须被继承才能实例化。二者语义完全矛盾,在 Java 中任何位置(顶层类或内部类)都禁止同时使用。

2. 顶层类的访问修饰符限制

  • 规则:顶层类(直接定义在包中的类)只能用 public默认修饰。
  • 为什么不能用 protected
    • protected 包含“外包可见(子类可见)”的含义,但顶层类如果不加 public,外包类在编译时根本找不到它,无法建立继承关系,实际效果退化为“包可见”,与默认修饰符完全一样。Java 干脆规定这么写是语法错误。
  • 特殊情况protected 修饰内部类是合法的,因为此时它作为外部类的“成员”存在。

二、成员变量 vs 局部变量(初始化规则)

变量类型 声明位置 是否有默认值 是否必须显式赋值
成员变量(实例/静态) 类体内,方法外 (如 int→0,double→0.0,引用null 否(编译器自动赋默认值)
局部变量 方法体/代码块内 (使用前必须赋值)
  • 经典陷阱double m;(声明合法) + double t = n + m;编译错误,因为 m 未初始化)。
  • 记忆口诀:成员变量靠老天,局部变量靠自己。

三、类体中的代码规范(声明 vs 语句)

  • 规则:类体(最外层大括号内)只能包含声明(变量、方法、内部类、构造器等),不能直接编写执行语句(如赋值 x = 10;)。
  • 正确做法:将执行语句放在方法构造器初始化块中。
    • 实例初始化块:{ y = 200; }
    • 静态初始化块:static { y = 200; }

四、静态成员与实例成员的互访规则

  • 规律 1非静态方法(实例方法)可以访问静态成员(变量/方法)。
    (因为调用实例方法时对象已存在,类必定早已加载,静态成员必定在内存中。)
  • 规律 2静态方法不能直接访问非静态成员(变量/方法)。
    (因为静态方法可以不依赖对象调用,没有 this 指针,编译器不知道要访问哪个对象的变量。)
  • 例外:如果静态方法中自己 new 对象,则可以通过该对象引用访问非静态成员(如 new A().x = 10;)。

五、方法重写(Override)的严格细则

1. 访问修饰符(权限只能放大,不能缩小)

  • 子类重写方法的访问权限必须 父类方法权限。
  • 权限大小排序:public > protected > 默认(包可见) > private

2. 返回类型(基本类型必须严格一致)

  • 基本数据类型intlongbyte 等):子类返回类型必须与父类完全相同
    long 不能替代 intbyte 也不能替代 int,即使它们能隐式转换。)
  • 引用数据类型:支持协变返回类型,即子类返回类型可以是父类返回类型的子类(如父类返回 Object,子类可返回 String)。

六、接口实现(implements)的强制规定

  • 接口中的方法:默认且强制是 public abstract(即使代码中不写,编译器也会自动补上)。
  • 实现类的要求:实现(重写)接口方法时,访问修饰符必须是 public
    • protected 或默认(包可见)都会导致编译错误(因为比 public 小)。
  • 返回类型规则:同重写规则(基本类型必须一致,引用类型支持协变)。

七、Swing 组件与事件处理基础(GUI 常识)

1. 常用容器的默认布局

容器类 默认布局管理器
JFrame(窗口) BorderLayout(边界布局,分 NORTH、SOUTH、EAST、WEST、CENTER 五区)
JPanel(面板) FlowLayout(流式布局,从左到右依次排列)

2. 常用组件对应的事件类型(必背)

组件类 可触发的主要事件
JButton(按钮) ActionEvent(点击时触发)
JTextField(文本框) ActionEvent(按回车键时触发)—— 注意:不触发 ItemEvent
JCheckBox(复选框) ItemEvent(选中/取消选中时触发)
JRadioButton(单选按钮) ItemEvent(选中/取消选中时触发)
JComboBox(下拉列表) ItemEvent(选择项变化时触发)

3. 快速记忆口诀

  • 容器默认布局Frame 摆边框(Border),Panel 流成河(Flow)。
  • 组件对应事件:按钮文本框按回车(Action),列表复选框点勾选(Item)。

附:速记口诀全汇总(直接背)

  1. 类修饰符finalabstract 见面就掐架(不能同时用)。
  2. 顶层类权限:只有 public 和“隐身”(默认),protected/private 靠边站(内部类除外)。
  3. 变量初始化:成员变量有低保(默认值),局部变量靠双手(手动赋)。
  4. 类体内容:只写声明不写句(不能直接写 y=200;),要写就放方法/块里。
  5. 静态与非静态:实例随便看静态,静态不能直接碰实例(除非自己 new 一个)。
  6. 重写与实现:权限只能大不能小;基本类型返回必须一模一样;接口方法全是 public,实现必须跟着 public 走。
  7. Swing 布局与事件:Frame 用边框,Panel 用流式;按钮文本框监听到回车(Action),复选框下拉列表监听选(Item)。

更多推荐