自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 java异常处理

Java 异常处理是通过 try-catch-finally 关键字捕获和处理程序运行时错误,同时支持 throw 主动抛出异常、 throws 声明方法异常,异常体系以 Throwable 为根类,分为 Error (系统级错误,程序无法处理)和 Exception (程序可处理异常,含受检异常、非受检异常)。- 受检异常(编译时异常):必须显式捕获或声明抛出,如 IOException 、 SQLException。(3) throw 主动抛出异常。// 可能抛出异常的代码。

2025-12-27 10:31:29 289

原创 深度遍历与广度遍历

广度优先遍历(BFS):优先访问当前节点的所有邻接节点,再逐层向下探索,核心是“先广后深”。- 深度优先遍历(DFS):优先沿着一条路径走到尽头,再回溯探索其他分支,核心是“先深后广”。- BFS:找最短路径(无权图)、层序遍历、广度搜索目标、判断图的连通性(层级方式)。空间复杂度 与深度相关(最坏O(n)) 与宽度相关(最坏O(n))- DFS(前序):1 → 2 → 4 → 5 → 3。- BFS(层序):1 → 2 → 3 → 4 → 5。- DFS:常用递归(隐式栈)或栈(显式栈)实现。

2025-12-23 13:42:17 114

原创 io流的介绍

常用实现类: FileReader / FileWriter (文件字符流)、 BufferedReader / BufferedWriter (缓冲字符流)、 InputStreamReader / OutputStreamWriter (转换流,字节→字符)。IO(Input/Output,输入/输出)流是Java中用于处理设备间数据传输的机制,以流的方式(数据序列)读写数据,核心是实现数据的输入(从外部读入程序)和输出(从程序写入外部)。= null) { // 按行读取。

2025-12-22 10:55:04 404

原创 JAVA和C++哪个就业前景更好?

Java薪资分层明显,一线城市初级岗月薪8 - 15k,资深架构师月薪能达30 - 50k,整体薪资虽低于顶尖C++岗位,但因其学习门槛低、生态成熟,开发者能快速入职成长,职业路径更平稳。1. 就业机会与适配场景:Java就业优势更突出,其岗位需求量在软件开发类岗位中占比达60%-70%,广泛分布于互联网、金融、电商等行业,适配企业级应用、大数据、分布式系统等多个场景,且一线到二线城市均有充足岗位。3. 行业趋势:Java契合云计算、大数据、AI等主流技术的应用需求,相关领域的持续发展会让其需求保持稳定。

2025-11-26 14:25:11 577

原创 Java数据结构

Java实现: HashMap (线程不安全,JDK8后数组+链表+红黑树)、 Hashtable (线程安全,效率低)。- 特点:通过哈希函数映射键值对,查询、增删快(理想O(1)),需处理哈希冲突(链地址法、开放地址法)。- 特点:动态大小,非连续存储,通过节点引用连接,增删快(O(1)),访问慢(需遍历,O(n))。- 特点:固定大小,连续存储,按索引访问快(O(1)),增删慢(需移动元素,O(n))。- 特点:完全二叉树结构,分为大根堆(父节点≥子节点)和小根堆(父节点≤子节点)。

2025-11-04 16:17:49 243

原创 数据结构单链表

数据结构中的单链表是一种线性存储结构,通过节点依次连接实现,每个节点包含数据域(存储数据)和指针域(指向后继节点)。适用于频繁插入/删除、查询操作较少的场景,如动态队列、栈的实现,以及数据量不固定的线性数据存储。- 表中/表尾插入:找到目标位置,修改前驱节点指针指向新节点,新节点指针指向后继节点。- 遍历:从表头开始,依次访问每个节点的数据域,直到指针为 null。- 删除:找到待删节点的前驱节点,使其指针跳过待删节点,指向后继节点。- 表头插入:新节点指针指向原表头,更新表头为新节点。

2025-11-03 09:11:47 224

原创 哈夫曼编码

例如,“abracadabra”中“a”出现5次(高频),可能编码为“0”;“b”出现2次,可能编码为“11”,最终整体编码长度远短于固定长度编码(如ASCII)。3. 生成编码:从哈夫曼树的根节点出发,左分支标记为“0”,右分支标记为“1”,每个字符的编码即为从根到该字符节点的路径序列。哈夫曼编码是一种基于字符出现频率的无损数据压缩算法,核心是给高频字符分配短编码、低频字符分配长编码,以最小化总编码长度。1. 统计频率:计算每个字符在数据中出现的频率,并以频率为权重生成独立节点。

2025-10-31 15:15:43 232

原创 如何判断一个list集合是否包含某个元素

在Java中判断List集合是否包含某个元素,核心是使用List接口自带的** contains(Object o) 方法**,该方法会返回 boolean 值( true 表示包含, false 表示不包含)。注意:若List中存储的是自定义对象,需重写 equals() 方法(通常还需重写 hashCode() ),否则会默认使用Object类的 equals() (仅比较对象地址,无法实现内容比对)。1. 当调用 list.contains(o) 时,程序会遍历List中的每个元素。

2025-10-13 11:51:44 396

原创 为什么学习GUI程序设计

学习GUI程序设计的核心价值,是让程序从“命令行的文字交互”升级为“可视化的图形交互”,满足用户直观、便捷的操作需求,同时覆盖更多必须依赖图形界面的应用场景。- 增强项目实用性:在实际开发中,面向普通用户的软件几乎都是GUI形式,掌握GUI能让你开发出更贴近市场需求、可直接落地的产品,而非仅能在终端运行的工具。- 提升用户体验:相比纯文字的命令行,按钮、菜单、窗口等GUI元素更符合大众使用习惯,无需记忆复杂指令(如日常用的浏览器、办公软件均为GUI程序)。

2025-10-13 11:46:11 298

原创 包的定义与引入

通配符引入:用 * 引入某个包下的所有类,例如 import java.util.*;包(Package)的定义:是Java中用于组织和管理类文件的目录结构,本质是将同名类区分在不同命名空间下,避免类名冲突,同时让代码结构更清晰(如按功能或模块分组)。- 精确引入:指定引入某个具体类,例如 import java.util.ArrayList;,仅能使用 ArrayList 类。包的引入:当需要使用其他包中的类时,用 import 关键字在类定义前引入目标类,避免每次使用时写完整类名(全限定名)。

2025-10-13 11:43:03 422

原创 为什么使用Java多线程

提升程序响应速度:在图形界面或服务端程序中,多线程可让主线程(如UI交互)不被耗时任务(如数据计算)阻塞,保持程序流畅。使用Java多线程的核心目的是提升程序效率,通过让CPU同时处理多个任务,避免因单线程等待(如IO操作)导致的资源浪费。- 实现任务并行化:对于可拆分的复杂任务(如大数据处理、批量计算),多线程能将其分解为子任务并行执行,大幅缩短总耗时。- 提高CPU利用率:当一个线程因IO(如读取文件、网络请求)阻塞时,其他线程能继续使用CPU,避免硬件闲置。

2025-10-13 11:28:41 616

原创 泛型集合和非泛型集合有什么区别?

比如非泛型的 ArrayList 存 String ,取数据要写 (String)list.get(0);泛型集合和非泛型集合的核心区别在于是否指定数据类型:泛型集合在定义时就锁定存储类型,非泛型集合默认存储 Object 类型,由此衍生出类型安全、性能和代码简洁度的差异。3. 性能表现:泛型集合避免了装箱拆箱(值类型与 Object 的转换),性能更优;非泛型集合存储值类型时会频繁装箱拆箱,消耗资源。1. 类型安全性:泛型集合在编译期就校验数据类型,杜绝“存错类型”的问题;

2025-10-13 09:55:26 556

原创 如何更有效率的学习java

按“基础语法→面向对象(类、继承、多态)→常用API(集合、IO、多线程)→框架(Spring、MyBatis)”的顺序推进,每学一块就画思维导图,明确这块知识的核心问题(比如“多线程解决什么场景?”“集合框架各容器的区别?- 进阶阶段:找经典练手项目(图书管理系统、博客系统),强制自己用学到的知识解决问题(比如用集合存数据,用多线程处理并发任务),遇到卡壳再回头查资料,比单纯看书效率高10倍。- 视频课选口碑好的(比如黑马、尚硅谷的基础课),重点看“老师如何分析问题、拆解代码”,而不是只抄代码。

2025-07-08 16:45:47 275

原创 如何更好的使用豆包

例如,让它写文章时,要明确主题、风格、字数等要求,如“请写一篇关于人工智能发展趋势的议论文,风格严谨,字数 2000 字左右”。看到感兴趣的图片,想知道相关信息,可使用拍照问功能,让豆包进行识别和解答。豆包会不断更新,推出新的功能和优化现有功能。你可以关注相关的官方信息、社交媒体等,及时了解新功能的特点和使用方法,像新出的 AI 修图、照片动起来等功能,能为你带来更多的便利和乐趣。- 多尝试不同表述:如果对生成的结果不满意,可换用不同的提示词重新提问,或者提出更具体的修改要求,让豆包进一步优化。

2025-07-03 23:10:08 926

原创 学不进去却要考试怎么办

拆分任务:把复习内容分成10分钟小模块,比如“背10个单词”“做1道计算题”,完成就打勾,成就感会推着你继续。- 先划重点:找老师画的范围或往年真题,圈出高频考点,先攻克能快速提分的部分,别贪多。- 给自己设限时:比如“先学40分钟,然后玩10分钟手机”,用短时间专注换效率,别硬熬。- 换个环境:如果在家躺平学不进去,就去图书馆、自习室,周围人学习的氛围会传染你。- 用输出倒逼输入:对着空气讲知识点,或者拿张纸边写边记,比干看书记忆更牢。

2025-06-24 15:29:48 246

原创 Java中方法的默认行为是什么?

Java方法的默认行为本质是语言层面的“约定俗成”,从访问权限到参数传递,再到接口与继承场景的默认实现,这些规则既保证了代码的简洁性,也避免了潜在的逻辑漏洞。在Java中,方法的“默认行为”可从不同维度理解,包括未显式定义时的隐含规则、参数与返回值的默认处理,以及特殊场景下的默认实现。- 静态方法属于类,默认通过 类名.方法名 调用,无法通过对象实例调用(虽允许但不推荐),且不能访问非静态成员(隐含 this 不可用)。- 返回类型需兼容(可协变,如父类返回 Object ,子类可返回 String )。

2025-06-23 18:49:37 295

原创 Java中关于方法的其他特性

Java方法的特性贯穿面向对象编程的核心逻辑,从参数传递机制到静态/动态绑定,再到Lambda时代的方法引用,这些特性共同构成了Java灵活且严谨的方法体系。- 特点:使用 native 关键字声明,无方法体,通过JNI(Java Native Interface)调用非Java代码(如C/C++)。- 应用场景:工具类方法(如 Math.sqrt() )、单例模式的 getInstance() (常配合 static 字段)。// str仍为"abc"(字符串不可变,修改引用副本指向新对象)

2025-06-23 18:45:26 481

原创 Java的方法重载和方法重写有什么区别?

多态实现:父类引用指向子类对象时,调用子类重写的方法(如 List list = new ArrayList();编译器行为 编译时根据参数类型确定调用哪个方法(静态绑定) 运行时根据对象实际类型确定调用哪个方法(动态绑定)- 方法名、参数列表、返回值类型必须完全相同(JDK5+支持协变返回,即子类返回值为父类返回值的子类)。目的 通过参数差异实现功能扩展(多态的静态形式) 通过子类覆盖父类逻辑实现多态(运行时多态)- 重写是“子类覆盖父类”的纵向覆盖,发生在继承体系中,是运行时期的多态。

2025-06-23 18:44:03 499

原创 Java的方法重载

合理使用重载可减少方法名数量,提升API的易用性,但需注意参数匹配的优先级,避免因重载逻辑复杂导致的调用歧义哦~在Java中,方法重载(Method Overloading) 是面向对象编程的重要特性,指在同一个类中定义多个同名方法,但通过参数列表的不同来区分它们。- 为不同参数类型提供同名方法,避免记忆多个方法名(如 Arrays.sort() 可排序 int[] 、 String[] 等)。- 参数列表不同:参数的数量、类型或顺序不同(至少满足其一),与返回值类型、访问修饰符无关。

2025-06-23 18:41:32 422

原创 如何调整方法区的大小?

设置初始大小:用 -XX:MetaspaceSize 设置元空间的初始大小。- 设置最大大小:通过 -XX:MaxMetaspaceSize 指定元空间的最大限制,默认无限制。- 设置最大大小:使用 -XX:MaxPermSize 设定永久代最大可分配空间,如 -XX:MaxPermSize=256m 表示最大为256MB。- 设置初始大小:通过 -XX:PermSize 参数设置永久代的初始分配空间,例如 -XX:PermSize=64m 将初始大小设置为64MB。

2025-06-23 18:36:12 241

原创 如何检查和排除方法区的内存溢出问题?

若程序抛出 java.lang.OutOfMemoryError: Metaspace (JDK8+)或 PermGen space (JDK7及之前),基本可确定为方法区问题。- 动态代理(Spring AOP、Hibernate代理)、字节码增强(CGLIB、Javassist)、反射生成类(如 Proxy.newProxyInstance )。- 框架选型:避免使用高动态性框架(如CGLIB),优先选择原生代理( java.lang.reflect.Proxy )或轻量级字节码工具。

2025-06-23 18:34:08 387

原创 介绍一下Java中方法区和堆内存的区别

属于JVM规范定义的内存区域(JDK8后由“永久代”改为“元空间”,底层使用本地内存),用于存储类的元数据(如类结构、方法定义)、静态变量、常量、已编译的字节码等,是线程共享的区域。是JVM中最大的内存区域,用于存储对象实例和数组,所有new创建的对象都在堆中分配内存,也是线程共享的区域,但对象的访问需要考虑线程安全。- 分代回收:堆分为新生代(对象存活率低,用复制算法回收)和老年代(对象存活率高,用标记-整理算法回收),提升GC效率。- 堆内存是“对象的摇篮”,动态分配对象空间,依赖GC回收无用对象。

2025-06-23 18:24:23 411

原创 Java继承关系中的内存分配

System.out.println("父类构造函数,parentField = " + parentField);Base() { System.out.println("Base构造函数");static { System.out.println("父类静态代码块");static { System.out.println("子类静态代码块");static { System.out.println("Sub静态块");Sub() { System.out.println("Sub构造函数");

2025-06-23 18:12:20 1051

原创 Java语言的特点

原理:Java代码编译为字节码( .class 文件),可在任何安装JVM的系统(Windows、Linux、Mac等)上运行,无需针对不同平台重写代码。- 自带大量核心包(如 java.lang 、 java.util 、 java.io ),覆盖字符串处理、集合、IO、网络、数据库等场景。- 反射机制( java.lang.reflect ):运行时获取类信息、动态创建对象、调用方法。- 生态庞大:第三方库(如Spring、MyBatis、Hadoop)和框架丰富,开发效率高。

2025-06-23 18:06:46 340

原创 Java的常用系统包

LocalDate (日期)、 LocalTime (时间)、 LocalDateTime (日期时间)。- javax.swing :高级组件( JFrame 、 JPanel 、 JTable )。- 日期时间: Date 、 Calendar (Java 8后推荐 java.time 包)。- 日常开发: java.lang 、 java.util 、 java.io 几乎必用。- java.awt :基础组件( Frame 、 Button )、布局管理器。

2025-06-23 18:05:16 412

原创 一维数组的使用

下标越界异常:访问超出长度的下标会报错( ArrayIndexOutOfBoundsException ),例如 nums[5] 对长度为5的数组来说下标最大是4。for (int num : nums) { // 遍历每个元素,num依次取nums中的值。// 升序排序,排序后nums=[1,2,5,8]String[] names = {"张三", "李四", "王五"};

2025-06-23 17:49:49 337

原创 Java里throw和throws的区别

throws :仅声明异常类型,不负责处理异常,调用该方法时必须处理这些异常(用 try-catch 捕获或继续用 throws 声明)。- throw :抛出异常后,若没有被 try-catch 捕获,会向上层调用者传递异常,导致方法终止执行。- throws :声明方法可能抛出的异常类型,用于方法签名中,告诉调用者该方法可能抛出哪些异常。遇到异常问题时,先想清楚是要“主动抛出异常”还是“声明方法可能的异常”,再选择对应的关键字~ 😊。// 调用throws声明的方法时,必须处理异常。

2025-06-23 17:46:58 1170

原创 跟着ai学习

问高频面试题:比如“Java中synchronized和Lock的区别”“如何解决缓存击穿问题”,AI会给你分点回答,还能补充底层原理(比如synchronized是JVM内置锁,Lock是API层面的锁)。小技巧:用AI时尽量“说清楚需求”,比如“用Java写一个冒泡排序,要求加上时间复杂度分析,并用ArrayList存储数据”,越具体,AI给的答案越精准~ 你最近在用AI学什么呀?”,AI会列计划(第1周学语法,第2周练OOP,第3周做小项目)。3. 用AI学“大厂级代码”

2025-06-23 17:38:40 446

原创 Java语言的学习技巧

语法规则:先学变量、数据类型、运算符、条件语句(if/else)、循环(for/while)等基础语法,这是写代码的“积木”。- 刷题巩固:去LeetCode、力扣(LeetCode中国版)或牛客网刷简单算法题,比如“两数之和”“反转字符串”,练逻辑思维。- 新技术方向:了解Java 17+的新特性(如密封类、模式匹配),学分布式、云计算(Docker、Kubernetes)。- 面向对象编程(OOP):重点理解类、对象、封装、继承、多态,比如用“学生类”“教师类”练习创建对象和方法调用。

2025-06-23 14:44:07 856

原创 deepseek的好处

融入的MoE架构可智能分配计算任务,提高计算效率,让模型在处理大规模数据和复杂任务时游刃有余。在数学推理、代码生成、文本风格迁移等多个领域表现优秀,能迅速准确地解决各种问题,如解数学题、生成高质量代码、进行文本风格转换等。多模态模型能同时处理和理解视觉与文本数据,具备强大的跨模态穿透与融合感知能力,可实现多种模态的高效推理与协同输出。运用低秩键值联合压缩技术等,对关键数据进行高效压缩,在减少存储需求的同时不降低性能,使推理速度显著提升。

2025-06-23 14:40:03 475

原创 c语言表达格式

printf() :格式化输出,如 printf("年龄:%d\n", age);- scanf() :格式化输入,如 scanf("%d", &age);- 函数体、条件语句( if )、循环语句( for 、 while )等需用 {} 包裹代码块。- 变量、函数名需见名知意,通常用小写字母,单词间用下划线分隔(如 student_score )。int main() { // main函数,返回值类型为int。- 多行注释: /* 这是多行注释,可跨越多行 */

2025-06-19 15:02:19 784

原创 Java的条件语句

Java中的条件语句用于基于不同条件执行不同的代码块。语句用于判断一个条件是否为真,如果为真则执行对应的代码块。语句用于多分支选择,适用于对固定值进行匹配的情况。的简化形式,适用于简单的条件判断。当需要检查多个条件时,可以使用。语句在条件为真时执行。

2025-06-19 14:24:50 187

原创 Java异常类的方法

及其子类)提供了一系列方法用于获取异常信息、堆栈跟踪和处理逻辑。返回堆栈跟踪的数组,每个元素代表一个堆栈帧(类名、方法名、文件名、行号等)。将堆栈跟踪信息输出到标准错误流(System.err)。返回异常的详细描述信息(通常为构造时传入的字符串)。返回导致当前异常的底层原因(若存在),否则返回。设置当前异常的原因(链式异常),只能调用一次。返回本地化的异常描述信息,默认与。将堆栈跟踪信息输出到指定。将堆栈跟踪信息输出到指定。相同,可被子类重写。

2025-06-19 14:20:49 309

原创 Java子类继承规则

Java中的继承机制允许子类(派生类)继承父类(基类)的属性和方法。

2025-06-19 14:14:54 404

原创 Java程序的异常处理

继承Exception(Checked)或(Unchecked)创建自定义异常。try {throw new CustomException("自定义异常");

2025-06-19 14:12:48 176

原创 JavaString类的使用

String类是Java中用于表示字符串的核心类,位于java.lang包中。字符串是不可变的,一旦创建就不能修改,任何对字符串的修改操作都会生成一个新的字符串对象。使用加号(+)可以连接字符串,实际是通过StringBuilder实现的。通过字面量方式创建字符串会检查字符串常量池,若存在则直接引用,否则新建对象并放入池中。对于频繁修改字符串的场景,建议使用StringBuilder(非线程安全)或StringBuffer(线程安全)。split方法根据正则表达式拆分字符串,join方法连接字符串数组。

2025-06-19 14:08:38 318

原创 Java程序的控制结构

顺序结构是最基本的控制结构,代码按照从上到下的顺序逐行执行。适用于多分支选择,需注意。

2025-06-19 14:04:56 179

原创 Java的多维数组

Java中的多维数组实际上是数组的数组。最常见的形式是二维数组,可以想象为表格或矩阵。声明多维数组时需指定各维度的大小。// 3行4列的二维数组// 三维数组。

2025-06-19 14:03:00 230

原创 Java程序编程规范

继承。

2025-06-19 14:00:22 275

原创 Java程序的执行过程

Java程序的执行过程分为编写、编译、加载、验证、准备、解析、初始化、使用和卸载几个阶段。

2025-06-19 13:58:11 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除