
Java知识回顾
文章平均质量分 84
Java知识回顾
杀死一只知更鸟debug
手敲博客 https://www.robindeblog.cn/,域名已过期,换赛道中!
展开
-
Git基础命令,分支,标签的使用【快速入门Git】
举个栗子:用master分支对testbranch1.txt文件进行更改,然后再切换到testbranch1分支,也对testbranch1.txt文件进行更改,最后在master分支上,进行分支合并。(已跟踪其实就是git add 过的了)。前面虽然也完成了分支的合并,但是真实的情况下,要比这复杂,多个分支都会对共有的文件进行操作,那么多个分支都操作了多次以后,我们如何进行合并这些冲突。其实,看完上面这张图就明白了,分支冲突和并的本质也是用新的文件内容去覆盖旧的冲突内容,然后将新的内容提交到合并分支上。原创 2024-02-06 17:19:25 · 1627 阅读 · 0 评论 -
lombok的使用
Lombok是一个可以帮助我们简化Java代码编写的工具类,通过注解的方式,可以消除代码中的构造方法、getter/setter等代码,使写的类更加简洁。● @Setter:注解在类上,为所有属性添加set方法;注解在属性上为该属性提供set方法。● @Getter:注解在类上,为所有的属性添加get方法;注解在属性上为该属性提供get方法。● @NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常。● @Synchronized:用于方法,可以锁定指定的对象,如果不指定,则默原创 2024-02-06 09:33:07 · 444 阅读 · 0 评论 -
常用工具类-Collections
Collections类是一个工具类,它包含了一些静态方法,用于操作集合(如列表和映射)。这个类主要用于创建不可修改的集合、填充集合、替换元素等。基本每个方法都是见名知意的。下面练习几个常用的方法。原创 2024-02-05 11:49:10 · 1371 阅读 · 0 评论 -
常用工具类-Objects
Objects工具类位于java.util包中,提供了对对象操作的一些实用方法。static T requireNonNull(T obj, String message):该方法检查对象是否为null,如果为null则抛出NullPointerException异常,否则返回该对象。它接受两个参数,一个是对象本身,另一个是当对象为null时要抛出的异常消息。static T requireNonNullElse(T obj, T alternative):该方法与requireNonNu原创 2024-02-05 10:09:12 · 708 阅读 · 0 评论 -
常用工具类-StringUtils
StringUtils 是 Apache Commons Lang 库中的一个非常有用的工具类,它提供了许多操作 String 的静态方法。使用 StringUtils 可以使字符串操作更加简便和高效.isEmpty() 和 isNotEmpty():isEmpty(String str): 检查一个字符串是否为空(null 或长度为 0)。isNotEmpty(String str): 检查一个字符串是否不为空。isBlank() 和 isNotBlank():isBlank(String str原创 2024-02-04 21:28:16 · 1529 阅读 · 0 评论 -
常用工具类-Arrays
这里需要注意的是,asList()方法返回的是 java.util.Arrays.ArrayList 这个ArrayList ( 它的长度是固定的,无法进行元素的删除或者添加)并不是我们集合框架中的那个ArrayList,集合框架中的ArrayList是 java.util.ArrayList , 所以当我们想获得集合中的ArrayList时,强转一下。示例:parallelSetAll的使用,将数组中的每个元素值变为前一个元素和后一个的和。数组直接的比较,使用的是equals()方法。原创 2024-02-04 17:50:57 · 628 阅读 · 0 评论 -
Java反射相关知识回顾
反射使得Java程序能够在运行时了解自身的结构,并动态地创建、操作和销毁对象,以及调用对象的方法。在Java中,每个类都有一个关联的 Class 对象,该对象包含了有关该类的信息。Class 类提供了许多方法,可以用来获取关于类的信息,例如类的名称、超类、实现的接口、构造函数、字段和方法等。通过反射,我们可以在运行时动态地获取类的信息。这样就可以获取类的构造方法、字段、方法等信息,并进行相应的操作。反射是Java语言的一个特性,它允许程序再运行时,进行自我检查并且对内部的成员进行操作。原创 2024-02-04 14:49:42 · 907 阅读 · 0 评论 -
接口和抽象类【Java面向对象知识回顾②】
Java中的抽象类和接口是两种常见的抽象概念,它们都能够帮助我们实现抽象化和多态性,但是它们在一些细节上有所不同。抽象类是一种特殊的类,不能被实例化,只能被继承。抽象类具有类的所有特性,包括成员变量、成员方法、构造方法,以及抽象方法,抽象方法需要在具体的子类中实现。抽象方法没有方法体,只有方法签名,用abstract关键字修饰。抽象类通常被用来作为其他类的基类,子类必须实现抽象类中定义的所有抽象方法才能被实例化。抽象类中可以包含一些具体的方法和成员变量,这些方法和成员变量在继承的子类中可以直接使用。接口是一原创 2024-02-03 11:42:56 · 476 阅读 · 0 评论 -
封装,继承,多态【Java面向对象知识回顾①】
面向对象的三大特性,封装,继承,多态。封装:隐藏对象内部的细节,只暴露出必要的接口去交互,实现了信息的隐藏与保护。(简单的说,就是将对象独有的数据private掉,将公共的方法接口public出去,然后提供getter和setter方法)继承:允许一个类继承另一个类的方法和属性,实现代码的复用性和扩展。子类只能继承父类非private的成员方法和成员属性。子类可以重写父类允许子类方法的方法,重写的注意点,即结构不变,内核变(方法体根据自己的业务去更改,方法的返回值,方法名参数值列表均不可以变)。和继承相原创 2024-02-02 16:23:42 · 1008 阅读 · 1 评论 -
HashMap 的基本操作【集合容器知识回顾 ⑤】
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序。HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。原创 2024-02-01 17:16:34 · 451 阅读 · 0 评论 -
HashSet 的基本操作【集合容器知识回顾 ④】
比如,有一个People类,将多个People对象传入到Set中,然后希望的结果是,只要idCard身份证号不同,就表示people不同,即名字相同并不是重复的元素。return sex;下面的代码中,HashSet并未对我们自定义的People类按照预期的方式去重,原因就是每个People对象的哈希值不同,所以HashSet认为每个对象都是不同的,但是实际情况并不是这样,这时候就需要我们重写hashCode和equals方法了。原创 2024-02-01 16:07:14 · 1251 阅读 · 0 评论 -
LinkedList的基本操作【集合容器知识回顾 ③】
因为LinkedList是基于双向链表实现的,而ArrayList是动态数组,对于插入和删除操作,是移动大量的元素,比较慢。,因为他需要从头开始逐个比较元素值来进行访问,而ArrayList随机访问元素非常快,直接通过索引下标去访问。它由一系列节点组成,每个节点包含数据元素和指向前一个节点和后一个节点的引用。其余API就不一一列举了,和ArrayList基本差不多,不一样的查看API文档即可。,因为它不需要像数组一样重新分配内存空间。是 Java 中的一个。原创 2024-02-01 11:49:32 · 903 阅读 · 0 评论 -
ArrayList的基本操作【集合容器知识回顾 ②】
在 ArrayList 中删除元素时,特别是在中间位置,会涉及到后续元素的移动操作,可能会导致性能下降。,因此在多线程环境中访问和修改 ArrayList 可能导致数据不一致和并发问题。ArrayList 允许存储 null 值,但要小心处理它们,以免引发空指针异常。了解 ArrayList 的性能特性,并根据实际需求选择合适的数据结构。在使用 for-each 循环遍历 ArrayList 时,如果需要在遍历过程中修改元素,请使用迭代器,并。,请考虑使用线程安全的集合,如。在指定索引位置,添加元素。原创 2024-02-01 10:24:43 · 1112 阅读 · 0 评论 -
集合概览【集合容器知识回顾 ①】
集合是用于存储和操作一组对象的数据结构。Java 的集合框架提供了一组接口和类,用于处理各种类型的集合。集合框架的主要目标是提供一种通用的方式来管理对象,使我们能够更轻松地添加、删除、搜索和遍历元素。原创 2024-02-01 09:11:17 · 932 阅读 · 0 评论 -
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。,以便可以将对象保存到磁盘上,将其传输到网络上,或者将其存储在内存中,以后再进行反序列化,将字节流重新转换为对象。ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久储存。注意上面的例子,为了简洁我都直接将异常抛出了,实际情况肯定使用try-cath啊,别被误导 👻。接口来实现的,该接口没有任何方法,只是一个标记接口,用于标识类可以被序列化。原创 2024-01-31 11:33:57 · 874 阅读 · 0 评论 -
缓冲流和转换流的使用【 File类+IO流知识回顾③】
需要会使用的两个类 InputStreamReader 和 OutputStreamWriter ,从字面意思上不难理解,,将字符输出流转换为字节输出流。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。从控制台窗口中看到,读取的字符都乱码了…此时为了应对不同编码文件的读入,我们就该使用字符转换流了。首先,写一个txt,编码方式为GB18030,然后尝试使用字符缓冲流进行读入。字符转换流完美的解决了因为编码不同导致乱码的问题。字节缓冲流复制文件和普通输入输出流对比。原创 2024-01-31 10:04:04 · 987 阅读 · 0 评论 -
FileInputStream,FileOutputStream 和 FileReader ,FileWriter 类的基本使用【 File类+IO流知识回顾②】
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。1. Java语言中的所有字节流都以Stream结尾。所有的字符流都含有Reader或Writer。2. 字节流适合读取:视频,声音,图片等二进制文件3. 字符流适合读取:纯文本文件。4. Java中一个字符占两个字节,即字符流一次读取两个字节,字节流一次读取一个字节。原创 2024-01-30 17:16:06 · 1256 阅读 · 0 评论 -
File类的基本使用【 File类+IO流知识回顾①】
获取File对象数据信息的方法有很多,下面只是列举了一些常用的 getAbsolutePath() 获取绝对路径 ,getPath() 获取文件路径,getParent() 获取父级目录名,getName() 获取文件名,length() 获取文件大小…遍历指定目录下的所有文件及目录。原创 2024-01-30 10:30:34 · 433 阅读 · 0 评论 -
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
java.util 包提供了 Date 类来封装当前的日期和时间。SimpleDateFormat格式化分析日期的类。Calender类,对于设置获取日期数据的特定部分,更为简便(例如:获取,小时,分钟,秒,日月),并且可以对日期上进行增加和减去一些时间。GregorianCalendar类是Calendar类的子类,实现了公历日期。经过上面旧的日期API使用,很容易感觉到旧的日期API用起来非常麻烦(一大堆毫秒数,时间戳),并且也不是线程安全的,存在一些潜在的并发问题。LocalTime是Java8中用于原创 2024-01-29 17:31:11 · 1017 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
下面原生的String字符拼接,底层其实会创建1000个StringBuilder对象,浪费堆内存空间。,可以在原字符串的基础上进行操作,并且不会开辟额外的内存空间,从而弥补了String类的缺陷。改进版使用StringBuilder进行拼接,只创建了一个StringBuilder对象。的话基本和StringBuilder类差不多,只是。,这样一来对于字符串的操作就是。(可以同步访问)的。原创 2024-01-29 12:01:28 · 974 阅读 · 0 评论 -
String类-知识回顾①
Java中,==和equals( )都用于比较两个对象是否相等。例如:String类重写equals()方法,比较的是字符串中的每个字符是否相等,若相等则返回true,否则返回false。例如:person类重写equals方法当比较两个对象的内容是否相等时,应该使用equals()方法。如果只比较两个对象的内存地址是否相等,使用==操作符。原创 2024-01-29 10:56:17 · 816 阅读 · 0 评论