JavaSE学习心得记录

发布时间:2026/10/10 21:15:50

JavaSE学习心得记录 此文章仅是我个人在学习后的理解记录下来是为了以后观看多次记忆文章可能有问题及错误欢迎大家交流并指出1.面向对象三大特点1.1封装当我们将一些现实中的事物将他们的特点提取出来将他们抽象为一个类的时候我们可以在这个类中定义他的属性和一些方法。我们可以通过创建私有变量和成员方法来修改我们的属性值这样可以避免实例对象直接通过成员变量来修改值而是通过调用成员方法来修改属性值可以保护属性安全。创建私有成员变量对外暴露接口提高代码复用性保证数值安全。关键字private私有1.2继承在日常写代码的时候容易出现很多类有相同的变量及方法这个时候我们可以将这些相同部分的代码提取出来创建一个类当其他类需要这些属性或者方法时就可以通过继承这个类从而达到减少重复代码的问题。继承父类后的子类拥有父类所有非私有的属性和方法子类可以根据自己类的需要重写父类方法也可以重新编写一个方法。关键字this调用子类方法super调用父类方法1.3多态同一方法在不同的类中有不同的实现方式用课本上的话说就是“父类的引用指向子类对象”代码格式如Fu f new Zi()。在使用实例方法的过程中编译器会先检查父类Fu中有无此方法如果没有就会报错在有的情况下会检查有无被重写如果被重写就会调用子类里被重写过后的方法。多态在实际开发中会减少工作量和重复代码如 if-else。2.异常处理异常有一个总的体系 Throwable有两个分支 Error 和 ExceptionError 代表的是错误Exception 是指异常我们可以在编写代码的时候避免的问题。Exception 还有很多的分类如 IO 异常运行时异常类异常等等。我们在编写一段代码时不知道这段代码会不会出问题时我们可以将他们可能出现的异常类标记一下当运行时出现问题时可以帮我们快速定位错误的地方。一般我们有两种方式来抛出异常一种是声明式异常 throws另一种是捕获型异常 try-catch。捕获异常语法如下try{//编写可能会出现异常的代码}catch(异常类型 e){处理异常的代码//记录日志/打印异常信息/继续抛出异常}当可能出现多个错误时在catch后继续加catch即可在代码编写的时候异常处理比较重要可以帮助我们快速定位问题的所在减少寻找时间提高开发效率。3.泛型定义及使用当我们编写代码时碰到定义属性或者类的时候我们并不知道要传入的参数类型我们可以先用泛型符号代表类型当我们使用时传入哪个类型就把泛型文字当做什么类型但是只可以代替为同一种类型不能有多种类型。泛型方法定义的格式为修饰符 代表泛型的变量 返回值类型 方法名(参数){ }4.集合集合分为三种分别为SetListMapSet无序、不可重复的集合List有序可重复的集合Map具有映射关系的集合4.1List集合有几种分类常用的是ArrayList集合LinkedList集合Vector集合。ArrayList集合ArrayList内部是通过数组实现的它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔当数组大小不满足时需要增加存储能力就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时需要对数组进行复制、移动、代价比较高ArrayList在内存不够时默认是扩展50% 1个。因此它适合随机查找和遍历不适合插入和删除。LinkedList集合LinkedList是用双向链表结构存储数据的很适合数据的动态插入和删除随机访问和遍历速度比较慢。另外他还提供了List接口中没有定义的方法专门用于操作表头和表尾元素可以当作堆栈、队列和双向队列使用。Vector集合Vector集合底层数据结构是数组实现的其操作和ArrayList一致查询快增删慢但是其内部是线程安全效率低。4.2Set常用集合有HashSet和TreeSetHashSet集合HashSet 是 Set 接口的典型实现大多数时候使用 Set 集合时都使用这个实现类。HashSet 按 Hash 算法来存储集合中的元素因此具有很好的存取和查找性能。HashSet 具有以下特点不能保证元素的排列顺序HashSet 不是线程安全的集合元素可以是 nullTreeSet集合TreeSet 是 SortedSet 接口的实现类TreeSet 可以确保集合元素处于排序状态。TreeSet 支持两种排序方法自然排序和定制排序。默认情况下TreeSet 采用自然排序。4.3.Map接口的常用实现有HashMapTreeMapHashMap集合HashMap是 Map 接口使用频率最高的实现类。HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作并允许使用 null 值和 null 键。与HashSet一样此类不保证映射的顺序特别是它不保证该顺序恒久不变。HashMap 判断两个 key 相等的标准是两个 key 通过 equals() 方法返回 truehashCode 值也相等。HashMap 判断两个 value相等的标准是两个 value 通过 equals() 方法返回 true。TreeMap集合TreeMap是用键来进行升序顺序来排序的。通过Comparable 或 Comparator来排序。5.多线程在这我们要先理解线程和进程的区别进程是程序的一次执行过程是系统运行程序的基本单位。程序是静态的进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程是比进程更小的运行单位是程序中单个顺序的流控制。一个进程中可以包含多个线程。简单来讲线程是一个独立的执行流是进程内部的一个独立执行单元相当于一个子程序。一个进程中的所有线程都在该进程的虚拟地址空间中使用该进程的全局变量和系统资源。操作系统给每个线程分配不同的CPU时间片在某一时刻CPU只执行一个时间片内的线程多个时间片中的相应线程在CPU内轮流执行。多线程应用使用场景有很多比如VNC同时共享屏幕给多个电脑迅雷开启多条线程一起下载QQ同时和多个人一起视频服务器同时处理多个客户端请求。在我们使用Java命令时会启动java虚拟机(JVM)等于启动了一个应用程序也就是启动了一个进程。该进程会自动启动一个 “主线程” 然后主线程去调用某个类的 main 方法一个应用程序有且只有一个主线程,程序员不能New主线程可以New子线程。JVM是多线程因为他至少启动了主线程和垃圾回收线程6.Lambda、函数式接口以及StreamLambda表达式的标准格式为(参数类型 参数名称) ‐ { 代码语句 }Lambda的前提使用Lambda必须具有接口且要求接口中有且仅有一个抽象方法无论是JDK内置的 Runnable 、 Comparator 接口还是自定义的接口只有当接口中的抽象方法存在且唯一时才可以使用Lambda。使用Lambda必须具有上下文推断也就是方法的参数或局部变量类型必须为Lambda对应的接口类型才能使用Lambda作为该接口的实例。函数式接口在Java中是指有且仅有一个抽象方法的接口。Stream流每当我们需要对集合中的元素进行操作的时候总是需要进行循环、循环、再循环Stream流可以帮忙减少循环次数提高代码执行效率。7.IO流流是一组有顺序的有起点和终点的字节集合是对数据传输的总称或抽象。IO流分类有两种分类方式流按照流向数据流向可以分为输入流和输出流。流按照处理数据类型的单位不同可以分为字节流和字符流。缓冲流原理在创建流对象时会创建一个内置的默认大小的缓冲区数组通过缓冲区读写减少系统IO次数从而提高读写的效率。
延伸阅读

更多相关文章

2026/10/10 21:15:50

CSDN + AI:程序员新生产力技术文章大纲

一、引言:为什么说 AI 正在重塑程序员的生产力从“写代码”到“人机协同编程”的范式转变程序员生产力的内涵变化:编码速度、质量、学习成本与交付效率CSDN 作为中文开发者社区,如何顺势融入 AI 能力二、程序员生产力演进的三次浪潮IDE 与代码…

2026/10/10 21:15:50

2026电子签章软件选型指南:技术内核与落地避坑要点

过去三年我一直在帮企业做电子签章软件的选型与落地实施,见过太多“选型五分钟、对接两行泪”的项目。2026年再聊电子签章软件,如果还停留在“找一款能签字盖章的App”,那方向就偏了。如今这些产品背后拼的是实名认证、印章管控、CA证书、时间…

2026/10/10 21:10:50

好消息与坏消息:如何建立不被情绪绑架的消息处理机制

1. 好消息与坏消息的真相:先别急着高兴,也别急着崩溃你肯定有过这种时刻:手机一震,屏幕上弹出一条消息,你心跳加速,点开之后要么想唱歌要么想砸手机。但过了一个星期回头看,当初那个让你兴奋得整…

2026/10/11 2:42:31

三菱CNC数据采集C#源码实战:MC协议帧解析与设备联网

简介:面向三菱数控系统开发与运维人员,这份示例程序以C#源码形式演示数据采集实现方案,解决机床状态实时监控、加工参数读取与故障日志获取等场景需求。压缩包大小约3.52MB,内含FCSB1224W000参考手册PDF与SimCNC模拟环境相关文件&…

2026/10/11 2:42:31

Linux文件系统基石:Ext系列从Ext2到Ext4的演进与核心概念解析

有没有想过,Linux 服务器执行df -h后能精准告诉我哪个分区还剩多少空间,执行rm -rf后文件能真正被删除,这些看似理所当然的操作,背后全是文件系统的功劳。Ext 系列文件系统是 Linux 世界里最经典的“老牌家族”,从 Ext…

2026/10/11 2:42:31

零成本私有AI助手搭建指南:云服务器+Docker+免费模型API

打工人2026年最值得补的一项技能,我觉得不是考证,不是加班,而是把AI工具变成自己的“外挂”。年初我花了一个周末,用华为云的新用户免费额度,搭了一个挂着公网地址的私有AI问答助手,专门用来整理会议纪要、…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑