自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

HashSet底层通过HashMap实现,利用哈希表存储元素,添加元素时先计算哈希值定位存储位置。自定义类型需要重写hashCode()和equals()方法才能正确去重,因为HashSet判断重复的标准是:哈希值相同且equals()返回true。代码示例展示了如何使用HashSet存储学生对象并实现内容相同的对象去重功能。

2025-06-02 17:23:25 289

原创 第十二节:第四部分:集合框架:List系列集合:LinkedList集合的底层原理、特有方法、栈、队列

本文介绍了LinkedList集合的底层原理及其应用场景。LinkedList采用双向链表数据结构,实现了高效的插入和删除操作。文章通过代码展示了LinkedList的两个典型应用:实现队列(FIFO)和栈(LIFO)数据结构,分别使用addLast/removeFirst和push/pop方法进行操作。示例演示了入队/出队和压栈/弹栈的过程,输出结果验证了LinkedList在这两种场景下的正确使用方式。这些特性使LinkedList成为处理频繁插入删除操作的理想选择。

2025-06-02 17:05:37 130

原创 第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

本文介绍了Java中List系列集合的特点和使用方法。主要内容包括:List集合的特有方法(如按索引操作元素)、支持的四种遍历方式(for循环、迭代器、foreach和Lambda表达式),以及ArrayList的底层实现原理(基于数组的动态扩容)。文章通过代码示例展示了不同遍历方式的应用,并分析了ArrayList适合频繁查询但不频繁增删的场景。图片展示了相关概念和运行结果。

2025-05-31 17:57:25 565

原创 第十二节:第二部分:集合框架:Collection集合的遍历方式:迭代器、增强for循环、Lambda、案例

本文展示了Java中遍历集合的三种方式:迭代器遍历、增强for循环和Lambda表达式。通过示例代码分别演示了每种遍历方式的具体实现,包括对字符串集合和自定义对象(Movie类)集合的遍历操作。其中,迭代器使用hasNext()和next()方法,增强for循环简洁直观,Lambda表达式结合forEach方法最为简便。文中还提供了一个完整的电影信息管理案例,展示了如何遍历存储电影对象的集合并输出详细信息。这些方法各有特点,开发者可根据实际需求选择合适的集合遍历方式。

2025-05-31 16:37:06 583

原创 第十二节:第一部分:集合框架:概述、Collection集合的常用方法

【代码】第十二节:第一部分:集合框架:概述、Collection集合的常用方法。

2025-05-31 15:58:38 233

原创 第十一节:第三部分:异常:异常的两种处理方式

文章摘要:文章介绍了Java异常的两种主要处理方式:捕获异常并记录/反馈信息,以及捕获异常后尝试修复。第一部分展示通过捕获Exception基类记录异常信息并提示用户;第二部分演示通过循环捕获异常确保用户输入有效数字。两个示例代码分别处理文件读取异常和用户输入验证,展示了异常处理的实际应用场景,包括使用try-catch块、异常打印和输入验证循环等关键技术。

2025-05-28 17:56:36 522

原创 第十一节:第二部分:异常:认识异常、自定义异常

本文介绍了Java中的异常机制及其应用。首先阐述了异常的概念和体系结构,区分了运行时异常和编译时异常。然后通过代码示例演示了如何自定义异常:AgeIllegalRuntimeexception继承RuntimeException作为运行时异常,AgeIllegalException继承Exception作为编译时异常。主程序exceptionTest1展示了两种处理方式:try-catch捕获异常和使用throws声明异常的方法。最后说明了异常的作用,即通过异常对象封装问题并抛出,实现对程序错误的优雅处理。

2025-05-28 16:43:41 283

原创 第十一节:第一部分:正则表达式:应用案例、爬取信息、搜索替换

本文介绍了正则表达式的基本概念及其在Java中的应用。主要内容包括: String类中与正则表达式相关的方法及书写规则 正则表达式的主要作用:数据校验、搜索替换和内容分割 两个实际案例代码: 校验手机号和邮箱格式的正确性 使用正则表达式实现文本替换和分割功能 关键正则表达式语法和分组替换技巧 通过具体代码示例展示了如何利用正则表达式处理常见字符串操作,如格式验证、重复字符优化等,并附有运行结果截图。文中还总结了正则表达式的基本语法规则。

2025-05-27 21:26:16 535

原创 第十节第九部分:jdk8新特性:方法引用、特定类型的方法引用、构造器引用(不要求代码编写后同步简化代码,后期偶然发现能用这些知识简化即可)

本文介绍了Java中四种方法引用的使用方式:静态方法引用、实例方法引用、特定类型方法引用和构造器引用。通过学生排序、字符串忽略大小写排序和汽车对象创建三个示例代码,展示了方法引用如何简化Lambda表达式。静态方法引用使用类名::方法名,实例方法引用通过对象::方法名实现,特定类型方法引用如String::compareToIgnoreCase可直接调用类型方法,构造器引用则使用类名::new来创建对象。这些语法糖能有效减少冗余代码,提升代码可读性。

2025-05-24 18:05:39 188

原创 第十节第八部分:Lambda表达式、Lambda表达式的省略规则

Lambda表达式是Java 8引入的一种简化代码的方式,主要用于简化函数式接口的匿名内部类实现。通过Lambda表达式,可以更简洁地表示单方法接口的实现。例如,在Swimming接口中,传统的匿名内部类写法可以通过Lambda表达式简化为()->{ System.out.println("学生游泳~~~"); }。此外,Lambda表达式还可以用于简化数组操作和排序,如Arrays.setAll和Arrays.sort方法中,通过Lambda表达式可以更直观地实现功能。

2025-05-23 17:55:31 192

原创 第十节第七部分:Arrays类、自定义排序规则Comparable、自定义比较器Comparator

本文介绍了Java中Arrays类的常用方法,包括toString、copyOfRange、copyOf、setAll和sort等,展示了如何通过这些方法操作数组。此外,文章还探讨了对象排序的实现方式,包括使用Comparable接口和Comparator比较器来自定义排序规则。通过学生类的示例代码,演示了如何根据年龄或身高对对象数组进行升序或降序排序。最后,文章强调了自定义排序规则时需遵守的官方约定,确保排序逻辑的正确性。

2025-05-23 17:04:16 139

原创 第十节第六部分:常见API:DateTimeFormatter、Period、Duration

文章介绍了Java 8中DateTimeFormatter、Period和Duration类的常用方法。DateTimeFormatter用于日期时间的格式化和解析,支持自定义格式。Period用于计算两个日期之间的年、月、日差值。Duration则用于计算两个时间点之间的天、小时、分钟、秒等时间间隔。文章通过代码示例展示了这些类的具体用法,并附有运行结果截图,帮助读者更好地理解和使用这些时间处理工具。

2025-05-22 20:56:42 437

原创 第十节第五部分:(熟悉即可,用时再查)常见API:LocalDate、LocalTime、LocalDateTime、Zoneld、ZoneldDateTime、Istant

【代码】第十节第五部分:(熟悉即可,用时再查)常见API:LocalDate、LocalTime、LocalDateTime、Zoneld、ZoneldDateTime、Istant。

2025-05-22 12:33:07 268

原创 第十节第四部分:常见API:秒杀案例、Calendar(技术已过时,了解即可)

本文通过两个Java代码示例,分别展示了如何实现秒杀案例和使用Calendar类进行日期操作。在秒杀案例中,通过解析字符串时间并转换为日期对象,判断用户下单时间是否在秒杀活动时间内,从而输出秒杀成功或失败的结果。在Calendar类的使用示例中,展示了如何获取系统当前时间的日历对象,提取年份、月份等信息,以及如何修改和调整日历中的日期。这两个案例帮助理解Java中日期和时间的处理方式,特别是Calendar类的常用方法和注意事项。

2025-05-21 21:24:41 177

原创 第十节第三部分:常见API:传统时间:Date日期类、SimpleDateFormat(技术已过时,了解即可)

本文介绍了Java中Date日期类和SimpleDateFormat类的常用方法。Date类用于表示系统当前时间,可以通过getTime()获取毫秒值,并通过setTime()修改时间。SimpleDateFormat类用于格式化日期对象、时间和毫秒值,支持将字符串解析为日期对象。文章通过代码示例展示了如何使用Date类获取和修改时间,以及如何使用SimpleDateFormat类进行日期格式化和解析。总结部分强调了SimpleDateFormat在日期处理中的重要性,并提供了常见方法的使用示例。

2025-05-21 18:13:43 172

原创 第十节第二部分:常用API:BigDecimal

BigDecimal类主要用于解决浮点数运算中的精度丢失问题。在Java中,直接使用double或float进行小数运算时,可能会出现结果失真的情况。通过将小数转换为字符串并封装为BigDecimal对象,可以确保运算的精确性。常见的构造器包括BigDecimal(String)和BigDecimal.valueOf(double),推荐使用后者以简化代码。BigDecimal提供了add、subtract、multiply和divide等方法进行精确的加减乘除运算,其中divide方法还可以指定舍入模式。

2025-05-21 08:41:20 442

原创 第十节第一部分:常见的API:Math、System、Runtime

本文介绍了Java中的三个常用类:Math、System和Runtime,并展示了它们的一些常用方法。Math类提供了数学运算功能,如取绝对值、向上取整、向下取整、四舍五入、取最大值、最小值、次方和随机数等。System类提供了系统相关操作,如终止虚拟机、获取当前时间等。Runtime类则用于与Java虚拟机交互,如获取处理器数、内存信息、启动外部程序等。通过代码示例,展示了这些类的具体使用方法及其输出结果,帮助读者了解这些类的基本功能。

2025-05-20 21:49:57 168

原创 第九节第三部分:常用API:StringBuilder、StringBuffer、StringJoiner

文章介绍了Java中StringBuilder和StringJoiner的使用及其优势。StringBuilder相较于String在字符串拼接时效率更高,支持链式编程和反转操作,适合频繁修改字符串的场景。StringJoiner则进一步简化了字符串拼接,特别适合处理数组或集合的格式化输出,效率更高。文章通过多个代码示例展示了StringBuilder和StringJoiner的具体应用,包括拼接、反转、数组格式化等操作,并对比了它们的性能差异。

2025-05-20 17:52:41 461

原创 第九节第二部分:常用API:Object类、包装类

本文介绍了Java中Object类的常见方法、包装类的使用及其常见操作。通过代码示例展示了包装类的自动装箱和拆箱功能,以及如何将基本数据类型转换为字符串和字符串转换为基本数据类型。代码中使用了Integer和Double包装类,并演示了泛型和集合中包装类的应用。最后,展示了代码运行结果,验证了包装类在数据类型转换中的有效性。

2025-05-20 11:48:26 1231

原创 第九节第一部分:常用API:Object类Tostring、equals方法

本文介绍了Java中的API、Object类及其常用方法,重点讲解了toString和equals方法的重写。通过Student类的示例代码,展示了如何重写toString方法以返回对象的字符串表示,以及如何重写equals方法以比较两个对象的内容是否相等。Test类中的代码演示了这些方法的使用,并展示了运行结果。文章通过代码示例和运行结果,帮助读者理解并掌握Object类提供的常用方法。

2025-05-20 10:45:57 218

原创 第八节第五部分 泛型方法,泛型的通配符,上下限,注意事项

本文介绍了Java中泛型方法的使用及注意事项。首先,通过代码示例展示了泛型方法的定义和使用,包括如何通过泛型方法处理不同类型的对象集合,如Car类及其子类BMW和BENZ。其次,文章详细说明了泛型的注意事项,如泛型擦除、泛型不支持基本数据类型等。泛型擦除意味着泛型信息在编译后会被移除,而泛型只能支持引用数据类型,不能直接使用基本数据类型。通过这些内容,读者可以更好地理解泛型在Java中的应用及其限制。

2025-05-18 18:07:21 175

原创 第八节第四部分:认识泛型、泛型类、泛型接口

本文介绍了Java中的泛型概念及其应用。首先通过代码示例展示了泛型的基本使用,如ArrayList<String>,以避免类型转换错误。接着,详细讲解了泛型类的定义与使用,包括单类型参数和多类型参数的泛型类,以及泛型类的继承关系。最后,介绍了泛型接口的定义与实现,展示了如何通过泛型接口处理不同类型的数据(如学生和老师)。通过这些示例,读者可以掌握泛型在Java中的基本用法及其在实际开发中的应用。

2025-05-17 19:03:22 425

原创 第八节第三部分:认识枚举、枚举的作用和应用场景

本文介绍了枚举的概念、特点及其在Java中的应用场景。枚举是一种特殊的类,用于定义一组常量,其构造器是私有的,不能直接创建对象。枚举类提供了额外的API,如values()和valueOf(),方便操作枚举对象。文章通过代码示例展示了枚举的基本用法,包括普通枚举和抽象枚举的实现,并对比了使用常量和枚举作为信息标志的优劣。枚举在信息标志和分类场景中具有更高的可读性和安全性,适合用于替代传统的常量定义。

2025-05-16 21:18:53 453

原创 第八节第二部分:认识匿名内部类,匿名内部类的使用场景

匿名内部类是Java中一种没有显式命名的内部类,通常用于简化代码结构。它可以直接在创建对象时定义并实现接口或抽象类的方法。在代码一中,匿名内部类被用来实现Animal抽象类的cry方法,并立即创建对象调用该方法。代码二展示了匿名内部类的使用场景,通过实现Swimming接口,分别定义了狗和猫的游泳行为,并在go方法中调用。匿名内部类适用于需要临时实现接口或抽象类的场景,能够减少代码量并提高可读性。

2025-05-16 11:21:22 215

原创 第八节第一部分:内部类概述,成员内部类(了解即可),静态内部类(了解即可)

本文介绍了Java中的成员内部类和静态内部类的基本概念及其特点。成员内部类可以直接访问外部类的成员变量和静态成员变量,但不能定义静态成员(JDK16后支持)。静态内部类则可以直接访问外部类的静态成员,但不能直接访问实例成员变量。文章通过代码示例展示了如何定义和使用这两种内部类,并提供了运行结果的截图。成员内部类和静态内部类的主要区别在于访问权限和静态成员的支持情况。

2025-05-15 20:35:07 140

原创 第七节第三部分:从JDK8开始接口新增的方法、接口的多继承、注意事项

本文介绍了Java接口新增的三种方法以及接口的多继承及其注意事项。从JDK8开始,接口支持默认方法、私有方法(JDK9)和静态方法,分别通过default、private和static关键字定义。默认方法和静态方法可以通过实现类或接口直接调用,而私有方法只能在接口内部使用。此外,接口支持多继承,但需注意方法签名冲突问题。如果一个类继承父类并实现接口,且父类和接口中存在同名默认方法,优先使用父类的方法。若一个类实现多个接口且存在同名默认方法,需重写该方法以避免冲突。

2025-05-15 17:57:39 435

原创 第七节第二部分:接口的综合案例

本文展示了一个Java学生信息管理系统的案例,通过接口和实现类的设计,实现了两种不同的学生信息处理方案。Student类用于存储学生的基本信息,StudentOperator接口定义了两个方法:printAllInfo和printAverageScore,分别用于打印所有学生信息和计算平均成绩。StudentOperatorImpl1和StudentOperatorImpl2是接口的两个实现类,分别提供了不同的信息处理方式。ClassManager类负责管理学生列表,并通过接口调用不同的实现类来执行操作。

2025-05-14 17:52:37 738

原创 第七节第一部分:接口:认识接口,使用接口的好处

本文介绍了Java中接口的概念及其使用好处。通过代码示例,展示了如何定义接口(如接口B和C)以及如何在类中实现这些接口(如类D)。接口允许类实现多个接口,从而实现多重继承的效果。此外,接口的使用还带来了灵活性,例如在Test类中,通过接口类型引用不同实现类的对象,实现了类似多态的效果。总结来说,接口提供了一种规范,使得代码更具扩展性和可维护性。

2025-05-14 16:47:42 173

原创 第六节第二部分:抽象类的应用-模板方法设计模式

模板方法设计模式通过定义一个算法的框架,允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在Java中,可以通过抽象类实现该模式。本文展示了如何使用模板方法设计模式,建议使用final关键字修饰模板方法,以防止子类修改算法的结构。代码示例中,People类作为抽象类定义了模板方法write(),并包含一个抽象方法writeMain(),由子类Teacher和Student分别实现。通过这种方式,模板方法确保了算法的整体结构一致,同时允许子类在特定步骤上自由发挥。

2025-05-13 12:09:33 326

原创 第六节第一部分:认识抽象类及其好处

抽象类是一种不能实例化的类,通常用于定义子类的通用行为和属性。在Java中,抽象类通过abstract关键字声明,并且可以包含抽象方法(没有方法体的方法)。子类继承抽象类时,必须实现所有的抽象方法,否则子类也必须声明为抽象类。抽象类的主要好处包括:提供代码复用、强制子类实现特定方法、支持多态性。例如,Animal抽象类定义了Cry方法,Cat和Dog类继承并实现了该方法,展示了多态性的应用。抽象类适用于需要定义通用行为但不需要实例化的场景。

2025-05-12 21:37:48 191

原创 第五节第二部分:final、常量

final关键字在Java中用于修饰类、方法和变量,表示不可更改的特性。当final修饰类时,该类不能被继承;修饰方法时,该方法不能被重写;修饰变量时,变量只能被赋值一次。对于成员变量,final通常与static结合使用,表示常量,建议使用大写字母和下划线命名。局部变量、实例变量和静态变量都可以用final修饰,但一旦赋值后不能再次修改。引用类型的final变量虽然地址不能改变,但其指向的内容可以修改。示例代码展示了final在不同场景下的应用,如常量定义、变量赋值限制等。

2025-05-12 11:36:53 216

原创 第五节第一部分:多态,使用多态的好处

多态是面向对象编程中的一个重要概念,允许不同类的对象对同一方法做出不同的响应。在Java中,多态通过继承和方法重写实现。例如,People类作为父类,Student和Teacher类作为子类,子类重写了父类的run方法。多态的好处包括解耦合和灵活性,父类对象可以接受任何子类对象,并且可以通过强制类型转换调用子类特有的方法。然而,强制类型转换可能导致ClassCastException异常,因此在使用前应使用instanceof进行类型检查。通过多态,代码的可扩展性和可维护性得到提升。

2025-05-12 10:56:28 265

原创 第四节第三部分:子类构造器的特点,super、this调用兄弟构造器

文章通过两个Java代码示例展示了子类构造器的特点及其应用场景。第一个示例中,Teacher类继承自people类,并通过super关键字调用父类的构造器来初始化父类的属性,同时添加了子类特有的属性skill。第二个示例展示了如何使用this关键字在同一个类中调用兄弟构造器,以便在未提供某些参数时设置默认值。例如,Student类在未提供学校名称时,默认设置为“黑马大学”。这两个示例分别演示了子类构造器如何继承父类属性并扩展新功能,以及如何通过构造器重载实现灵活的初始化逻辑。

2025-05-11 13:48:21 219

原创 第四节第二部分:继承权限修饰符+单继承、object、方法重写

本文主要介绍了Java中的继承权限修饰符、单继承、object类、方法重写及其应用场景。继承权限修饰符中,重点讲解了private和public的作用,private限制成员仅在类内访问,而public允许全局访问。单继承是指一个类只能继承一个父类,Java通过extends关键字实现。Object类是所有类的根类,提供了一些通用方法如toString()。方法重写允许子类重新定义父类的方法,适用于需要修改父类行为的场景。代码示例展示了Student类的继承与toString()方法的重写,Test类验证

2025-05-11 13:21:24 199

原创 第四节第一部分:继承,使用继承的好处

继承是面向对象编程中的一个重要概念,它允许一个类(子类)基于另一个类(父类)来构建,从而复用父类的属性和方法。在Java中,继承通过extends关键字实现。例如,Teacher类继承了People类,因此Teacher类可以使用People类中的name属性和相关方法。通过继承,子类可以扩展父类的功能,添加新的属性和方法。在示例中,Teacher类添加了Skill属性和PrintInfo方法,并在Test类中展示了如何使用继承后的类。继承的主要使用场景包括代码复用、扩展功能以及实现多态性。

2025-05-11 12:56:22 176

原创 第三节第二部分:Static修饰方法应用场景

Static修饰方法在Java中常用于设计工具类,工具类中的方法都是类方法,用于完成特定功能,提高了代码的复用性和开发效率。与实例方法不同,类方法无需创建对象即可调用,节省了内存。工具类的构造器通常被私有化,以防止实例化。示例中,MyUtil工具类通过createCode方法生成随机验证码,RegisterDemo和LoginDemo类分别调用该方法生成六位和四位验证码,展示了工具类的实际应用。

2025-05-09 20:38:04 226

原创 第三节第一部分:Static修饰类变量、成员变量

本文通过一个简单的Java代码示例,展示了静态变量在类中的使用。代码中定义了一个User类,其中包含一个静态变量num,并在构造函数中对其进行自增操作。在Test类中,创建了三个User对象,并通过静态变量num统计了对象的数量。最终输出结果为3,表明静态变量num成功记录了对象的创建次数。该示例演示了静态变量在类中的共享特性,适用于需要跨对象共享数据的场景。

2025-05-08 22:45:52 219

原创 第二节第二部分:ArrayList

【代码】第二节第二部分:ArrayList。

2025-03-24 21:08:26 246

原创 第二节第一部分:String字符串

【代码】第二节第一部分:String字符串。

2025-03-24 21:00:27 312

原创 第一节第二部分:面向对象编程案例-电影操作系统

面向对象编程案例-电影操作系统。

2025-03-23 16:12:02 197

空空如也

空空如也

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

TA关注的人

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