![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
文章平均质量分 76
qiyi.sky
我可复杂,简介不了。(doge)
展开
-
JavaSE——集合框架二(5/6)-Map系列集合:HashMap、LinkHashMap、TreeMap原理
HashMap的特点HashMap的底层原理HashMap跟HashSet的底层原理是一模一样的,都是基于哈希表实现的。哈希表JDK8之前,哈希表 =数组 + 链表JDK8开始,哈希表 =哈希表是一种增删改查数据,性能都较好的数据结构。HashMap底层是基于哈希表实现的HashMap集合是一种增删改查数据,性能都较好的集合但是它是无序,不能重复,没有索引支持的(由键决定特点)HashMap的键依赖hashCode方法和equals方法保证。原创 2024-07-16 08:00:00 · 252 阅读 · 0 评论 -
JavaSE——集合框架二(4/6)-Map集合的遍历方式(键找值,键值对,Lambda)、Map集合案例(需求与分析,问题解决)
先获取Map集合全部的键,再通过遍历键来找值。把“键值对”看成一个整体进行遍历(较为复杂)JDK 1.8 开始之后的新技术,结合Lambda表达式进行遍历。原创 2024-07-14 08:00:00 · 499 阅读 · 0 评论 -
JavaSE——集合框架二(6/6)-(案例)补充知识:集合的嵌套(需求与分析、问题解决、运行测试)
集合的嵌套顾名思义,指的是集合中的元素又是一个集合。需求与分析要求在程序中记住如下省份和其对应的城市信息,记录成功后,要求可以查询出湖北省的城市信息。原创 2024-06-02 08:00:00 · 241 阅读 · 0 评论 -
JavaSE——集合框架二(3/6)-Map系列集合:概述、常用方法(认识Map集合,在什么情形下使用,Map集合体系,Map集合体系的特点)
Map集合称为双列集合,格式:{key1=value1,key2=value2,key3=value3,...),一次需要存一对数据做为一个元素Map集合的每个元素“key=value”称为一个键值对/键值对对象/一个Entry对象,Map集合也被叫做“键值对集合”Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。原创 2024-05-30 08:00:00 · 579 阅读 · 0 评论 -
JavaSE——集合框架二(2/6)-综合案例-斗地主游戏(做牌、洗牌、发牌、排序、看牌)
/每张牌是存在牌值大小的@Override//首先必须有一副牌//1.做出54张牌,存入到集合allCards//a.所有牌的点数//b.所有牌的花色//表示每张牌的牌值大小//c.遍历点数,再遍历花色,组织牌size++;//得到一张牌//存入牌库//单独存入大小王//小王//大王。原创 2024-05-28 08:00:00 · 236 阅读 · 0 评论 -
JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类
可变参数数据类型...参数名称可变参数的特点和好处运行结果:可变参数的注意事项一个形参列表中可变参数只能有一个可变参数必须放在形参列表的最后面Collections工具类和Collection区分开来,Collections是一个用来操作集合的工具类。Collections的常用静态方法> list)super T>c)原创 2024-05-26 08:00:00 · 383 阅读 · 0 评论 -
JavaSE——集合框架一(7/7)-Collection集合的总结、集合的并发修改异常问题(案例引入、for循环-解决方法、迭代器-解决方法、小结)
1、如果希望记住元素的添加顺序,需要存储重复的元素,又要频繁的根据索引查询数据?2、如果希望记住元素的添加顺序,?3、如果不在意元素顺序,?4、如果希望记住元素的添加顺序,也没有重复元素需要存储,且希望增删改查都快?5、如果要对元素进行排序,也没有重复元素需要存储?且希望增删改查都快?原创 2024-05-24 08:00:00 · 281 阅读 · 0 评论 -
JavaSE——集合框架一(6/7)-Set系列集合:LinkedHashSet的底层原理、TreeSet集合(介绍,自定义排序规则,排序示例)
注意:如果类本身有实现Comparable接口,TreeSet集合同时也自带比较器,默认使用集合自带的比较器排序。两种方式中,关于返回值的规则:如果认为第一个元素>第二个元素返回正整数即可。如果认为第一个元素原创 2024-05-22 08:00:00 · 300 阅读 · 0 评论 -
JavaSE——集合框架一(5/7)-Set系列集合:Set集合的特点、底层原理、哈希表、去重复原理
Set系列集合特点:无序:添加数据的顺序和获取出的数据顺序不一致;不重复;无索引;HashSet:无序、不重复、无索引。LinkedHashSet:有序、不重复、无索引。TreeSet:排序、不重复、无索引。原创 2024-05-20 08:00:00 · 561 阅读 · 0 评论 -
JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈
LinkedList集合的原理基于双链表实现的。特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的。队列的特点是:先进先出,后进后出栈的特点:后进先出,先进后出原创 2024-05-18 08:00:00 · 325 阅读 · 0 评论 -
JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
:可能需要把后面很多的数据后移,再添加元素;或者也可能需要进行数组的扩容。):查询数据通过地址值和索引定位,查询任意数据耗时相同。比如根据随机索引取数据(高效)!或者数据量不是很大时!:数据量大的同时又要频繁的进行增删操作!学习自:黑马程序员——JavaSE课程。for循环(因为List集合有索引):可能需要把后面很多的数据进行前移。ArrayList集合的执行流程。ArrayList集合的应用场景。注意:是根据索引查询数据快。List集合的特有方法。List系列集合特点。:根据索引查询数据,原创 2024-05-16 08:00:00 · 268 阅读 · 0 评论 -
JavaSE——集合框架一(2/7)-Collection集合的遍历方式-迭代器、增强for循环、Lambda、案例
选代器是用来遍历集合的专用方式Collection集合获取选代器的方法iterator()Iterator选代器中的常用方法具体实现运行结果:它的执行流程是:首先迭代器对象指向的是集合中的第一个元素,来到第一行代码,hasNext方法先查看当前位置是否有元素,只要有元素就执行while循环;然后next方法获取到当前位置的元素,同时将迭代器指向下一个元素的位置,一次循环结束则输出一个元素,直到hasNext查看到当前位置已无元素,则循环结束,集合遍历完成。原创 2024-05-14 08:00:00 · 367 阅读 · 0 评论 -
JavaSE——集合框架一(1/7)-集合体系概述(集合体系结构,Collection集合体系)、Collection的常用方法(介绍,实例演示,代码)
为什么要先学Collection的常用方法?Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。Collection的常见方法如下方法名说明把给定的对象添加到当前集合中清空集合中所有的元素把给定的对象在当前集合中删除判断当前集合中是否包含给定的对象判断当前集合是否为空返回集合中元素的个数。把集合中的元素,存储到数组中。原创 2024-05-12 08:00:00 · 577 阅读 · 0 评论 -
JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)
/直接打印异常对象的信息。它们都是Exception的子类,所以可以直接抛出Exception。先来看第一种处理方式,以时间解析报错和读取不存在文件为例子。需求:调用一个方法,让用户输入一个合适的价格返回为止。//Exception代表可以捕获一切异常。//Exception代表可以捕获一切异常。方法 throws Exception{//可能出现异常的代码。学习自:黑马程序员——JavaSE课程。第二种方法,我们以完成一个需求演示。原创 2024-05-10 08:00:00 · 413 阅读 · 0 评论 -
JavaSE——异常(1/2)-认识异常(介绍,异常的体系,了解如何解决异常)、自定义异常(自定义异常的种类,实例演示)
Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。自定义运行时异常定义一个异常类继承RuntimeException重写构造器通过throw new 异常类(xxx) 来创建异常对象并抛出编译阶段不报错,提醒不强烈,运行时才可能出现!!自定义编译时异常定义一个异常类继承Exception重写构造器通过throw new 异常类(xxx) 来创建异常对象并抛出编译阶段就报错,提醒更加强烈!原创 2024-05-08 08:00:00 · 913 阅读 · 0 评论 -
JavaSE——正则表达式(2/2):应用案例、查找信息、用于搜索替换、分割内容
查找信息使用正则表达式查找一段文本中的内容需求:从以下内容中爬取出,手机,邮箱,座机、400电话等信息。"程序员学习Java,\n" +"电话:1866668888,18699997777\n" +"或者联系邮箱:2668834948@qq.com,\n" +"座机电话:01036517895,010-98951256\n” +"邮箱:buzhi@itopen.cn,\n" +"邮箱:dLei0009@163.com,\n” +"热线电话:400-618-9090,400-6原创 2024-05-06 08:00:00 · 392 阅读 · 0 评论 -
JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)
正则表达式就是由一些特定的字符组成,代表的是一个规则。作用一:用来校验数据格式是否合法 (更简单、更便捷)作用二:在一段文本中查找满足要求的内容String提供的一个陪陪正则表达式的方法public boolean matches(String regex)判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false。原创 2024-05-04 08:00:00 · 640 阅读 · 0 评论 -
JavaSE——算法(2/2):查找算法-二分查找(前言、详细图解、代码部分)
查找算法中,首要讨论的是基本查找,也就是顺序查找,在数据量特别大的时候,基本查找这种从前往后挨个找的形式,性能是很差的!所以为了提高一些性能,产生了各种查找算法。这里要学习介绍的是。假设有一个有序数组, { 7,2,79,81,103,127,131,147}原创 2024-05-02 08:00:00 · 17 阅读 · 0 评论 -
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
从初始索引开始,当前索引与之后的索引两两比较,每比较完一次索引增加一次,每次从数组中找出最大值放在数组的后面去。实现冒泡排序的关键步骤分析数组的长度 - 1数组的长度 - i - 1(i为当前的轮数 - 1)当前位置大于后一个位置则交换数据每轮选择当前位置,开始找出后面的较小值(或较大值)与该位置交换。比如第一轮比较:第一个元素分别与后面所有的元素进行比较,根据升序或降序进行交换。选择排序的关键确定总共需要选择几轮:数组的长度 - 1控制每轮从以前位置为基准,与后面元素选择几次。原创 2024-04-30 08:00:00 · 582 阅读 · 0 评论 -
JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)
静态方法的引用类名 :: 静态方法。使用场景如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。实例方法的引用对象名 :: 实例方法使用场景如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。特定类型的方法引用类型 ::方法使用场景如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特原创 2024-04-28 08:00:00 · 1363 阅读 · 0 评论 -
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
(进一步简化Lambda表达式的写法)参数类型可以省略不写。如果只有一个参数,参数类型可以省略,同时()也可以省略。如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写。原创 2024-04-26 08:00:00 · 192 阅读 · 0 评论 -
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
如果数组中存储的是对象,那该如何排序呢?Arrays.sort中没有指定对于对象的排序规则,不知道根据什么来排序,所以如果用它来对对象排序的话是会报错的。解决方式方式一:让该对象的类实现Comparable(比较规则)接口,然后重写compareTo方法,自己来制定比较规则。方式二:使用下面这个sort方法,创建Comparator比较器接口的匿名内部类对象,然后自己制定比较规则。原创 2024-04-24 08:00:00 · 658 阅读 · 0 评论 -
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
JDK 8之后新增的代替SimpleDateFormat的一个API——同样是用来格式化和解析时间的,与SimpleDateFormat相比较来说,它是线程安全的,也就是多个用户进入到一个系统中,用户可以使用同一个DateTimeFormatter。原创 2024-04-22 08:00:00 · 960 阅读 · 0 评论 -
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
如果在开发中我们有这样的需求:我们的系统需要获取美国现在的时间,或者其他地区的时间给用户观看,或者进行一些处理,那应该怎么办呢?美国时间和我们系统当前的时间肯定是不一样的,遇到这样的需求,我们就要用到ZoneId来解决了。世界标准时间(UTC)中国标准时间:世界标准时间(UTC)原创 2024-04-20 08:00:00 · 955 阅读 · 0 评论 -
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 · 982 阅读 · 0 评论 -
JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)
Calendar代表的是系统此刻时间对应的日历。通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。注意:Calendar是可变对象,一旦修改后其对象本身表示的时间将产生变化。原创 2024-04-16 08:00:00 · 265 阅读 · 0 评论 -
JavaSE——常用API进阶二(3/8)-Date、SimpleDateFormat(构造器、常用的方法、用法示例、时间格式的常见符号)
接下来会学习JDK8以前传统的日期、时间,以及JDK8开始新增的日期、时间;有部分项目还是有在使用JDK8以下的日期和时间的,所以我们仍然要去了解和学习它们。先开始学习。原创 2024-04-14 08:00:00 · 296 阅读 · 0 评论 -
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 · 308 阅读 · 0 评论 -
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 · 1350 阅读 · 0 评论 -
JavaSE——常用API进阶一(3/3)-StringBuilder(构造器、拼接内容、反转操作、其他操作),StringBuffer,StringJoiner
相当于是一个容器就是用来操作字符串的StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁以上都可以在API文档中查找到,列出的方法是比较常用的。原创 2024-04-08 08:00:00 · 664 阅读 · 0 评论 -
JavaSE——常用API进阶一(2/3)-Objects类(equals方法、isNull方法、nonNull方法)、包装类(介绍、包装方法及自动装拆箱、其他常见操作)
为什么要有包装类?对于基本类型,它们都不是对象;但是如果在泛型中我们需要用到这些基本类型的数据,而泛型又只能传入引用数据类型,这个时候包装类就发挥了作用了。包装类就是把基本类型的数据包装成对象。基本数据类型对应的包装类(引用数据类型)byteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDoublebooleanBoolean。原创 2024-04-06 08:00:00 · 912 阅读 · 0 评论 -
JavaSE——常用API进阶一(1/3)-Object类(Object类的作用、Object类的常见方法-toString方法、equal方法、clone方法)
1、Object中toString方法的作用是什么?存在的意义是什么?基本作用:返回对象的字符串形式。存在的意义:让子类重写,以便返回子类对象的内容。2、Object中equals方法的作用是什么?存在的意义是什么?基本作用:默认是比较两个对象的地址是否相等。存在的意义:让子类重写,以便用于比较对象的内容是否相同。3、什么是对象克隆?当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回。4、什么是浅克隆?拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)原创 2024-04-04 08:00:00 · 850 阅读 · 0 评论 -
JavaSE——面向对象高级三(5/5)-泛型方法、泛型的通配符、泛型擦除和注意事项
通配符就是“?”,可以在“使用泛型”的时候代表一切类型;E T K V是在定义泛型的时候使用。泛型的上下限泛型上限:?extends Car :?能接收的必须是Car或者其子类。泛型下限:? super Car:?能接收的必须是Car或者其父类。泛型擦除和注意事项泛型是工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。原创 2024-04-02 08:00:00 · 477 阅读 · 0 评论 -
JavaSE——面向对象高级三(4/5)-认识泛型、定义泛型类、定义泛型接口
定义类、接口、方法时,同时声明了一个或者多个类型变量(如:),称为泛型类、泛型接口、泛型方法、它们统称为泛型。作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,及其可能出现的异常。泛型的本质:把具体的数据类型作为参数传给类型变量。原创 2024-03-30 08:00:00 · 356 阅读 · 0 评论 -
JavaSE——面向对象高级三(3/5)-枚举(认识枚举、拓展:抽象枚举、用枚举实现单例模式、枚举的应用场景)
修饰符 enum 枚举类名{名称1,名称2,...;其他成员...这些名称,本质是常量,每个常量都会记住枚举类的一个对象实际上完整代码为:具有以下特点:枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象第一点:枚举类的第一行都是常量,记住的是枚举类的对象A a = A.Y;因为枚举类的第一行都是常量,记住的是枚举类的对象,所以我们可以直接用枚举类得到里面的象,例如:枚举类名称.枚举类常量1、枚举类名称.枚举类常量2;A.X、A.Y。原创 2024-03-28 08:00:00 · 926 阅读 · 0 评论 -
JavaSE——面向对象高级三(2/5)-匿名内部类(重点)-认识匿名内部类、匿名内部类的应用场景
所谓匿名:指的是程序员不需要为这个类声明名字new类或接口(参数值...){类体(一般是方法重写);匿名内部类的应用场景通常作为一个参数传输给方法原创 2024-03-26 08:00:00 · 497 阅读 · 0 评论 -
JavaSE——面向对象高级三(1/5)-内部类概述、成员内部类、静态内部类、局部内部类
内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。场景:当一个类的内部,包含了一个完整的事务,且这个事务没有必要单独设计时,就可以把这个事务设计成内部类。//内部类内部类有四种形式成员内部类静态内部类局部内部类匿名内部类//成员内部类//也可以和外部类一样定义变量//JDK 16之前,成员内部类是不支持定义静态成员的。成员内部类的调用方式://需要new两次。原创 2024-03-24 08:00:00 · 180 阅读 · 0 评论 -
JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承
使用接口的注意事项【了解】一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承。一个类实现多个接口,如果多个接口中存在方法签名冲突,则此时不支持多实现。一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先用父类的。一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。原创 2024-03-22 08:00:00 · 181 阅读 · 0 评论 -
JavaSE——面向对象高级二(3/4)-接口(认识接口、接口的好处)以及接口的综合案例(设计班级学生的信息管理模块)
接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为。修饰符 class 实现类 implements 接口1,接口2,接口3,...{一个类可以实现多个接口(接口可以理解成干爹)原创 2024-03-20 08:00:00 · 731 阅读 · 0 评论 -
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
final关键字final关键字是最终的意思,可以修饰(类、方法、变量)修饰类:该类被称为最终类,特点是不能被继承了。(常见于为工具类修饰)修饰方法:该方法被称为最终方法,特点是不能被重写了。修饰变量:该变量只能被赋值一次。(用于局部变量,成员变量;其中修饰静态成员变量我们称为常量)final修饰变量的注意事项final修饰基本类型的变量,变量存储的数据不能被改变。final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。原创 2024-03-18 08:00:00 · 807 阅读 · 0 评论