随笔分类 - Java
摘要:内容由AI生成 Java 基础避坑与原理:Scanner、泛型与 ArrayList(含源码验证) 1. Scanner 的“回车符”陷阱 现象: 在使用 Scanner 时,如果先调用 nextInt(),紧接着调用 nextLine(),第二个字符串输入会直接跳过(读到空字符串)。 int nu
阅读全文
摘要:内容由AI生成 一、 泛型(Generics)与类型擦除 现象: 为什么写 ArrayList<int> 编译器会报错,必须写 ArrayList<Integer>? 1. 核心考点:类型擦除 (Type Erasure) 面试回答: Java 的泛型是伪泛型,是在编译器层面实现的。在编译后的字节码
阅读全文
摘要:为什么 nextInt() + nextLine() 会出问题,以及底层的原理。 1. 核心原因:回车符(\n)的残留 计算机处理键盘输入时,有一个输入缓冲区(Buffer)。 当输入数字 10 并按下回车键时,输入缓冲区里的内容实际上是: 10\n (10 是你输入的数字,\n 是回车键产生的换行
阅读全文
摘要:int → String 转换的 API 1. String.valueOf(int i) (推荐) int num = 123; String s = String.valueOf(num); // "123" 优点:最常用,代码清晰,性能好 null安全:如果传入 null 会返回 "null"
阅读全文
摘要:Java内部类与静态上下文 错误示例 public class Outer { class Inner { // 普通内部类 int value; Inner(int v) { value = v; } } public static void main(String[] args) { Inner
阅读全文
摘要:参考 1、什么是内存对齐? char c; int a; 非内存对齐:在内存中,变量c后紧跟着变量a。 2次寻址操作 + 1次合并操作才能读取变量a的值。 内存对齐:假设CPU一次读取4个字节,变量c后空出3个字节,再存储变量a。 1次寻址操作便能读取变量a的值。 2、为什么有内存对齐? (1)硬件
阅读全文
摘要:以下是 Java 算法题中常用数据结构的详细对比表格,涵盖适用场景、底层实现、时间复杂度等关键维度: 数据结构 适用场景 底层实现 插入/添加 删除 查找 空间复杂度 特点与注意 ArrayList 频繁按索引访问、元素数量动态增长但不频繁删除 动态数组(基于数组) O(1)(尾部)O(n)(中间)
阅读全文
摘要:byte[](字节数组)是编程中用于处理原始字节序列的数据结构。它在各种需要处理二进制数据的场景中都非常重要。为了让你快速抓住核心,我先用一个表格来汇总它的关键特性和常见操作,然后再详细展开。 特性/操作类别 具体说明/示例 (Java) 基本概念 存储原始字节(8位),每个字节范围:Java中为-
阅读全文
摘要:String、StringBuffer、StringBuilder 面试题总结 核心区别对比表 特性 String StringBuffer StringBuilder 可变性 ❌ 不可变 ✅ 可变 ✅ 可变 线程安全 ✅ 安全(不可变) ✅ 安全(synchronized) ❌ 不安全 性能 低(
阅读全文
摘要:字符串常量池是堆的一部分,专门用于高效存储唯一的字符串字面量。String s1 = "abc"的方式直接与池交互,优先复用对象; 而 String s2 = new String("abc")则无视池中情况,直接在堆上创建新对象。
阅读全文
摘要:
阅读全文
摘要:简洁 Java中的二维数组是数组的数组 int[][] rating = new int[3][4]; 行内元素在内存中连续存储,行之间的元素不连续。 rating[0]、rating[1]、rating[2]分别指向一个一维数组 详细 进阶 **交错数组 ** // 只指定行数,不指定列数 int
阅读全文
摘要:Java只有一维数组,多维数组是由一维数组嵌套得到的。 二维数组balances 每一行都是一个元素
阅读全文
摘要:问题 二进制数无法精确地表示十进制数0.1,因此只能用十进制数0.099999...对应的二进制数来近似表示十进制数0.1。 《Java核心技术 卷1》P70 解决 java.math包提供的2个大数类可以实现任意精度的计算。 《Java核心技术 卷1》P76
阅读全文

浙公网安备 33010602011771号