![](https://img-blog.csdnimg.cn/46d6b36d804a48d6aa24a28b783d1515.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java学习
文章平均质量分 68
分享一些在Java学习过程中掌握的一些知识
什巳
这个作者很懒,什么都没留下…
展开
-
JAVA学习-流(stream)相关的API及其使用
Java 8 添加了一个新的抽象概念——流(stream),它可以更加高效简洁的处理集合中的数据。关于流(stream)的 特点 有:不存储元素,根据需求直接进行计算。 流水线操作,可以在流水线上进行相关操作,流水完成就无法进行任何操作。 惰性执行,在流中间进行操作时,该操作会被记录,但不会执行,只有在流水完成时才会真正执行。 内部迭代,不需要自己写迭代的代码。因为是流(stream)是流水线操作,在中间和结束位置都可以操作,所以流的操作分为 中间操作 和 终结操作。中间操作:分为 无状原创 2022-02-13 22:54:57 · 987 阅读 · 1 评论 -
JAVA学习-常用函数式接口
函数式接口指的是有且只有一个抽象方法的接口,在学习 函数式编程和Lambda表达式中我们经常遇到,但是这些函数式接口都是我们自定义的,其实,在 Java 中,有着自带的函数式接口,以下就是一些常用的函数式接口。Function 接口@FunctionalInterfacepublic interface Function<T, R>功能性接口,接受一个 T 类型的参数,将结果以 R 类型的方式输出,函数式方法是 apply(T)。public static void ..原创 2022-02-12 22:37:13 · 646 阅读 · 0 评论 -
JAVA学习-函数式编程与Lambda表达式
函数式编程 作为一种编程方式,早在1958 年就出现了,在编程界的大佬手上用的可是风生水起,但是我们在日常学习中却很少使用,那是因为我们所用的编程方式是 命令式编程 方式,创建变量、赋值、循环等等这种按部就班的程序操作就是命令式编程方式,而函数式编程相比于命令式编程则更倾向于数学思想,举个栗子,我们把命令式编程比作数学不好的人,而函数式编程比较数学好的人,当计算一道 1 到 10 的和的时候,数学差的人会想到将 1 到 10 的值逐个加起来计算,而数学好的人则会用求和公式来计算,虽然两种方式都能得到答案,但原创 2022-02-12 01:01:15 · 424 阅读 · 0 评论 -
JAVA学习-Collections工具类下常见的方法及其作用
Collections 工具类中定义着很多的 静态 方法,调用这些方法可以对 集合 进行一系列的操作。public static <T> boolean addAll(@NotNull java.util.Collection<? super T> c, @NotNull T... elements)将指定元素(可多个)添加到指定集合中。public static <T extends Object & Comparable<? super T&原创 2022-02-06 23:09:36 · 358 阅读 · 0 评论 -
JAVA学习-List,Set,Map三者的区别
List 和 Set 都是单列集合,继承自 Collection接口,Map 是双列集合,是键值对的形式,独立接口。List 是有序集合,Set 和 Map 都是无序集合,List 集合的元素可以重复,Set 和 Map 的键不能重复,但是 Map 的值可以重复。值得注意的是,如果在 Map 中添加重复的键,那么该键对应的值会覆盖掉原来的值。测试程序:import java.util.*;public class Demo { public static void main(St原创 2022-01-31 23:11:02 · 7760 阅读 · 1 评论 -
JAVA学习-LinkedList 和 ArrayList 分别的适用场景
LinkedList 和 ArrayList 都是 List 的实现类,拥有的方法都一样,但是实现的方式不一样。LinkedList 是基于双链表实现的,而 ArrayList 是基于动态数组实现的。因为对链表的添加删除操作只需要改变指针就可以了,而在数组中添加删除时,会导致该元素后面的所有的元素被移动,因此在进行添加删除时,LinkedList 的效率要优于 ArrayList。同理,因为对链表的查询操作需要不断移动指针,而数组却不用,因此在进行查询操作的时候,ArrayList 的效率要优于 Lin原创 2022-01-30 22:07:03 · 1671 阅读 · 0 评论 -
JAVA学习-面向对象特性(抽象类和接口)
在面向对象编程的过程中,我们往往会遇到很多复杂的对象,比如一个人的属性就可以有姓名,性别,身高,体重,年龄等等,如果我们将这些属性全部实现,费时费力,因为很多属性你可能根本用不上,这时候我们就需要将这些复杂的对象 抽象 成简单的对象,我们只需要我们需要的属性,而实现这种抽象的形式,就是 抽象类 和 接口。抽象类抽象类用 abstract 关键字修饰,抽象类中的抽象方法也用 abstract 修饰。抽象类和普通类一样,可以被继承,或者说,抽象类只有被继承才能发挥出它的用处,因为抽象类本身就起着一种规范原创 2022-01-24 23:58:58 · 101 阅读 · 0 评论 -
JAVA学习-面向对象特性(封装,继承,多态)
面向对象三大特性:封装,继承,多态。在介绍面向对象特性之前,最好先回顾一下关于 Java 四种权限修饰符的范围:修饰符\范围 类内部 同一个包 子类 任何地方 private √ 缺省 √ √ protect √ √ √ public √ √ √ √ 封装数据隐藏和实现隐藏。只能使用对象提供的方法,不需要知道具体实现。封装一个用户类:p原创 2022-01-22 23:00:30 · 268 阅读 · 0 评论 -
JAVA学习-受查异常 Exception 和非受查异常 RuntimeException 的区别和适用场景
正所谓写代码五分钟,修bug两小时,在日常开发过程中,没有一个程序员是能够百分百开发出一个没有 bug 的程序的,因此,为了更好的排除 bug 和处理资源回收的问题,异常在这过程中就起到了关键性的作用。在 Java 中,异常被分为了受查异常 (checked exception)和 非受查异常(unchecked exception)两种,非受查异常又叫运行时异常,即 RuntimeException,除了 RuntimeException 的异常都是受查异常,即 Exception。受查异常.原创 2022-01-22 17:26:45 · 796 阅读 · 0 评论 -
JAVA学习-try...catch...finally结构的运行逻辑
在 Java 实际开发中,往往会遇到很多异常,对异常进行处理便是我们必备的一个技能,比较常见的就是 try...catch..finally 结构,今天我们就来讲讲这个结构的运行逻辑。正常情况下:public class Demo { public static void main(String[] args){ System.out.println(getValue()); } public static int getValue(){原创 2022-01-19 23:33:14 · 1045 阅读 · 0 评论 -
JAVA学习-浮点数的缺陷以及解决方法
在日常学习中,我们会经常用到浮点数,如 double 和 float,但是实际开发中,却基本不用,这是为什么呢?因为在计算机中,浮点数存储的都是小数的近似值,在计算时容易产生误差,比如:public class Demo { public static void main(String[] args){ float a = 7.7f; double b = 0.3; System.out.println("7.7f * 3 = " + a * 3原创 2022-01-19 22:08:52 · 696 阅读 · 0 评论 -
JAVA学习-深拷贝和浅拷贝的实现方式
在 Java 的学习过程,很多人在拷贝的时候,都习惯用 clone 方法直接拷贝,但有时候总会出现一些问题,看我举例:先定义Person类存储个人信息:class Person implements Cloneable{ //姓名 String name; //电话 String phone; //性别 String sex; public Person(String name, String phone, String sex) {原创 2022-01-19 19:18:24 · 189 阅读 · 0 评论 -
JAVA学习-Java泛型的基本使用
因为集合的中存放的数据类型不固定,在往集合中存放元素时容易因为数据类型不一致的问题导致安全隐患,于是 Java 推出了泛型用于规范集合的数据类型。定义泛型类在定义带类型参数的类时,在紧跟类名之后 <> 内,指定一个或多个类型参数的名字,同时也可以对类型参数的取值范围进行限定,多个类型参数之间用逗号分隔。 定义完类型参数后,可以在定义位置之后的几乎任意地方(静态块, 静态属性,静态方法除外)使用类型参数,就像使用普通的类型一样。 注意, 父类定义的类型参数不能被子类继承。普通定义类:原创 2022-01-18 00:40:12 · 247 阅读 · 0 评论 -
JAVA学习-关键字 static 和 final 的使用场景
在学习 Java 的过程中一定会遇到 static 和 final 两个关键字,但很多人总是容易把两个的概念搞混,所以今天我们来介绍一下这两个关键字的区别。 static final 类 static 类在被加载时就被会分配内存,其他类不需要实例化就可以直接调用 static 类中的方法,当一个类被重复调用时,可以将此类设计为 static 类 final 类不能改变,不能被继承,设计类时如果此类不需要有子类或不允许修改,可以将此类设计为 final 类 变量 st原创 2022-01-17 21:43:26 · 232 阅读 · 1 评论 -
JAVA学习-蓄水池抽样算法
生活中无时不刻都在发生着随机事件,我们并不能改变它的随机性,但是我们可以尝试利用它的概率去做更多有意义的事情。比如有一个高 10 米的蓄水池,我们需要对随机一个 1 米的水层进行抽样,这时候很多人都会想到直接生成一个 (0, 10] 的随机数就可以解决,那么要是把高 10 米的条件去掉呢?这显然就不是一个随机数就能解决的了,这时候就得轮到今天的主角——蓄水池抽样算法登场了。蓄水池抽样算法是一种不用知道蓄水池深度就可以达到抽样效果的算法,他的核心在于按每一层循序依次进行抽样,不同层的抽样计算如下:如果原创 2022-01-16 20:14:13 · 931 阅读 · 0 评论 -
JAVA学习-String、StringBuffer 和 StringBuilder 分别的适用场景
String 是字符串常量,而 StringBuffer 和 StringBuilder 是字符串变量,我们都知道,常量是不可变的,所以在对 String 对象进行操作时,每次都会创建一个新的对象,既浪费时间又浪费空间,而像 StringBuffer 和 StringBuilder 这种就不会新建对象,在效率上,StringBuffer 和 StringBuilder 则会优于 String。关于三个的速度,我们可以用 System.currentTimeMillis() 方法来记录当前时间,从而进行测原创 2022-01-14 00:52:01 · 388 阅读 · 0 评论 -
JAVA学习-hashCode() 和 equals() 的作用和在集合类中的使用建议
hash了解 hashCode() 之前最好先了解一下 hashJAVA学习-hash算法_什巳的博客-CSDN博客https://blog.csdn.net/qq_48772498/article/details/122479243?spm=1001.2014.3001.5501hashCode() 和 equals()hashCode()和 equals() 的作用都是用来比较两个对象是否相等,hashCode() 是通过将对象的内部地址(物理地址)转换成一个整数,然后将这个整数通过h.原创 2022-01-13 23:50:35 · 1128 阅读 · 1 评论 -
JAVA学习-hash算法
Hash Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。根据散列值作为地址存放数据,这种转换是一种压缩映射,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。查找关键字数据(如K)的时候,若结构中存在和关键字相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。我们称这个对应关系f为散列函数(Hash function),按这个事件建立的表为散列表。 综上所述,根据散列转载 2022-01-13 17:49:39 · 3196 阅读 · 0 评论 -
JAVA学习-自动装箱与拆箱
装箱:自动将基本数据类型转换为包装器类型;拆箱:自动将包装器类型转换为基本数据类型。拿 int 和 Integer 举例:Integer i = 77;//Integer i = 77; 就是一个装箱的过程,相当于Integer i = Integer.valueOf(77);int i2 = i;//int i2 = i; 就是一个拆箱的过程,相当于 int i2 = i.intValue();需要注意的几点是:-128 ~ 127 的整数会进行缓存,因此在定义两个以上对象时,若原创 2022-01-13 00:16:10 · 87 阅读 · 0 评论 -
JAVA学习-基础语法
推荐网址:这个讲得比较详细Java基础语法(总结篇) - 小中配奇 - 博客园 (cnblogs.com)https://www.cnblogs.com/xiaozhongfeixiang/p/11502971.html普通学习:不喜欢上面那个就看这个吧Java 基础语法 | 菜鸟教程 (runoob.com)https://www.runoob.com/java/java-basic-syntax.html...原创 2022-01-12 21:52:08 · 72 阅读 · 0 评论 -
JAVA学习-8种基本类型及其对应的封装类
八种基本数据类型:int、short、long、byte、float、double、boolean、char;对应的封装类:Integer、Short、Long、Byte、Float、Double、Boolean、Character。数据类型 包装类 字节长度 大小位 取值范围 默认值 说明 int Integer 4 32 -2^31 ~ 2^31-1 0 整形 short Short 2 16原创 2022-01-12 19:47:44 · 4231 阅读 · 0 评论