java语法

一、初级知识

类与对象

  • 区别联系:类是抽象模板,对象是具体实例,类是对象的模板,对象是类的实例。

  • 内存 布局:对象在堆中分配空间,包含属性(成员变量),栈存放基本类型,方法区存常量与类加载信息。

  • 创建与访问Cat cat = new Cat(); 创建对象,通过 对象名.属性名 访问属性。

成员方法

  • 定义访问修饰符 返回类型 方法名(形参列表) { ... },注意返回类型、形参列表规则。

  • 传参机制:基本类型传值,引用类型传地址(影响实参)。

  • 递归:方法自调,需向退出条件逼近,每次调用创建独立栈空间。

  • 重载:同名方法,形参列表(类型、个数、顺序)不同,返回类型无要求。

  • 可变参数方法名(数据类型... 形参名),本质数组,可与普通参数共存(放最后)。

作用域

  • 全局变量(属性) :作用域为类体,有默认值,可被本类或其他类通过对象调用。

  • 局部变量:定义在方法/代码块,无默认值,作用域为定义代码块。

构造方法

  • 特点:方法名与类同,无返回值,初始化对象,可重载。

  • 细节:无定义时系统生成默认无参构造,自定义后默认构造失效(需显式定义)。

this 关键字

  • 作用:代表当前对象,区分属性与局部变量,访问本类属性、方法、构造器(this(形参) 放构造器首行)。

二、中级知识

  • 作用:区分类名、管理类、控制访问范围。

  • 语法package 包名; 放类最上方,import 导包(如 import java.util.Scanner)。

访问修饰符

  • 修饰范围:类、属性、方法,public 和默认修饰类,成员方法访问规则同属性。

封装

  • 步骤:私有化属性,提供公共 set(判断赋值)和 get 方法(获取值)。

继承

  • 语法class 子类 extends 父类,子类继承父类属性方法(私有需通过父类公共方法访问)。

  • 细节:子类构造器必调父类构造器(super(形参) 放首行),单继承,遵循 is - a 关系。

super 关键字

  • 作用:访问父类属性(非私有)、方法(非私有)、构造器(放构造器首行),重名时必用。

方法重写

  • 规则:方法名、形参列表与父类同,返回类型相同或为子类,访问权限不缩小。

多态

  • 向上转型父类类型 引用名 = new 子类类型(),可调用父类成员(遵守权限),不可调子类特有成员。

  • 向下转型子类类型 引用名 = (子类类型) 父类引用,需父类引用指向子类对象,转型后可调子类所有成员。

  • 动态绑定:方法调用与对象运行类型绑定,属性无此机制(按声明位置使用)。

Object 类

  • equals 方法:默认判地址相等,子类常重写判内容(如 String)。

  • hashCode 方法:提高哈希容器效率,相同对象哈希值相同,不同对象哈希值不同(非绝对)。

  • toString 方法:默认 全类名+@+哈希值,子类重写返回属性信息。

  • finalize 方法:对象回收时系统调用,子类可重写释放资源。

断点调试快捷键

  • F7(跳入)、F8(跳过)、shift+F8(跳出)、F9(执行到下一个断点)。

三、高级知识

类变量/类方法

  • 类变量static 修饰,类加载时初始化,所有对象共享,类名.类变量名 访问。

  • 类方法static 修饰,只能访问静态成员,类名.类方法名 调用。

代码块

  • 静态代码块static { ... },类加载时执行一次。

  • 普通代码块{ ... },创建对象时调用,每次创建都执行。

  • 执行顺序:静态代码块/属性初始化 → 普通代码块/属性初始化 → 构造器(继承时父类先执行)。

final 关键字

  • 修饰范围:类(不可继承)、属性(常量,XX_XX_XX 命名)、方法(不可重写)、局部变量(不可修改)。

  • 赋值位置:定义时、构造器、代码块(静态属性仅定义时或静态代码块)。

抽象类

  • 特点:不能实例化,含 abstract 方法类必声明 abstract,抽象方法无方法体,子类必实现抽象方法(除非子类也为抽象类)。

接口

  • 定义interface 接口名 { ... },类 implements 接口需实现所有抽象方法(抽象类可不实现)。

  • 细节:接口属性默认为 public static final,方法可有无实现(JDK8+),可继承多接口。

内部类

  • 局部内部类:定义在方法/代码块,作用域为所在代码块。

  • 匿名内部类new 类/接口() { ... },可直接访问外部类所有成员,无访问修饰符,作实参传递。

  • 成员内部类:定义在类成员位置,无 static 修饰。

  • 静态内部类static 修饰,可直接访问外部类静态成员。

枚举与注解

  • 枚举enum 定义(如 enum Season { SPRING("春", "暖") }),默认继承 Enum,对象放首行。

  • 注解@Override(重写验证)、@Deprecated(过时)、@SuppressWarnings(抑制警告),元注解(RetentionTarget 等)控制注解行为。

异常

  • 分类Error(虚拟机严重问题)、Exception(编程/外部因素,分运行时异常与编译时异常)。

  • 处理try-catch(处理异常)、throws(声明抛出),自定义异常继承 Exception(编译时)或 RuntimeException(运行时)。

常用类

  • 包装类:基本类型对应包装类(如 Integer 对应 int),jdk5+ 自动装箱拆箱(Integer.valueOf())。

  • Stringprivate final char value[] 存内容,"hsp" 先查常量池,new String("hsp") 堆中创建。

  • StringBuffer / StringBuilder:可变字符序列,StringBuffer 线程安全,Builder 单线程高效。

  • Math:含数学运算静态方法(如 Math.sqrt())。

集合

  • Collection:接口,实现类可存多个对象,Iterator 遍历(iterator() 方法),增强 for 简化遍历。

  • List:有序、可重复,ArrayList(数组实现,线程不安全)、LinkedList(双向链表,增删高效)、Vector(线程安全)。

  • Set:无序、无索引、不重复,HashSet 底层 HashMapnull 仅一个。

  • Map:键值对,Key 不重复,Value 可重复,HashMap(非线程安全),遍历(键集、值集、键值对)。

泛型

  • 自定义 泛型类Class 类名<T,R...>,静态方法不可用类泛型,类型创建对象时确定。

  • 自定义 泛型 接口Interface 接口名<T,R...>,实现/继承时确定类型。

  • 自定义 泛型 方法修饰符 <T,R...> 返回类型 方法名(参数列表),调用时确定类型。

线程

  • 创建方式:继承 Thread 重写 run,实现 Runnable 重写 run(解决单继承限制)。

  • 常用方法setDaemon(true)(设为守护线程),线程终止(任务完成或通知方式)。

  • 同步机制synchronized(同步代码块/方法),互斥锁保证数据完整性,注意静态与非静态方法锁对象区别。

  • 死锁:多线程互占对方锁资源且不相让。

反射

  • 作用:获取类内部信息(属性、方法、构造器),操作对象属性方法,动态创建对象。

  • Class 类:类加载后生成唯一 Class 对象(存堆中),Class.forName("类路径") 获取。

类加载与 JVM 内存模型

  • 类加载时机new 对象、子类加载、调用静态成员、反射。

  • 加载阶段:字节流转二进制入内存,生成 Class 对象。

  • 连接阶段:验证(文件格式等)、准备(静态变量赋默认值)、解析(符号引用转直接引用)。

  • 初始化:执行类中静态变量与代码块合并的 ()) 方法,多线程加锁同步。

  • JVM ****内存 模型:堆(对象)、栈(基本类型、局部变量)、方法区(类信息、常量)。

GC 过程

  • 定义:自动回收不再使用对象内存,避免泄漏,提高利用率。
  • 内存 区域:堆(主要回收区,分新生代、老年代)、方法区(回收废弃常量/类)。
  • 判定算法:引用计数(难处理相互引用)、可达性分析(GC Roots 为起点,无引用链则回收)。
  • 回收算法:标记 - 清除(效率低、碎片多)、标记 - 整理(无碎片)、复制(效率高、内存利用率低)、分代收集(新生代复制,老年代标记 - 清除/整理)。
  • 新生代 GC (Minor GC) :Eden 区满触发,存活对象复制至 Survivor 区,多次 GC 后存活对象晋升老年代。
  • 老年代 GC (Major GC / Full GC) :老年代空间不足等触发,标记 - 清除或整理,耗时较长。
  • 总结:GC 减轻编程负担,了解其过程与算法助于优化程序性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值