- 博客(17)
- 收藏
- 关注
原创 Java异常处理解析:从防御式编程到自定义异常类
本文介绍了Java异常处理机制的基本概念和分类。异常分为编译时异常(受检异常)和运行时异常(非受检异常),其中Error表示严重错误,Exception表示可捕获处理的运行时错误。文章通过示例展示了防御式编程思想,强调预先处理潜在错误的重要性。详细讲解了异常处理的五个关键字(throw、throws、try、catch、finally)的用法,并指出在异常转换时保持原始异常信息的重要性。最后通过代码示例演示了如何通过异常包装保留完整的异常栈信息,确保错误可追溯性。
2026-01-04 22:53:25
1000
原创 深入理解Java String:不可变性、内存机制与高效操作
本文深入剖析Java编程核心——String类。从字符串在JVM中的内存模型(常量池与堆)入手,详解其不可变性的本质与设计缘由。通过对比“==”与equals(),厘清字符串比较的陷阱。进而系统梳理查找、转换、替换、拆分等常用API的实战要点。针对性能瓶颈,文章通过代码实测,揭示字符串拼接的底层机制与高昂代价,并引出高效的StringBuilder与StringBuffer。最后,清晰对比二者线程安全性的差异及适用场景,助你真正掌握字符串操作的性能优化之道
2025-10-29 22:55:52
551
原创 Java对象比较与克隆:Comparable、Comparator接口与深拷贝实现
本文介绍了Java中Comparable接口的使用方法,通过实现该接口并重写compareTo()方法来自定义对象比较规则。文章以Student类为例,演示了如何按年龄或姓名排序,并解释了未实现Comparable接口时Arrays.sort()会抛出ClassCastException的原因。作者还模拟了类似冒泡排序的实现逻辑,说明比较规则在排序中的重要性。同时指出该方法的局限性,即一个类只能定义一种比较规则。
2025-10-17 20:17:28
932
原创 Java核心概念:抽象类、接口、Object类深度剖析
本文深入剖析了Java中的抽象类、接口和Object类三大核心概念。抽象类通过abstract关键字定义,不能被实例化,主要用于为子类提供框架和规范;接口通过interface声明,支持多实现,表达"具有xxx特性"的语义,默认方法为public abstract;Object类是所有类的父类,提供了toString()、equals()等基础方法。文章详细介绍了三者的特性、使用场景及相互关系,并配有代码示例,帮助理解面向对象编程中的继承、实现等核心机制。
2025-10-17 19:01:17
787
原创 Java多态 学习笔记
本文摘要: Java多态实现需要满足三个条件:继承体系、方法重写和父类引用调用。向上转型将子类对象视为父类使用,向下转型则需谨慎处理类型转换。方法重写(Override)要求子类方法与父类方法原型一致,访问权限不能更低,且父类方法不能是static/private/final或构造方法。与重载(Overload)不同,重写强调运行时多态性,而重载是编译时多态。文中通过代码示例演示了向上/向下转型的实现方式,并强调向下转型前应使用instanceof进行安全检查。
2025-09-27 20:36:26
674
1
原创 Java继承 学习笔记
Java继承机制通过extends关键字实现单一继承,子类可以访问父类非私有成员并扩展自身功能。继承特性包括子类复用父类代码、支持方法重写、提高代码复用性但增加耦合度。使用super关键字可访问父类成员,final用于限制继承或方法重写。构造子类时需先调用父类构造方法,初始化顺序遵循静态代码块→实例代码块→构造方法的规则。继承层次建议不超过三层以避免过度复杂化。
2025-09-27 20:23:47
991
1
原创 Java类与对象
本文介绍了Java中类的定义、对象创建、成员访问、构造方法等核心概念,以及强调了封装对代码安全性和可维护性的重要性,并列举了四种访问修饰符的作用范围。
2025-09-22 12:09:05
850
原创 一些Java题目讲解2
本文介绍了三种算法问题的解决方案:1) 计算二进制数中1的个数,提供逐位检查和Brian Kernighan两种方法,后者效率更高;2) 水仙花数判断,通过分解数字各位并求n次方和实现;3) 汉诺塔问题,使用递归方法解决,分析移动步骤和次数。每种方法都配有Java代码实现和原理说明,适合算法初学者理解基础编程技巧。
2025-09-14 23:13:12
480
原创 一些Java题目讲解1
本文介绍了四个Java编程案例:1)数组转置,通过创建新数组交换行列实现;2)素数判断优化为检查2到√n的范围;3)使用欧几里得算法高效计算最大公约数;4)斐波那契数列的递归和循环实现,循环版本效率更高。每个案例都提供了完整代码示例和算法思路解析,适合Java初学者练习基础编程技巧。
2025-09-14 23:11:13
305
原创 Java SE基础2
本文总结了Java基础语法中的运算符、循环语句和数组三部分内容。运算符部分包括取模运算、自增运算、逻辑运算和位运算的规则与示例。循环语句介绍了for、while、do-while三种循环结构以及switch语句的用法。数组部分涵盖了数组的定义、初始化、遍历方法,并补充了查找极值、数组倒序、foreach循环和二维数组等知识点。全文通过代码示例展示了各种语法结构的实际应用,并强调了运算符优先级、循环特点和数组操作等关键概念。
2025-09-10 20:05:37
258
原创 Java SE基础
Java基础语法要点: 标识符规则:由字母、数字、下划线、$组成,不能数字开头,区分大小写 数据类型: 整型(byte/short/int/long) 浮点型(float/double) 字符型(char,2字节Unicode) 布尔型(boolean) 类型转换: 隐式转换(小范围→大范围) 强制转换(需显式声明) 变量命名:小驼峰式,见名知意 字符串:String类型,+号用于拼接 注意:浮点数存在精度问题,char采用Unicode编码,boolean不与int互转。
2025-09-09 20:25:07
1252
原创 GitHub-Pages个人博客搭建(Mizuki)
Mizuki 博客系统环境配置与部署指南 本文档详细介绍了Mizuki博客系统的环境配置、项目启动和部署流程。
2025-09-07 20:34:37
1088
1
原创 Git基础学习_part2
补充对分支的理解,如我在main分支创建了a.txt (未add),此时创建dev分支可以看见main分支对a.txt的更改。但如果我在dev上commit之后,回到main之后则不存在a.txt文件了,就相当于两个工作区一样。远程仓库 = 存在于服务器(比如 GitHub)上的版本库。上的改动合并进master,如果没有冲突,会自动完成。上的改动合并进main,如果没有冲突,会自动完成。是默认的远程仓库名字,你也可以用别的名字。如果你确认合并完了,就可以删掉旧分支。」来隔离、管理不同的开发线。
2025-08-10 14:08:44
750
原创 Git基础学习_part1
本文介绍了Git的基础使用方法和常见操作。首先通过对比Git和GitHub的区别,说明Git是版本控制系统,GitHub是基于Git的协作平台。然后详细讲解了Git的三个核心区域(工作区、暂存区、版本库)和基本工作流程(add→commit)。接着提供了本地Git仓库的创建、配置、文件提交和远程同步等操作命令,并重点介绍了git status和git diff两个常用命令的使用场景和输出含义。最后讲解了文件恢复与版本回退的实用技巧,包括git restore、git reset等命令的具体用法及注意事项。全
2025-07-26 16:44:25
372
原创 算法的时间复杂度和空间复杂度
算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。
2025-06-04 17:57:06
868
原创 C++ 类与对象
/当尝试通过p访问 _a 时,会触发空指针解引用(Null Pointer Dereference),导致程序崩溃。// 输出: This is an example of returning this pointer.//正常运行,成员函数存在公共的代码段,所以p->Show()这里不会去p指向的对象上去找。// 用 this 指针区分成员变量和形参。//发生崩溃,PrintA访问了成员变量-a。成员变量最好带"_",因为当赋值给成员函数时,成员函数的形参要再赋给成员变量。// 返回自身对象的引用。
2025-04-17 20:51:53
796
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅