自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaSE——集合框架一(6/7)-Set系列集合:LinkedHashSet的底层原理、TreeSet集合(介绍,自定义排序规则,排序示例)

注意:如果类本身有实现Comparable接口,TreeSet集合同时也自带比较器,默认使用集合自带的比较器排序。两种方式中,关于返回值的规则:如果认为第一个元素>第二个元素返回正整数即可。如果认为第一个元素

2024-05-22 08:00:00 223

原创 JavaSE——集合框架一(5/7)-Set系列集合:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点:无序:添加数据的顺序和获取出的数据顺序不一致;不重复;无索引;HashSet:无序、不重复、无索引。LinkedHashSet:有序、不重复、无索引。TreeSet:排序、不重复、无索引。

2024-05-20 08:00:00 534

原创 JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈

LinkedList集合的原理基于双链表实现的。特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的。队列的特点是:先进先出,后进后出栈的特点:后进先出,先进后出

2024-05-18 08:00:00 309

原创 JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

:可能需要把后面很多的数据后移,再添加元素;或者也可能需要进行数组的扩容。):查询数据通过地址值和索引定位,查询任意数据耗时相同。比如根据随机索引取数据(高效)!或者数据量不是很大时!:数据量大的同时又要频繁的进行增删操作!学习自:黑马程序员——JavaSE课程。for循环(因为List集合有索引):可能需要把后面很多的数据进行前移。ArrayList集合的执行流程。ArrayList集合的应用场景。注意:是根据索引查询数据快。List集合的特有方法。List系列集合特点。:根据索引查询数据,

2024-05-16 08:00:00 254

原创 JavaSE——集合框架一(2/7)-Collection集合的遍历方式-迭代器、增强for循环、Lambda、案例

选代器是用来遍历集合的专用方式Collection集合获取选代器的方法iterator()Iterator选代器中的常用方法具体实现运行结果:它的执行流程是:首先迭代器对象指向的是集合中的第一个元素,来到第一行代码,hasNext方法先查看当前位置是否有元素,只要有元素就执行while循环;然后next方法获取到当前位置的元素,同时将迭代器指向下一个元素的位置,一次循环结束则输出一个元素,直到hasNext查看到当前位置已无元素,则循环结束,集合遍历完成。

2024-05-14 08:00:00 348

原创 JavaSE——集合框架一(1/7)-集合体系概述(集合体系结构,Collection集合体系)、Collection的常用方法(介绍,实例演示,代码)

为什么要先学Collection的常用方法?Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。Collection的常见方法如下方法名说明把给定的对象添加到当前集合中清空集合中所有的元素把给定的对象在当前集合中删除判断当前集合中是否包含给定的对象判断当前集合是否为空返回集合中元素的个数。把集合中的元素,存储到数组中。

2024-05-12 08:00:00 565

原创 JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)

/直接打印异常对象的信息。它们都是Exception的子类,所以可以直接抛出Exception。先来看第一种处理方式,以时间解析报错和读取不存在文件为例子。需求:调用一个方法,让用户输入一个合适的价格返回为止。//Exception代表可以捕获一切异常。//Exception代表可以捕获一切异常。方法 throws Exception{//可能出现异常的代码。学习自:黑马程序员——JavaSE课程。第二种方法,我们以完成一个需求演示。

2024-05-10 08:00:00 403

原创 JavaSE——异常(1/2)-认识异常(介绍,异常的体系,了解如何解决异常)、自定义异常(自定义异常的种类,实例演示)

Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。自定义运行时异常定义一个异常类继承RuntimeException重写构造器通过throw new 异常类(xxx) 来创建异常对象并抛出编译阶段不报错,提醒不强烈,运行时才可能出现!!自定义编译时异常定义一个异常类继承Exception重写构造器通过throw new 异常类(xxx) 来创建异常对象并抛出编译阶段就报错,提醒更加强烈!

2024-05-08 08:00:00 891

原创 JavaSE——正则表达式(2/2):应用案例、查找信息、用于搜索替换、分割内容

查找信息使用正则表达式查找一段文本中的内容需求:从以下内容中爬取出,手机,邮箱,座机、400电话等信息。"程序员学习Java,\n" +"电话:1866668888,18699997777\n" +"或者联系邮箱:[email protected],\n" +"座机电话:01036517895,010-98951256\n” +"邮箱:[email protected],\n" +"邮箱:[email protected],\n” +"热线电话:400-618-9090,400-6

2024-05-06 08:00:00 359

原创 JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)

正则表达式就是由一些特定的字符组成,代表的是一个规则。作用一:用来校验数据格式是否合法 (更简单、更便捷)作用二:在一段文本中查找满足要求的内容String提供的一个陪陪正则表达式的方法public boolean matches(String regex)判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false。

2024-05-04 08:00:00 599

原创 JavaSE——算法(2/2):查找算法-二分查找(前言、详细图解、代码部分)

查找算法中,首要讨论的是基本查找,也就是顺序查找,在数据量特别大的时候,基本查找这种从前往后挨个找的形式,性能是很差的!所以为了提高一些性能,产生了各种查找算法。这里要学习介绍的是。假设有一个有序数组, { 7,2,79,81,103,127,131,147}

2024-05-02 08:00:00 4

原创 JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)

从初始索引开始,当前索引与之后的索引两两比较,每比较完一次索引增加一次,每次从数组中找出最大值放在数组的后面去。实现冒泡排序的关键步骤分析数组的长度 - 1数组的长度 - i - 1(i为当前的轮数 - 1)当前位置大于后一个位置则交换数据每轮选择当前位置,开始找出后面的较小值(或较大值)与该位置交换。比如第一轮比较:第一个元素分别与后面所有的元素进行比较,根据升序或降序进行交换。选择排序的关键确定总共需要选择几轮:数组的长度 - 1控制每轮从以前位置为基准,与后面元素选择几次。

2024-04-30 08:00:00 568

原创 JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)

静态方法的引用类名 :: 静态方法。使用场景如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。实例方法的引用对象名 :: 实例方法使用场景如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。特定类型的方法引用类型 ::方法使用场景如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特

2024-04-28 08:00:00 1333

原创 JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法

(进一步简化Lambda表达式的写法)参数类型可以省略不写。如果只有一个参数,参数类型可以省略,同时()也可以省略。如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写。

2024-04-26 08:00:00 179

原创 JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)

如果数组中存储的是对象,那该如何排序呢?Arrays.sort中没有指定对于对象的排序规则,不知道根据什么来排序,所以如果用它来对对象排序的话是会报错的。解决方式方式一:让该对象的类实现Comparable(比较规则)接口,然后重写compareTo方法,自己来制定比较规则。方式二:使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后自己制定比较规则。

2024-04-24 08:00:00 640

原创 JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)

JDK 8之后新增的代替SimpleDateFormat的一个API——同样是用来格式化和解析时间的,与SimpleDateFormat相比较来说,它是线程安全的,也就是多个用户进入到一个系统中,用户可以使用同一个DateTimeFormatter。

2024-04-22 08:00:00 937

原创 JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)

如果在开发中我们有这样的需求:我们的系统需要获取美国现在的时间,或者其他地区的时间给用户观看,或者进行一些处理,那应该怎么办呢?美国时间和我们系统当前的时间肯定是不一样的,遇到这样的需求,我们就要用到ZoneId来解决了。世界标准时间(UTC)中国标准时间:世界标准时间(UTC)

2024-04-20 08:00:00 887

原创 JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime

LocalDate的常用API(都是处理年、月、日、星期相关的方法名说明获取年获取月份(1-12)获取日获取当前是一年中的第几天获取星期几:ld.getDayofWeek.getValue()方法名说明直接修改某个信息,返回新日期对象把某个信息加多少返回新日期对象把某个信息减多少返回新日期对象判断两个日期对象,是否相等,在前还是在后LocalTime的常用API都是处理时、分、秒、纳秒相关的方法名说明获取小时获取分获取秒获取纳秒方法名说明修改时间,返回新时间对象把某个信息。

2024-04-18 08:00:00 959

原创 JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)

Calendar代表的是系统此刻时间对应的日历。通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。注意:Calendar是可变对象,一旦修改后其对象本身表示的时间将产生变化。

2024-04-16 08:00:00 257

原创 JavaSE——常用API进阶二(3/8)-Date、SimpleDateFormat(构造器、常用的方法、用法示例、时间格式的常见符号)

接下来会学习JDK8以前传统的日期、时间,以及JDK8开始新增的日期、时间;有部分项目还是有在使用JDK8以下的日期和时间的,所以我们仍然要去了解和学习它们。先开始学习。

2024-04-14 08:00:00 289

原创 JavaSE——常用API进阶二(2/8)-BigDecimal(BigDecimal的常见构造器、常用方法,用法示例,使用规范)

BigDecimal用于解决浮点BigDecimal(double)存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。如:BigDecimal g = new BigDecimal(0.1F); 实际的存储值为:0.10000000149正例优先推荐入参为String的构造方法去,或使用BigDecinal的valueOf方法,此方法内部其实执行了Double的toString,而Double的toString按double的实际能表达的精度对尾数进行了截断。

2024-04-12 08:00:00 295

原创 JavaSE——常用API进阶二(1/8)-Math、System、Runtime(它们提供的常见方法以及具体使用)

1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。学习自:黑马程序员——JavaSE课程。Runtime类提供的常见方法。Runtime是一个单例类。代表程序所在的运行环境。

2024-04-10 08:00:00 1343

原创 JavaSE——常用API进阶一(3/3)-StringBuilder(构造器、拼接内容、反转操作、其他操作),StringBuffer,StringJoiner

相当于是一个容器就是用来操作字符串的StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁以上都可以在API文档中查找到,列出的方法是比较常用的。

2024-04-08 08:00:00 649

原创 JavaSE——常用API进阶一(2/3)-Objects类(equals方法、isNull方法、nonNull方法)、包装类(介绍、包装方法及自动装拆箱、其他常见操作)

为什么要有包装类?对于基本类型,它们都不是对象;但是如果在泛型中我们需要用到这些基本类型的数据,而泛型又只能传入引用数据类型,这个时候包装类就发挥了作用了。包装类就是把基本类型的数据包装成对象。基本数据类型对应的包装类(引用数据类型)byteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDoublebooleanBoolean。

2024-04-06 08:00:00 881

原创 JavaSE——常用API进阶一(1/3)-Object类(Object类的作用、Object类的常见方法-toString方法、equal方法、clone方法)

1、Object中toString方法的作用是什么?存在的意义是什么?基本作用:返回对象的字符串形式。存在的意义:让子类重写,以便返回子类对象的内容。2、Object中equals方法的作用是什么?存在的意义是什么?基本作用:默认是比较两个对象的地址是否相等。存在的意义:让子类重写,以便用于比较对象的内容是否相同。3、什么是对象克隆?当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回。4、什么是浅克隆?拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)

2024-04-04 08:00:00 838

原创 JavaSE——面向对象高级三(5/5)-泛型方法、泛型的通配符、泛型擦除和注意事项

通配符就是“?”,可以在“使用泛型”的时候代表一切类型;E T K V是在定义泛型的时候使用。泛型的上下限泛型上限:?extends Car :?能接收的必须是Car或者其子类。泛型下限:? super Car:?能接收的必须是Car或者其父类。泛型擦除和注意事项泛型是工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。

2024-04-02 08:00:00 465

原创 JavaSE——面向对象高级三(4/5)-认识泛型、定义泛型类、定义泛型接口

定义类、接口、方法时,同时声明了一个或者多个类型变量(如:),称为泛型类、泛型接口、泛型方法、它们统称为泛型。作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,及其可能出现的异常。泛型的本质:把具体的数据类型作为参数传给类型变量。

2024-03-30 08:00:00 347

原创 JavaSE——面向对象高级三(3/5)-枚举(认识枚举、拓展:抽象枚举、用枚举实现单例模式、枚举的应用场景)

修饰符 enum 枚举类名{名称1,名称2,...;其他成员...这些名称,本质是常量,每个常量都会记住枚举类的一个对象实际上完整代码为:具有以下特点:枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象第一点:枚举类的第一行都是常量,记住的是枚举类的对象A a = A.Y;因为枚举类的第一行都是常量,记住的是枚举类的对象,所以我们可以直接用枚举类得到里面的象,例如:枚举类名称.枚举类常量1、枚举类名称.枚举类常量2;A.X、A.Y。

2024-03-28 08:00:00 897

原创 JavaSE——面向对象高级三(2/5)-匿名内部类(重点)-认识匿名内部类、匿名内部类的应用场景

所谓匿名:指的是程序员不需要为这个类声明名字new类或接口(参数值...){类体(一般是方法重写);匿名内部类的应用场景通常作为一个参数传输给方法

2024-03-26 08:00:00 490

原创 JavaSE——面向对象高级三(1/5)-内部类概述、成员内部类、静态内部类、局部内部类

内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。场景:当一个类的内部,包含了一个完整的事务,且这个事务没有必要单独设计时,就可以把这个事务设计成内部类。//内部类内部类有四种形式成员内部类静态内部类局部内部类匿名内部类//成员内部类//也可以和外部类一样定义变量//JDK 16之前,成员内部类是不支持定义静态成员的。成员内部类的调用方式://需要new两次。

2024-03-24 08:00:00 172

原创 JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承

使用接口的注意事项【了解】一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承。一个类实现多个接口,如果多个接口中存在方法签名冲突,则此时不支持多实现。一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先用父类的。一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。

2024-03-22 08:00:00 175

原创 JavaSE——面向对象高级二(3/4)-接口(认识接口、接口的好处)以及接口的综合案例(设计班级学生的信息管理模块)

接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为。修饰符 class 实现类 implements 接口1,接口2,接口3,...{一个类可以实现多个接口(接口可以理解成干爹)

2024-03-20 08:00:00 717

原创 JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)

final关键字final关键字是最终的意思,可以修饰(类、方法、变量)修饰类:该类被称为最终类,特点是不能被继承了。(常见于为工具类修饰)修饰方法:该方法被称为最终方法,特点是不能被重写了。修饰变量:该变量只能被赋值一次。(用于局部变量,成员变量;其中修饰静态成员变量我们称为常量)final修饰变量的注意事项final修饰基本类型的变量,变量存储的数据不能被改变。final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。

2024-03-18 08:00:00 793

原创 JavaSE——面向对象高级二(1/4)-面向对象三大特征之三-多态(认识多态、使用多态的好处、多态下的类型转换问题)

对象多态可以理解为一个对象有多重形态,而行为多态可以理解为对象的不同行为,下面来看多态的具体代码体现然后来看可以看到,一个People类包含着Student和Teacher,以People类创建出学生对象和教师对象,体现了对象多态;p1调用的run(),实际上是Student重写的run方法,而非People里面的run方法,同样的,p2调用的run()则是Teacher重写的run方法,都是People的行为,但执行的结果不一样,体现了行为多态。多态的前提继承/实现存在方法重写。

2024-03-16 08:00:00 358

原创 JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......

什么是权限修饰符?权限修饰符有几种?各自的作用是什么?能够被访问的范围由大到小分别为:public、protected、缺省、private。在开发中,使用得最多的也就是public和private,其他两个权限修饰符只要求在看到源码时可以看得懂。也就是说,一个类不能继承多个父类;但一个类继承的父类,该父类还可以作为一个子类再继承父类,称为多层继承。例如:也就是说,我们创建一个类的时候,如果没有继承类,那么就会默认继承Object类,为Object的子类;而如果已经继承了类,那么也是间接继承了Obje

2024-03-14 08:00:00 828

原创 JavaSE——面向对象高级一(3/4)-面向对象三大特征之二:继承(初步认识继承、了解继承的好处)

1、什么是继承?继承后有啥特点?继承就是用extends关键字,让一个类和另一个类建立起一种父子关系。子类可以继承父类非私有的成员。2、带继承关系的类,JaVa会怎么创建它的对象?对象创建出来后,可以直接访问哪些成员?带继承关系的类,java会用类和其父类,这多张设计图来一起创建类的对象。对象能直接访问什么成员,是由子父类这多张设计图共同决定的,这多张设计图对外暴露了什么成员,对象就可以访问什么成员。

2024-03-12 08:00:00 358

原创 JavaSE——面向对象高级一(2/4)-饿汉式单例、懒汉式单例、代码块、static的注意事项

类方法中可以直接访问类的成员,不可以直接访问实例成员。实例方法中既可以直接访问类成员,也可以直接访问实例成员。实例方法中可以出现this关键字,类方法中不可以出现this关键字的。

2024-03-10 08:00:00 350

原创 JavaSE——面向对象高级一(1/4)-static修饰成员变量、应用场景,static修饰成员方法、应用场景

类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享。实例变量(对象的变量):无static修饰,属于每个对象的。类变量的用法:类名.类变量(推荐)对象.类变量(不推荐)类变量的应用场景在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。

2024-03-08 08:00:00 390

原创 JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)

每个账户都是一个账户对象:所以需要设计账户类Account,月用于创建账户对象封装账户信息。ATM同样是一个对象,需要设计ATM类,代表ATM管理系统,负责对账户的处理。每个账户都是一个账户对象:所以需要设计账户类Account,月用于创建账户对象封装账户信息。ATM同样是一个对象,需要设计ATM类,代表ATM管理系统,负责对账户的处理。登录信息的内容比较,数据的分析,处理等都需要常用API来解决,如使用String。登录信息的内容比较,数据的分析,处理等都需要常用API来解决,如使用String。

2024-03-06 08:00:00 1769

原创 JavaSE——常用API(3/3)-ArrayList入门、ArratList使用、ArrayList综合案例

现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。设计完菜品类之后就可以开始设计菜品的操作类了,因为需求是进行菜品的上架,是由用户进行的,所以要通过菜品操作类来执行。尖括号内的E代表了容器可以存储什么数据类型,如果不写则代表可以存储任意数据类型。把每一个菜品当成一个对象,所以先要设计一个菜品类来创建菜品对象。通过完成一个简单的案例来掌握ArrayList的初步使用,设计菜品的操作类,要完成上架菜品的操作和展示菜品的操作。完成菜品的上架,以及菜品信息浏览功能。

2024-03-04 08:00:00 1608

空空如也

空空如也

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

TA关注的人

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