- 博客(128)
- 收藏
- 关注
原创 Java基础 10.8
本文摘要:Java线程编程核心知识点总结,包括:1.线程终止方式(自动退出/通知控制);2.线程常用方法(start/interrupt/sleep/yield等)及守护线程特点;3.线程生命周期状态转换;4.同步机制(synchronized代码块/方法)和互斥锁原理;5.线程死锁的形成条件与避免;6.锁释放的四种场景。通过售票系统等案例演示了多线程同步控制,并强调避免使用suspend/resume等废弃方法。全文系统梳理了Java线程编程的关键技术点和注意事项。
2025-10-08 17:51:03
884
原创 Java基础 10.1
文章摘要:本文介绍了Java事件处理机制和线程相关概念。事件处理采用"委派事件模型",通过事件源、事件对象和监听器实现。线程部分解释了进程与线程的区别,以及单线程、多线程、并发和并行的概念。详细说明了两种创建线程的方式(继承Thread类和实现Runnable接口),并提供了多个线程应用案例代码。最后比较了两种线程创建方式的优缺点,建议优先使用Runnable接口方式,因其更灵活且支持资源共享。
2025-10-01 17:34:07
811
原创 Java基础 9.27
Java绘图基础:坐标系原点位于左上角,以像素为单位,x和y分别表示水平和垂直距离。像素是屏幕显示的基本单位,无法直接换算为厘米。绘图原理涉及Component类的paint()和repaint()方法,在窗口变化时自动调用。Graphics类提供多种绘图方法,如drawLine()、drawRect()等,可绘制直线、矩形、椭圆等图形,并支持填充、设置颜色和字体等操作。
2025-09-27 23:44:46
297
原创 Java基础 9.26
本文摘要: 泛型接口:语法为interface接口名<T,R>,静态成员不能使用泛型,类型在继承或实现时确定,未指定则默认为Object; 泛型方法:语法为修饰符<T,R>返回类型方法名(参数列表),可定义在普通类或泛型类中,调用时确定类型; 泛型通配符:<?>支持任意类型,<? extends A>支持A及其子类(上限),<? super A>支持A及其父类(下限); JUnit单元测试框架解决了传统main方法测试的繁琐问题; 通过DAO泛型类
2025-09-26 17:19:55
200
原创 Java基础 9.26
本文摘要: Java泛型只能使用引用类型,如List<Integer>正确而List<int>错误。泛型可指定子类类型,未指定时默认为Object。 通过Employee类案例演示泛型集合排序:使用Comparator实现按name和birthday的定制排序,MyDate类实现Comparable接口完成日期比较。 自定义泛型类注意事项: 可定义多个泛型参数(T,R,M等) 普通成员可用泛型,但泛型数组不能初始化 静态成员不能使用类泛型 创建对象时确定具体类型,未指定则默认为Obj
2025-09-26 11:02:16
297
原创 Java基础 9.25
本文介绍了Java泛型的概念、使用方法和优势。通过ArrayList示例展示了传统方法的问题:类型不安全(可混入不同类型对象)和需要频繁类型转换。泛型解决方案通过参数化类型(如ArrayList<Dog>)实现编译时类型检查,提高安全性并减少转换开销。文章还演示了泛型在自定义类(Person<E>)和集合类(HashSet、HashMap)中的应用,强调泛型能增强代码健壮性,避免运行时类型转换异常,同时提升开发效率。泛型机制使得数据类型在编译期确定,既保证了类型安全又优化了性能。
2025-09-25 17:31:17
574
原创 Java基础 9.14
文章摘要: Java集合框架中HashSet通过hashCode()+equals()实现去重,先计算hash值定位索引,冲突时用equals比较;TreeSet则通过Comparator或Comparable接口的compareTo方法实现排序去重。 新闻处理示例展示了ArrayList的倒序遍历和字符串截取操作,当标题超过15字符时显示前15位加省略号。 Car对象集合演示了ArrayList的常用操作,包括增删查改、遍历(增强for和迭代器)等核心方法。 HashMap示例实现了员工薪资管理,包含键值
2025-09-24 21:59:54
193
原创 Java基础 9.24
Collections工具类提供了对Set、List和Map等集合的常用操作,包括排序、查询和修改等方法。主要功能有:reverse()反转元素顺序、shuffle()随机排序、sort()自然或自定义排序、swap()交换元素位置。代码示例演示了如何使用这些方法,如对字符串列表进行反转、按长度排序、交换元素等操作,还展示了求最大值、统计元素出现次数、复制集合等实用功能。这些方法大大简化了集合操作,提高了开发效率。
2025-09-24 16:19:23
123
原创 Java基础 9.24
本文介绍了Java集合框架中的关键类及其应用。首先讲解了Properties类的特性,它继承自Hashtable并实现Map接口,支持键值对存储且不允许null值,常用于配置文件操作。其次分析了集合类的选择策略,根据存储类型(单列/双列)和操作需求(增删/查询)来选用合适的实现类。最后详细解析了TreeSet和TreeMap的排序机制,通过构造器传入Comparator实现自定义排序规则,并附源码分析其底层实现原理。这些内容为Java开发者合理选择和使用集合类提供了实用指导。
2025-09-24 11:48:28
136
原创 Java基础 9.24
本文总结了Java中Map接口的实现类HashMap和HashTable的特性及底层机制。HashMap是使用频率最高的实现类,允许null键值,采用数组+链表+红黑树结构存储,线程不安全。其扩容机制为初始容量16,临界值12,之后每次扩容一倍。当链表长度超过8且数组容量≥64时会转为红黑树。HashTable则不允许null键值,线程安全(synchronized),初始容量11,扩容机制为(oldCapacity<<1)+1。两者都通过哈希算法确定元素位置,但HashMap性能更优,而Has
2025-09-24 10:18:21
928
原创 Java基础 9.22
本文展示了Java中Map接口的常用操作和遍历方法。第一部分介绍了Map的基本方法如put、remove、get、size等;第二部分演示了三种Map遍历方式:通过keySet获取键集、通过values获取值集以及通过entrySet获取键值对集;第三部分通过员工薪资筛选案例,实践了多种Map遍历方法的应用。代码示例展示了HashMap的使用,包括添加元素、删除元素、查找键值以及遍历输出特定条件的元素。
2025-09-22 17:16:46
181
原创 Java基础 9.21
摘要:Map接口是Java中用于存储键值对(Key-Value)的集合类,与Collection并列。其特点包括:键不可重复(类似HashSet),值可重复;键值可为null(键null唯一,值null可多个);常用String作为键;通过键可唯一获取对应值。底层实现中,键值对存储在HashMap$Node对象中,Node实现了Entry接口,便于遍历操作。示例代码展示了Map的基本用法,包括put、get等操作。
2025-09-21 23:47:44
224
原创 Java基础 9.20
LinkedHashSet通过哈希表和双向链表实现有序元素存储,确保插入顺序与遍历顺序一致。它继承HashSet特性,不允许重复元素,在添加时先计算哈希值确定位置,再通过链表维护次序。示例代码中,Car类重写equals()和hashCode()方法实现对象去重,LinkedHashSet成功过滤了重复的"宝马30"对象。该集合适用于需要保持插入顺序且元素唯一的场景,其内部通过head和tail指针维护双向链表结构,新增元素会追加到链表尾部。
2025-09-21 10:02:17
158
原创 Java基础 9.20
HashSet底层基于HashMap实现,通过hash值计算索引位置存储元素。当发生哈希冲突时,会调用equals方法比较,相同则放弃添加,不同则链式存储。Java8中当链表长度达到8且数组容量≥64时会转为红黑树。HashSet首次扩容到16容量,临界值为12(16*0.75),之后每次扩容为前次2倍。这种机制结合了哈希表和树结构的优势,在保证查询效率的同时优化了大数据量下的性能表现。
2025-09-20 19:30:49
235
原创 Java基础 9.18
本文介绍了Java中Set接口及其实现类HashSet的特性与使用方法。Set接口是Collection的子接口,具有无序、不允许重复元素的特点,最多只能包含一个null值。常用方法与Collection接口相同,遍历方式支持迭代器和增强for循环,但不能通过索引访问。HashSet作为Set的主要实现类,底层基于HashMap实现,使用哈希表存储数据(数组+链表+红黑树)。文章通过代码示例演示了HashSet的增删操作,特别指出其不能存储重复对象(包括不同实例但相同内容的String对象),但允许存储不同
2025-09-19 10:49:52
455
原创 Java基础 9.18
LinkedList底层通过双向链表实现,支持元素重复和null值,线程不安全。其维护first和last指针指向首尾节点,每个节点包含prev、next和item属性实现双向链接。相比数组结构,链表在增删操作上效率更高。基本操作包括增删改查,提供多种遍历方式(迭代器、增强for、普通for)。与ArrayList相比,LinkedList适合频繁插入删除场景,而ArrayList更适合随机访问。通过模拟双向链表和源码分析,可以深入理解LinkedList的工作原理。
2025-09-18 17:22:02
303
原创 Java基础 9.17
文章摘要: 本文分析了ArrayList和Vector的核心特性及底层机制。ArrayList允许null值,基于数组实现,线程不安全但效率高;无参构造初始容量为0,首次扩容至10,后续按1.5倍扩容。Vector线程安全(方法同步),无参构造默认容量10,扩容时默认翻倍。两者均使用Object数组存储数据,但Vector适合多线程场景。通过源码解析了扩容逻辑,对比了二者的构造器初始化及扩容策略差异。
2025-09-18 09:27:08
1013
原创 Java基础 9.16
本文介绍了Java中List接口的基本使用和常见操作。主要内容包括:1)Collection练习,演示创建Dog对象并存入ArrayList,使用迭代器和增强for循环遍历;2)List接口特点:有序、可重复、支持索引,常用实现类有ArrayList、LinkedList和Vector;3)List常用方法如add、get、remove、set等;4)List练习,展示元素插入、获取、删除、修改和迭代遍历;5)List的三种遍历方式:迭代器、增强for循环和普通for循环。通过代码示例详细说明了List接口
2025-09-16 21:53:29
149
原创 Java基础 9.14
本文介绍了Java中增强for循环的用法,它作为简化版的迭代器,适用于遍历集合和数组。示例代码展示了如何使用增强for循环遍历Collection集合和普通数组,底层实现仍基于迭代器机制。这种语法提供了更简洁的遍历方式,是传统迭代器的快捷替代方案。
2025-09-14 22:54:48
190
原创 Java基础 9.13
本文介绍了Java集合框架的核心概念和使用方法。集合相比数组具有动态扩容、支持多种数据类型、提供丰富操作方法等优势。Java集合主要分为单列集合(Collection)和双列集合(Map)两大类,其中Collection又分为List(有序可重复)和Set(无序不重复)。文章详细演示了Collection接口的常用方法(add/remove/contains等)以及两种遍历方式:使用迭代器Iterator和增强for循环。通过ArrayList和HashMap的代码示例,展示了集合的基本操作,包括添加、删除
2025-09-14 19:02:41
877
原创 Java基础 9.13
本文展示了四个Java编程练习,涵盖字符串处理、用户输入验证和统计功能。1) Homework01实现字符串指定区间反转功能,通过参数校验和数组交换完成;2) Homework02进行用户注册验证,检查用户名长度、密码全数字及邮箱格式;3) Homework03处理姓名格式化,将"LuMingFei"转换为"Fei,Lu.M"格式;4) Homework04统计字符串中大小写字母、数字及其他字符的数量。每个练习都包含异常处理机制,体现了完整的编程规范。
2025-09-13 17:52:00
114
原创 Java基础 9.11
JDK8引入的第三代日期类解决了前两代日期类的不足。LocalDate、LocalTime和LocalDateTime提供了不可变且线程安全的日期时间处理,支持格式化(DateTimeFormatter)和时间戳(Instant)转换。新类还包含plus/minus方法进行日期计算,MonthDay类用于检查重复事件,消除了前代类存在的偏移性、可变性和线程安全问题,并提供了更丰富的API功能。
2025-09-13 16:29:08
182
原创 Java基础 9.10
本文介绍了Java中常用的System类方法、大数处理类和日期类。System类包含exit()、arraycopy()、currentTimeMillis()和gc()等方法,用于程序控制、数组操作和时间获取。BigInteger和BigDecimal用于处理超大整数和高精度浮点数,提供了精确的加减乘除运算。日期处理部分包含三代日期类:第一代Date类和SimpleDateFormat类用于日期格式化和解析;第二代Calendar类提供了更灵活的日期字段操作。这些工具类为Java开发提供了基础的系统操作、
2025-09-10 23:09:29
596
原创 Java基础 9.9
本文介绍了Java中Arrays类的常用方法及其应用案例。主要内容包括:1) toString方法用于数组转字符串;2) sort方法支持自然排序和定制排序,通过Comparator接口实现自定义排序规则;3) binarySearch方法用于二分查找,要求数组必须有序;4) copyOf方法实现数组拷贝;5) fill方法进行数组填充;6) equals方法比较数组内容;7) asList方法将数组转为List集合。文章通过代码示例演示了这些方法的使用,并分析了排序和查找的底层实现原理,特别强调了接口编程
2025-09-09 22:44:44
281
原创 Java基础 9.9
摘要:Java中的Math类提供常用数学运算方法,包括绝对值(abs)、幂运算(pow)、向上取整(ceil)、向下取整(floor)、四舍五入(round)、平方根(sqrt)、随机数(random)及最大值(max)/最小值(min)比较。其中,使用random方法获取指定范围随机数时,可通过公式(int)(a+Math.random()*(b-a+1))实现a到b之间的整数随机。这些静态方法可直接调用,无需实例化Math类。
2025-09-09 12:34:06
120
原创 Java基础 9.7
摘要: StringBuilder是Java中可变的字符序列类,非线程安全但效率高于StringBuffer,适用于单线程字符串操作。它继承AbstractStringBuilder类,使用char[]存储数据,支持序列化。主要方法为append()和insert(),可接受任意类型数据。与String(不可变,效率低)和StringBuffer(线程安全)相比,StringBuilder在单线程环境下性能最优。使用场景建议:频繁修改用StringBuilder/StringBuffer(多线程选后者),少
2025-09-07 17:38:31
288
原创 Java基础 9.7
本文介绍了Java中String类和StringBuffer类的基本用法。String类为不可变字符串,提供equals、substring、replace等常用方法;而StringBuffer类是可变的字符序列,适合频繁修改字符串内容,效率更高。文章详细讲解了String的各类操作方法(比较、大小写转换、分割等),以及StringBuffer的构造器、增删改查等核心功能。同时演示了String与StringBuffer之间的相互转换方式,帮助开发者根据需求选择合适的字符串处理类。
2025-09-07 17:04:40
246
原创 Java基础 9.6
摘要: String类用于存储字符串序列,是final类不可继承,底层使用final char[]存储数据。创建String对象有直接赋值和构造器两种方式:直接赋值指向常量池,构造器先在堆中创建对象再指向常量池。字符串具有不可变性,对象分配后内容不可改变,但引用可以重新指向。比较字符串内容用equals(),==比较引用地址。intern()方法可返回字符串在常量池中的地址。
2025-09-06 17:14:51
283
原创 Java基础 9.6
Java包装类摘要:包装类是对基本数据类型的对象封装,支持自动装箱(基本类型→包装类)和拆箱(包装类→基本类型)。JDK5+支持自动转换,底层调用valueOf()方法。关键特性:1)Integer缓存-128~127范围的对象复用;2)与String互转的三种方式;3)Character类提供字符类型判断方法。典型面试题涉及三元运算符的类型提升和缓存机制,如Integer(127)比较返回true而Integer(128)比较返回false。注意:包含基本类型的==比较直接判断值是否相等。
2025-09-06 12:14:48
273
原创 Java基础 9.6
本文介绍了Java自定义异常的实现与应用。主要内容包括:1)自定义异常类需继承Exception或RuntimeException,通常选择后者以便使用默认处理机制;2)通过年龄验证示例演示了如何定义AgeException类并抛出异常;3)对比了throws和throw的区别;4)提供了命令行参数除法计算的练习,涵盖数组越界、数字格式和除零异常处理。文章展示了如何通过自定义异常增强程序的错误处理能力。
2025-09-06 10:55:19
253
原创 Java基础 9.5
本文介绍了Java异常处理中throws关键字的使用要点:1.throws用于声明方法可能抛出的异常,由调用者处理;2.编译异常必须处理(try-catch或throws),运行时异常默认throws;3.子类重写方法时抛出异常需与父类一致或是其子类;4.已用try-catch处理的异常可不再throws。通过代码示例演示了不同场景下的异常处理规则,包括编译异常、运行时异常的处理方式以及继承关系中的异常声明规范。
2025-09-06 09:40:31
158
原创 Java基础 9.5
本文介绍了Java异常处理的基本概念和实现方式。异常处理主要包括try-catch-finally和throws两种方式,前者由程序员自行捕获处理异常,后者将异常抛出给调用者。文章详细说明了try-catch的使用方法:try包含可能出错的代码,catch处理异常;可以有多个catch块处理不同异常;finally块无论是否发生异常都会执行。通过一个输入校验的练习案例,演示了如何利用异常处理实现用户输入的整数验证。最后总结了异常处理执行流程:无异常时执行try和finally,有异常时执行try、catch
2025-09-05 21:30:53
409
原创 Java基础 9.4
编译异常是代码编译阶段必须处理的异常类型,主要包括SQLException(数据库操作异常)、IOException(文件操作异常)、FileNotFoundException(文件不存在)、ClassNotFoundException(类加载失败)、EOFException(文件读取异常)和IllegalArgumentException(参数不合法)等。这些异常若不处理将导致编译失败。
2025-09-04 23:29:46
131
原创 Java基础 9.4
Java异常分为错误(Error)和异常(Exception)两大类。Error是严重问题如栈溢出,程序会崩溃;Exception包括运行时异常和编译时异常。运行时异常如空指针、数组越界等,编译器不检查;编译时异常如IO异常,必须处理。常见运行时异常包括空指针异常、算术异常、数组越界、类型转换异常和数字格式异常等。异常处理能提高程序健壮性,但需权衡处理范围以保证效率。
2025-09-04 18:27:14
1408
原创 Java基础 9.2
本文展示了一个Java枚举类Color的实现示例,该枚举包含RED、BLUE等五种颜色值,每个枚举对象存储RGB三原色值。Color类实现了接口A的show()方法,用于打印颜色值,并演示了在switch语句中使用枚举的案例。代码结构清晰,通过构造方法初始化枚举值,展示了枚举类型在实际开发中的典型应用。
2025-09-02 22:38:20
108
原创 Java基础 8.28
摘要:Java中的@SuppressWarnings注解用于抑制编译器警告,支持多种警告类型如unchecked(未检查操作)、rawtypes(未指定泛型)、unused(未使用变量)等。该注解可作用于类、方法、变量等元素,通过IDE提示快速生成。元注解包括@Retention(指定注解保留时间)、@Target(指定适用元素)、@Documented(文档化)和@Inherited(继承性),主要用于修饰其他注解,其中@Retention有SOURCE、CLASS(默认)、RUNTIME三种策略。这些特
2025-08-28 12:23:39
357
原创 Java基础 8.27
本文介绍了两种Java注解的使用方法:1)@Override用于标识方法重写,确保父类存在该方法,仅适用于方法级别;2)@Deprecated标记过时代码元素(类、方法等),支持新旧版本兼容。两者都通过元注解@Target限定作用范围。
2025-08-27 23:22:12
251
原创 Java基础 8.26
文章摘要:本文介绍了Java注解的基本概念和三种核心注解的使用。注解作为元数据用于修饰程序元素,不影响逻辑但可被编译运行。重点讲解了@Override的功能:确保方法正确重写父类方法,否则编译报错;通过@interface定义注解类,并展示了实际代码示例说明其验证机制。还提及@Deprecated标记过时代码和@SuppressWarnings抑制警告的功能。
2025-08-26 23:13:01
254
原创 Java基础 8.25
本文介绍了Java枚举类的常用方法及其应用。内容包括:1)枚举类的基本方法如name()、ordinal()、values()、valueOf()和compareTo()的使用示例;2)通过Week枚举类练习演示了如何定义枚举值并实现toString()方法;3)枚举类的使用细节,包括不能继承其他类(隐式继承Enum类)但可以实现接口的特性。文中提供了完整的代码示例,展示了如何遍历枚举值、比较枚举对象以及自定义枚举类的toString方法。这些内容涵盖了枚举类的主要特性和实际应用场景。
2025-08-25 20:21:40
210
原创 Java基础 8.23
摘要:Java枚举可以通过自定义类和enum关键字两种方式实现。自定义类需将构造器私有化,使用final+static修饰枚举对象,属性设为只读。enum关键字更简洁,默认继承Enum类,枚举对象直接写在前面,用逗号分隔。两种方式都遵循常量命名规范(全大写),enum方式还支持无参构造器的简化写法。文中通过季节和性别枚举的示例代码演示了具体实现方式及注意事项。
2025-08-23 18:17:09
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅