Java
文章平均质量分 78
努力奋斗的JAVA小余
记录工作日常,好记忆不如难笔头!!!! 欢迎各位大佬一起交流学习
展开
-
Java9-17新特性
record是一种全新的类型,它本质上是一个 final类,同时所有的属性都是 final修饰,它会自动编译出get、hashCode 、比较所有属性值的equals、toString 等方法,减少了代码编写量。:因为有了默认方法和静态方法这样具有具体实现的方法,那么就可能出现多个方法由共同的代码可以抽取,而这些共同的代码抽取出来的方法又只希望在接口内部使用,所以就增加了私有方法。(2)允许开发人员使用“\n”“\f”和“\r”来进行字符串的垂直格式化,使用“\b”“\t”进行水平格式化。原创 2023-03-11 21:27:32 · 1883 阅读 · 0 评论 -
每天学一点之Stream流相关操作
详解Stream流的相关知识,搭配各种案例深入理解原创 2023-03-10 23:29:07 · 1075 阅读 · 0 评论 -
每天学一点之Lambda表达式
当然该接口可以包含其他非抽象方法(可以包含默认方法,静态方法,也就是实现此接口的子类只要求实现一个方法)。原创 2023-03-10 20:54:27 · 5788 阅读 · 0 评论 -
每天学一点之注解、元注解
定义注解(Annotation),也叫元数据。与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。作用分类编写文档:通过代码里标识的注解生成文档【例如,生成文档doc文档】代码分析:通过代码里标识的注解对代码进行分析【例如,注解的反射】编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【例如,Override】常见注解@author:用来标识作者名@version:用于标识对象的版本号,适用范围:文件、类、方法。原创 2023-03-10 18:20:57 · 848 阅读 · 0 评论 -
每天学一点之类的加载和反射
详解类的加载以及反射的相关应用原创 2023-03-09 16:35:57 · 318 阅读 · 0 评论 -
每天学一点之网络编程
全称为Client/Server结构,是指客户端和服务器结构。:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。:内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,:TCP协议中,在发送数据结束后,释放连接时需要经过四次挥手。第一次握手,客户端向服务器端发出连接请求,等待服务器确认。第三次握手,客户端再次向服务器端发送确认信息,确认连接。,就是在一定的协议下,实现两台计算机的通信的程序。原创 2023-03-07 18:54:08 · 342 阅读 · 0 评论 -
每天学一点之多线程
详解多线程原创 2023-03-06 19:19:39 · 2492 阅读 · 0 评论 -
TreeMap底层源码分析
代码中的逻辑都有两面性,如果我们只知道了其中的A面,而且代码中还发现了有变量可以控制两面性的发生。如果是最坏情况,添加了8个元素,这8个元素形成了链表,此时TreeMap的效率要更高。6.4你觉得在Map集合中,java会提供一个如果键重复了,不会覆盖的put方法呢?6.2HashMap是哈希表结构的,JDK8开始由数组,链表,红黑树组成的。因为在HashMap的底层,默认是利用哈希值的大小关系来创建红黑树的。原创 2023-03-06 17:42:58 · 134 阅读 · 0 评论 -
(二)关于IO 一些不熟悉的类
当JVM反序列化对象时,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个。IOUtils是Apache出品的一个方便IO操作的工具类,简化了IO流的读、写、复制及关闭流等操作(使用前需要导包)System.in 标准输入流,本质是一个字节输入流,默认接受键盘录入的数据(不要用Junit单元测试,键盘录入)。,是Reader的子类,是从字节流到字符流的桥梁。,是Writer的子类,是从字符流到字节流的桥梁。接口给需要序列化的类,提供了一个序列版本号。原创 2023-03-04 21:36:51 · 42 阅读 · 0 评论 -
(一)IO常见的字节流、字符流、缓冲流
详解io字节流、字符流、缓冲流原创 2023-03-03 21:15:22 · 602 阅读 · 0 评论 -
详解File类
window的路径分隔符使用“\”,而Java程序中的“\”表示转义字符,所以在Windows中表示路径,需要用“\”。在API中File的解释是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。把构造File对象指定的文件或目录的路径名,称为构造路径,它可以是绝对路径,也可以是相对路径。的路径,这是一个便捷的路径,开发中经常使用。:从盘符开始的路径,这是一个完整的路径。原创 2023-03-03 20:03:13 · 82 阅读 · 0 评论 -
每天学一点之泛型真不难
java.lang.Comparable接口和java.util.Comparator接口不确定是什么类型的对象比较大小,之前的时候只能用Object类型表示,使用时既麻烦又不安全,因此JDK1.5就给它们增加了泛型。//public static void test(T t){ } //此时类型变量T不能用在静态成员上。:可以是一个或多个类型变量,一般都是使用单个的大写字母表示。当类或接口上声明了时,其中的。创建Student类。原创 2023-03-01 19:20:50 · 51 阅读 · 0 评论 -
hash表详细结构与HashMap源码分析
扩容是一个性能消耗较大的操作,所以如果已知要存储的元素的数量,最好要指定容量,减少扩容操作。使用指定容量的构造器,并未初始化底层数组,而是计算了实际容量为比指定容量大的最小2的次幂。链表长度达到8并且数组容量达到64时转为红黑树,当红黑树节点降为6是再退化为链表。当然元素个数达到扩容阈值(=容量*加载因子0.75)时进行扩容。加载因子0.75是时间和空间上的一种折中值。如何计算新添加的元素的位置(1.底层结构:哈希表=数组+链表+红黑树。5.容量不足时需要扩容,扩容机制?新容量为原容量的2倍。原创 2023-03-01 18:41:35 · 72 阅读 · 0 评论 -
Set集合与Map集合的关系
Set的内部实现其实是一个Map。即HashSet的内部实现是一个HashMap,TreeSet的内部实现是一个TreeMap,LinkedHashSet的内部实现是一个LinkedHashMap。这是因为Set的元素不可重复和Map的key不可重复有相同特点。Map有一个方法keySet()可以返回所有key。原来是,把添加到Set中的元素作为内部实现map的key,然后用一个常量对象PRESENT对象,作为value。原创 2023-03-01 18:18:44 · 155 阅读 · 0 评论 -
每天学一点之Collections集合的工具类及其使用
详解Collections工具类方法的使用原创 2023-03-01 18:09:47 · 76 阅读 · 0 评论 -
每天学一点之Map真不难
该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;中的集合不能包含重复的键,值可以重复;每个键只能对应一个值(这个值可以是单个值,也可以是个数组或集合值)。中的集合称为单列集合,中的集合称为双列集合。原创 2023-02-28 21:28:31 · 41 阅读 · 0 评论 -
集合框架小结
Collection:集合根接口,存储一组对象。原创 2023-02-28 20:35:27 · 46 阅读 · 0 评论 -
队列、栈、Set集合
详解Set集合以及其子类的使用原创 2023-02-28 20:18:43 · 217 阅读 · 0 评论 -
每天学一点之List集合
详解List集合集合和其子类使用,以及添加元素时的底层源码分析原创 2023-02-28 19:22:26 · 79 阅读 · 0 评论 -
每天学一点之集合真不难
详解Collection集合和迭代器的fail-fast机制原创 2023-02-27 19:56:04 · 50 阅读 · 0 评论 -
每天学一点之包装类真不难
Java提供了两大类数据类型,基本类型与引用类型,使用基本类型在于效率,但是缺少像引用数据类型一样的丰富API,包装类就是把基本数据类型包装成对应的引用数据类型。转为基本数据类型,一般是因为需要运算,Java中的大多数运算符是为基本数据类型设计的。Integer.MAX_VALUE和Integer.MIN_VALUE。注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出。转为包装类的对象,是为了使用专门为对象设计的API和特性。(4)对于字符串这一种特殊的对象,支持“+”,表示拼接。原创 2023-02-25 21:22:57 · 42 阅读 · 0 评论 -
每天学一点之常用的数组工具类
static int[] copyOfRange(int[] original, int from, int to) :复制original原数组的[from,to)构成新数组,并返回新数组。static void sort(int[] a, int fromIndex, int toIndex) :将a数组的[fromIndex, toIndex)部分按照升序排列。static String toString(int[] a) :把a数组的元素,拼接为一个字符串,形式为:[元素1,元素2,元素3。原创 2023-02-25 20:55:07 · 107 阅读 · 0 评论 -
每天学一点之日期时间和系统相关类的API
static long currentTimeMillis() :返回当前系统时间距离1970-1-1 0:0:0的毫秒值。public static Runtime getRuntime(): 返回与当前 Java 应用程序相关的运行时对象。Java 8 吸收了 Joda-Time (第三方开发)的精华,以一个新的开始为 Java 创建优秀的 API。long getTime():返回该日期时间对象距离1970-1-1 0.0.0 0毫秒之间的毫秒值。类实例,使应用程序能够与其运行的环境相连接。原创 2023-02-25 20:37:25 · 75 阅读 · 0 评论 -
每天学一点之数学相关的类
double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。//d2的值为 -3.0。原创 2023-02-25 19:58:46 · 41 阅读 · 0 评论 -
StringBuilder&StringBuffer
int lastIndexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的最后一次出现下标。(7)StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str。(10)String substring(int start, int end):截取当前字符序列[start,end):线程不安全的,效率相对较高。原创 2023-02-25 19:21:27 · 41 阅读 · 0 评论 -
每天学一点之正则表达式真不难
[]^_`{|}~字母数字字符:[\p{Alpha}\p{Digit}]X) X,作为独立的非捕获组。:X) X,作为非捕获组。小写字母字符:[a-z]大写字母字符:[A-Z]空格或制表符:[ \t]十进制数字:[0-9]原创 2023-02-25 18:19:07 · 134 阅读 · 0 评论 -
每天学一点之字符串真不难
详解字符串以及常用API的使用原创 2023-02-24 19:04:07 · 67 阅读 · 0 评论 -
每天学一点之枚举真不难
枚举提高了代码的安全性和可读性,但是也占用了更多的内存空间静态变量占用内存更小,但是可存储的数据有限,而且对于代码的可读性也不如枚举枚举更适合于资源要求不严格或枚举种类不多且枚举需要存储多种属性时使用静态常量适用于资源要求严格,且存储数据少的情况使用枚举方便维护,静态常量方便使用。枚举型可以直接与数据库打交道,我通常使用varchar类型存储,对应的是枚举的常量名。(数据库中好像也有枚举类型,不过也没用过)原创 2023-02-23 10:39:11 · 56 阅读 · 0 评论 -
每天学一点之异常真不难
异常:指的是程序在执行过程中,出现的非正常的情况,如果不处理最终会导致JVM的非正常停止。异常指的并不是语法错误。语法错了,编译不通过,不会产生字节码文件,根本不能运行。异常也不是指逻辑代码错误而没有得到想要的结果,例如:求a与b的和,你写成了a-b对于异常的发生,要么直接终止程序的运行,要么在编写程序时,预判到可能会出现异常的地方,做好针对性处理措施,当异常发生时,经异常处理后,可以保证程序还可以继续执行。原创 2023-02-22 18:33:02 · 81 阅读 · 0 评论 -
详解类初始化与实例初始化过程、非静态代码块与静态代码块
我们编写的代码在编译时,会自动处理代码,整理出一个或多个的< init >(…实际上,类初始化的过程时在调用一个()方法,而这个方法是编译器自动生成的。编译器会将如下两部分的。(2)每个类初始化只会进行一次,如果子类初始化时,发现父类没有初始化,那么会先初始化父类。如果想要为静态变量初始化,可以直接在静态变量的声明后面直接赋值,也可以使用静态代码块。特别说明:其中(2)和(3)是按顺序合并的,(1)一定在最前面(4)一定在最后面。实例初始化的过程其实就是在new对象的过程中为实例变量赋有效初始值的过程。原创 2023-02-21 23:45:45 · 627 阅读 · 0 评论 -
每天学一点之内部类真不难
什么是内部类?将一个类A定义在另一个类B的里面,里面的类A就称为内部类,B就称为外部类。为什么要声明内部类?遵循高内聚低耦合、便于代码维护。具体来说,当一个事物的内部,还有一部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,不在其他地方单独使用,那么整个内部的完整结构最好使用内部类。而且内部类因为在外部类的里面,因此可以直接访问外部类的私有成员。内部类有哪些形式?根据内部类声明的位置(如同变量的分类),我们可以分为:静态成员内部类非静态成员内部类局部内部类。原创 2023-02-21 21:27:07 · 38 阅读 · 0 评论 -
详解Comparable、Comparator、Cloneable接口介绍与使用
我们知道基本数据类型的数据(除boolean类型外)需要比较大小的话,之间使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的。那么,如何解决这个问题呢?Java给所有引用数据类型的大小比较,指定了一个标准接口,就是java.lang.Comparable接口:那么我们想要使得我们某个类的对象可以比较大小,怎么做呢?步骤:第一步:哪个类的对象要比较大小,哪个类就实现java.lang.Comparable接口,并重写方法。原创 2023-02-20 21:04:30 · 210 阅读 · 0 评论 -
每天学一点之接口真不难
接口本身不能创建对象,只能创建接口的实现类对象,接口类型的变量可以与实现类对象构成多态引用。声明接口用interface,接口的成员声明有限制:(1)公共的静态常量(2)公共的抽象方法(3)公共的默认方法(4)公共的静态方法(5)私有方法(JDK1.9以上)类可以实现接口,关键字是implements,而且支持多实现。如果实现类不是抽象类,就必须实现接口中所有的抽象方法。如果实现类既要继承父类又要实现父接口,那么继承(extends)在前,实现(implements)在后。原创 2023-02-20 20:27:41 · 206 阅读 · 0 评论 -
每天学一点之抽象真不难
详解抽象类以及抽象方法原创 2023-02-20 19:25:24 · 44 阅读 · 0 评论 -
每天学一点之虚方法真不难
详解什么是虚方法,以及怎么使用原创 2023-02-19 13:21:35 · 516 阅读 · 1 评论 -
每天学一点之Static、final关键字
如果权限修饰符允许,在其他类中可以通过“类名.静态变量”直接访问,也可以通过“对象.静态变量”的方式访问(但是更推荐使用类名.静态变量的方式)。但是有些成员变量的值不需要或不能每一个对象单独存储一份,即有些成员变量和当前类的对象无关。在类中声明的实例方法,在类的外面必须要先创建对象,才能调用。静态变量的get/set方法也静态的,当局部变量与静态变量重名时,使用“类名.静态变量”进行区分。此时,就需要将和当前类的对象无关的成员变量、成员方法声明为静态的(static)。静态变量的默认值规则和实例变量一样。原创 2023-02-18 22:13:42 · 74 阅读 · 0 评论 -
每天学一点之多态真不难
多态的形式父类类型 变量名 = 子类对象;父类类型:指子类继承的父类类型,或者实现的父接口类型。所以说继承是多态的前提//多态的引用形式//Cat对象也属于其父类Animal类型。猫也是一个动物。多态的表现多态引用形式的具体表现:编译时类型与运行时类型不一致,编译时看左边的“父类”,父类必须包含要运行的方法,运行时看右边的“子类”。编译看左边,运行看右边。// 多态形式,创建对象 Animal a = new Cat();原创 2023-02-18 21:06:09 · 71 阅读 · 0 评论 -
每天学一点之Object类真不难
详解Object类的常用方法,包含面试题、内存图分析原创 2023-02-18 18:43:15 · 49 阅读 · 0 评论 -
详解重写和this、super关键字的使用
子类中定义与父类中相同的方法,一般方法体不同,用于改造并覆盖父类的方法。原创 2023-02-17 23:11:11 · 211 阅读 · 0 评论 -
每天学一点之继承真不难
详解继承原创 2023-02-17 21:21:02 · 202 阅读 · 0 评论