06、Java 基础硬核复习:面向对象编程(基础)的核心逻辑与面试考点
06、Java 基础硬核复习:面向对象编程(基础)的核心逻辑与面试考点第一部分:核心知识体系1. 面向对象思想 面向过程 vs 面向对象:面向过程以“函数”为核心,强调步骤;面向对象以“对象”为核心,强调封装(属性+方法)。 OOP 基本元素:类(class,对象的模板)和对象(object,类的实例)。 2. 类的成员与实例化 类的定义:使用 class 关键字定义,包含属性(成员变量)和方法(成员方法)。 类的初始化:通过构造器(constructor)初始化对象,属性可默认初始化(如 int 类型默认为 0)。 匿名对象:new Phone().call();,仅使用一次,无需变量引用。 对象内存解析:栈(存储引用变量)+ 堆(存储对象实体),例如 Phone p = new Phone(); 中,p 在栈,Phone 对象在堆。 3. 方法 方法的定义:包含返回值类型、方法名、参数列表、方法体(如 public void call() { ... })。 方法的调用方式:对象调用(p.call())、静态调用(Phone.staticMethod(...
05、Java 基础硬核复习:数组的本质与面试考点
05、Java 基础硬核复习:数组的本质与面试考点第一部分:核心知识体系1. 数组概述数组是存储同类型数据的连续内存块,通过索引(下标)快速访问元素。其核心特点包括: 长度固定:创建后无法动态改变大小(需通过新建数组+复制实现扩容)。 类型一致:所有元素必须为同一数据类型(基本类型或引用类型)。 索引访问:通过 数组名[索引] 访问元素,索引从 0 开始。 2. 一维数组的基本使用(1)初始化方式 静态初始化:直接指定元素值,长度由元素个数决定。 1int[] arr1 = new int[]{1, 2, 3}; // 或简化为 int[] arr1 = {1, 2, 3}; 动态初始化:指定长度,元素默认初始化(如 int 类型默认为 0)。 1int[] arr2 = new int[3]; // arr2 = [0, 0, 0] (2)核心操作 长度:通过 数组名.length 获取(如 arr1.length 为 3)。 元素访问:通过索引访问(如 arr1[0] 为 1)。 遍历:使用 for 循环或 foreach(...
03、Java 基础硬核复习:流程控制语句的核心逻辑与面试考点
03、Java 基础硬核复习:流程控制语句的核心逻辑与面试考点第一部分:核心知识体系1. 分支结构分支结构主要用于根据条件选择性地执行代码。 if-else 结构 基本格式:需掌握三种形式,分别是单分支(if)、双分支(if...else)和多分支(if...else if...else)。 嵌套使用:可以在 if 语句内部再包含 if 语句,用于处理复杂的逻辑判断。思维导图中提到的典型案例是“三个数大小排序”。 switch-case 结构 主要用途:用于等值判断,即判断变量是否等于某个特定值。 对比理解:需理解其基本使用格式,并明确它与 if-else 的区别——switch 更适合多选一的场景。default用来保底。 2. 循环结构循环结构的核心在于掌握“循环四要素”:初始化、循环条件、循环体和迭代部分。 for 循环 特点:结构紧凑,循环变量通常在循环结束后即销毁。 适用场景:适用于循环次数确定的场景。 经典案例:水仙花数、最大公约数。 while 循环 特点:先判断,后执行。 适用场景:适用于循环次数不确定的场景。 经典案例:珠穆朗玛峰折纸问题、猜数...
02、Java 基础硬核复习:变量与运算符的“避坑”指南
02、Java 基础硬核复习:变量与运算符的“避坑”指南第一部分:核心基础知识体系1. Java 的 8 大基本数据类型Java 是强类型语言,牢记这 8 种类型及其占用的内存空间是基本功: 分类 类型 字节 默认值 注意点 整型 byte 1 0 参与运算时会自动提升为 int short 2 0 同上 int 4 0 整数默认类型 long 8 0L 定义时必须加后缀 L (如 100L) 浮点型 float 4 0.0f 定义时必须加后缀 F (如 3.14F) double 8 0.0d 小数默认类型,精度比 float 高 字符型 char 2 ‘\u0000’ 采用 Unicode 编码,可以存一个汉字 布尔型 boolean 1位* false 只有 true 和 false 注:boolean 在内存中的大小并未明确定义,依赖于 JVM 实现,通常单独使用时占 4 字节(当作 int 处理),数组时占 1 字节。 2. 类型转换规则 自动提升(隐式转换):小范围—–>大范围。 规则:byte、short...
01、Java基础入门:JDK、JRE、JVM关系详解及开发流程
01、Java基础入门:JDK、JRE、JVM关系详解及开发流程1. JDK, JRE, JVM 的关系(核心重点)它们是 包含关系,从下到上层层嵌套,共同支撑Java程序的运行与开发。 JVM (Java Virtual Machine):Java虚拟机 是Java程序的“运行引擎”,负责将字节码翻译成底层系统可执行的机器码。 核心作用是屏蔽操作系统差异,实现“一次编写,到处运行”(Write Once, Run Anywhere)。 单独存在无法运行程序,因为它缺少核心类库(如java.lang包)。 JRE (Java Runtime Environment):Java运行环境 公式:JRE = JVM + 核心类库 (Libs) 作用:提供运行Java程序所需的基础环境,包括JVM和标准类库。 适用场景:仅需要运行已编译的Java程序(如运行Minecraft客户端)。 JDK (Java Development Kit):Java开发工具包 公式:JDK = JRE + 开发工具 (javac, java, jdb等) 作用:为...
LinkedHashMap、HashSet、LinkedHashSet 深度解析:从源码到实战
LinkedHashMap、HashSet、LinkedHashSet 深度解析:从源码到实战在 Java 集合框架中,LinkedHashMap、HashSet 和 LinkedHashSet 是基于 HashMap 衍生出的高频使用类。它们看似独立,实则底层紧密关联,各自在 “有序性” 和 “去重性” 上形成互补。本文将从源码实现入手,解析三者的设计逻辑与适用场景,帮你在开发中精准选型。 一、LinkedHashMap:HashMap 的 “有序升级版”LinkedHashMap 是 HashMap 的子类,核心优势是支持有序存储,通过维护双向链表记录元素顺序,完美解决了 HashMap”无序” 的痛点。 1. 底层结构:HashMap + 双向链表LinkedHashMap 的底层由两部分组成: 哈希表:继承自 HashMap 的 “数组 + 链表 + 红黑树” 结构,保证键值对的高效存取; 双向链表:额外维护一条贯穿所有节点的双向链表,记录元素的插入顺序或访问顺序。 节点结构在 HashMap 的 Node 基础上新增了两个指针: 123456static cla...
JDK7 与 JDK8 中 HashMap 的演进:从问题到优化的全面解析
JDK7 与 JDK8 中 HashMap 的演进:从问题到优化的全面解析HashMap 作为 Java 集合框架中使用最广泛的工具类,在 JDK7 到 JDK8 的版本迭代中经历了根本性的设计升级。从单纯的 “数组 + 链表” 到引入红黑树优化,从线程不安全的头插法到更稳健的尾插法,这些变化不仅解决了旧版本的性能瓶颈,更体现了 Java 对实际开发需求的持续响应。本文将对比解析两个版本的核心设计,带你理解 HashMap 的演进逻辑。 一、JDK7 HashMap:简单设计下的性能与安全隐患JDK7 的 HashMap 采用 “数组 + 单向链表” 的基础结构,实现简单但在高频场景下暴露了明显缺陷。 1. 底层结构:数组 + 单向链表 数组(Entry [] table):作为存储节点的 “桶”,长度始终为 2 的幂(初始 16),通过(n-1) & hash计算索引(等价于取模,效率更高)。 链表(Entry 节点):每个节点包含hash、key、value和next指针,用于解决哈希冲突 —— 当多个 key 计算出相同索引时,用链表串联节点。 2. 核心问题...




