
Java学习
文章平均质量分 53
记录自己在学习中的问题
mengXi_0718
前方的道路会有曲折,但也充满希望。
展开
-
synchronized锁升级全过程
synchronized全过程原创 2022-11-11 11:29:02 · 339 阅读 · 1 评论 -
NIO、AIO、BIO的区别
NIO、AIO、BIO有什么区别原创 2022-11-06 11:57:45 · 749 阅读 · 0 评论 -
Java 深克隆和浅克隆总结
1-浅拷贝(shallow copy):创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象。2-深拷贝 (deep copy):创建一个新对象,然后将当前对象的非静态字段复制到该新对象,无论该字段是值类型的还是引用类型,都复制独立的一份。当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。3-如何实现深拷贝? ① 让每个引用类型属性内部都继承原创 2021-10-22 15:01:34 · 130 阅读 · 0 评论 -
Java - List集合简单总结
1.List集合1.1 List接口介绍java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对 象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过 索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就.原创 2021-10-20 08:19:35 · 231 阅读 · 0 评论 -
Java中方法的参数传递机制以及形参个数可变的方法
Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。基本类型的参数传递引用类型的参数传递Java对于引用类型的参数传递一样采用的是值传递方式。但是却可以改变该引用变量所引用的对象,这使许多人可能对引用类型的参数传递产生一些误会。形参个数可变从JDK 1.5之后,Java允许定义形参个数可变的参数。如果在定义方法时,在最后一个形参的类型后增加三点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。原创 2021-10-20 08:16:58 · 1060 阅读 · 0 评论 -
matches和split方法,正则表达式
boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。public String[ ] split(String regex, int limit) split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组。正则表达式 – 语法 | 菜鸟教程 (runoob.com)(1) regex是可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回原创 2021-10-17 21:22:41 · 260 阅读 · 0 评论 -
continue和break跳出多层循环的问题
在多重循环中, break和continue只对当层循环有用,对外层循环没有影响。如何直接跳出多层循环:可以在外层循环前面定义一个标号,然后在内层循环中使用带有标号break或者continue的语句,就可以直接跳出多重循环。public static void main (String args[ ]) { grade1: for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; .原创 2021-10-17 21:19:28 · 1587 阅读 · 0 评论 -
comparator接口中compare比较方法详述
java.util 包下接口 Comparator类型参数: T - 此 Comparator 可以比较的对象类型可以将 Comparator 传递给 sort 方法(如 Collections.sort或Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。 int compare(T o1, T o2) 比较用来排序原创 2021-10-17 21:18:28 · 6100 阅读 · 1 评论 -
ArrayList和LinkedList区别
ArrayList和LinkedList区别一、底层数据结构1.ArrayList是实现了基于动态数组的数据结构,每个元素在内存中存储地址是连续的;LinkedList基于链表的数据结构,是一个双向链表的结构,每个元素在内存中存储地址是离散的。二、ArrayList扩容机制2.为了使得突破动态长度数组而衍生的ArrayList初始容量为10,每次扩容会固定为之前的1.5倍,所以当ArrayList达到一定量之后会是一种很大的浪费,并且每次扩容的过程是复制数组到新数组,再对新数组重新分配容量;而Li原创 2021-10-13 21:42:42 · 151 阅读 · 0 评论 -
静态内部类和内部类
静态内部类和内部类静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。【主要是因为对于类的静态资源在类加载的时候就被加载进内存中分配空间了,先存在的不能使用后存在的】静态内部类只能访问外部类的静态成员变量和静态方法,而非静态内部类由于持有对外部类的引用(this),可以访问外部类的所用成员对象创建的方式不同静态内部类无需依赖于外部类,它可以独立于外部对象而存在,可以和外部类一样使用 创建方式是注意是new 外部类本身.静态内部类()。内部类创建原创 2021-10-09 21:08:04 · 362 阅读 · 0 评论 -
反射深度解析
反射:将类的各个组成部分封装为其他对象,这就是反射机制类加载全过程反射并不是什么高大上的东西,其实我们一直都在使用,只是我们并不知道它叫反射。IDEA就是一个程序(进程),我们定义了一个字符串s,当我们使用s.的时候,就会出现一大堆方法的提示,那么这些方法从哪里来的呢? 解析: 其内部就是使用了反射机制,当我们定义了一个字符串后,IDEA就会将字符串这个字节码文件加载进内存,那么内存中就会有一个该字符串的Class类对象,该class类对象已经将所有的方法抽取出来封装成了一个..原创 2021-09-16 11:18:40 · 108 阅读 · 0 评论 -
java.io.Serializable序列化与反序列化
类通过实现 java.io.Serializable 接口以启用其序列化功能。序列化和反序列化的时候,如果对象没有实现序列化接口 (implement Serializable),会抛出NotSerializableException没有序列化异常。类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 Serializable接口也叫标记型接口 要进行序列化和反序列化的类必须实现Seri...原创 2021-09-16 11:17:19 · 726 阅读 · 0 评论 -
枚举类深度解析
枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举:public enum t { SPRING,SUMMER,AUTUMN,WINTER;}经过反编译后,我们得到public final class T extends Enum //final修饰,继承自Enum{ //私有方法 private T(String s, int i) {原创 2021-09-16 11:15:55 · 178 阅读 · 0 评论 -
多线程情况下实例化对象发生指令重排而造成空指针问题
问题来源于:为什么双重检查的单例模式,volatile关键字不能少?public class Singleton { private static Singleton instance = null; private Singleton() { } public static volatile Singleton getInstance() { if(instance == null) { synchronzied(Singleton.c.原创 2021-09-16 11:15:22 · 764 阅读 · 1 评论 -
静态变量与静态代码块执行顺序理解
static 修饰的会被称之为 静态常量,静态变量, 静态方法 ,还有就是静态代码块,static{ // 代码块 非static修饰的方法,变量,常量, 是不能再静态代码块中使用的 } 静态常量,静态变量,静态方法, 都是通过类名直接调用的(例如:Demo.getStatic() )。但是静态代码块 不是主动调用的。 那它到底什么时候被执行呢?✔**只要你的代码在任意地方,动用了静态代码块所属的类中的任意东西,那么该静态代码块就会马上执行(说白了就是静态代码块是这个类最先执行的代码原创 2021-09-16 08:01:09 · 856 阅读 · 0 评论 -
静态(static)变量、方法的本质
首先明确static修饰的是跟着类走,而不是跟着对象走。 类的形象解释 ○ 把类看成是一个房子,房子里面有家具,桌椅板凳之类的,房子里面还有人。 ○ 这些家具是唯一的(那么就是静态的,为静态变量),所有类的变量都共用这一套家具。 ○ 房子里面的人(就相当于非静态变量),因为每套房子里面的人都可能不一样。 类的Java解释 Ø 静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。(所有new的类,都共用这一套静态变量,座椅板凳是类变量,它们是在房子被建好了之后就被原创 2021-09-15 16:58:39 · 154 阅读 · 0 评论