
java基础
文章平均质量分 56
qq_41482600
凌波微步
展开
-
Java Map 深拷贝方法
【代码】Java Map 深拷贝方法。原创 2025-01-25 20:51:33 · 624 阅读 · 0 评论 -
MapUtils常用方法
MapUtils是一个用于处理Map对象的实用工具类,它提供了许多方便的方法来执行常见的操作,如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法,以帮助你更轻松地处理Map数据。在Java编程中,Map是一种常用的数据结构,用于存储键值对。然而,处理Map数据时,经常需要进行一些繁琐的操作,例如检查键是否存在,获取键对应的值,或者在键不存在时设置默认值。为了简化这些任务,Apache Commons Lang库提供了一个实用工具类MapUtils。原创 2024-08-01 16:53:57 · 1277 阅读 · 0 评论 -
java两个整数相除保留两位小数
【代码】java两个整数相除保留两位小数。原创 2024-07-27 10:27:16 · 1504 阅读 · 0 评论 -
java复制对象
将一个对象的引用复制给另一个对象,一共有三种方式。第一种是直接赋值,第二种方式是浅拷贝,第三种是深拷贝,这三种方式实际上都是为了拷贝对象。原创 2024-07-12 14:26:09 · 2278 阅读 · 0 评论 -
com.alibaba.fastjson.JSONObject循环给同一对象赋值会出现“$ref“:“$[0]“现象问题
有些场景下,我们会选择用JSONObject代替Map来处理业务逻辑,但是使用JSONObject时有一个需要注意的地方:在处理JSONObject对象时,引用的com.alibaba.fastjson.JSONObject,在一个集合中,循环给这个对象赋值会出现"$ref":" $ [0]",它会认为是一个对象,就出现$ref。关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。原创 2024-05-21 11:19:21 · 509 阅读 · 0 评论 -
java 非空判断
对于集合的非空判断,用CollectionUtils.isNotEmpty(list)或CollectionUtils.isNotBlank(list)去判断不会出错,因为里面会对元素数量进行判断。字符串不为空:StringUtils.isNotBlank(str)或StringUtils.isNotEmpty(str)字符串为空:StringUtils.isBlank(str)或StringUtils.isEmpty(str)= null && map.size()>0去判断。原创 2024-04-16 17:18:25 · 1201 阅读 · 0 评论 -
JAVA反射机制获取实体类对象的属性和数据类型以及属性值
【代码】Java遍历实体类的属性和数据类型以及属性值。原创 2023-06-25 16:35:18 · 1800 阅读 · 0 评论 -
JAVA反射机制实现调用类的方法
【代码】JAVA反射机制实现调用类的方法。原创 2023-11-10 11:00:55 · 410 阅读 · 0 评论 -
java try catch 异常后还会继续执行吗
1、有 try-catch 语句块,并且 throw 在 catch 语句块里,那么 try 语句块中引发异常(报错)的那一行代码的后续代码都不执行并且 catch 语句块后的代码也都不执行(遇到 finally 除外)。(见情形一和情形二)2、有 try-catch 语句块,并且 throw 在 try 语句块里,那么 try 语句块中引发异常(报错)的那一行代码的后续代码都不执行,但是 catch 语句块后的代码会继续执行。(见情形三)原创 2023-11-09 10:35:28 · 7632 阅读 · 0 评论 -
java两个实体类相同属性的复制
【代码】java两个实体类相同属性的复制。原创 2024-03-06 11:08:03 · 1170 阅读 · 0 评论 -
java抽象方法和抽象类
通过abstract定义的方法是抽象方法,它只定义没有实现。抽象方法定义了子类必须实现的接口规范。定义了抽象方法的class必须被定义为抽象方法,从抽象类继承的子类必须实现抽象方法。如果不实现抽象方法,则该子类仍是一个抽象类。面向抽象编程使得调用者只关心抽象方法的定义,不关心子类的具体实现。原创 2024-03-01 15:49:52 · 310 阅读 · 0 评论 -
java构造方法的作用
在Java中,构造方法专门负责初始化新创建的对象。当你使用“new”关键字来生成一个类的实例时,构造方法就开始工作,为新对象的属性设置合适的初始值,这个方法与类共享相同的名字,并不返回任何值,一个类可以有多种构造方法,每种方法可以接收不同的参数,这种灵活性意味着你可以根据实际需要选择合适的方式来创建对象。如果开发人员没有为类定义构造方法,编译器会提供一个默认的无参数版本,但是,一旦开发人员自定义构造方法,编译器就不再提供默认方法。原创 2024-03-01 15:31:30 · 485 阅读 · 0 评论 -
类加载时机及顺序
动态加载:如果a类引入b类的代码,不同的是a类不存放b类代码,等待a需要使用到b类中的代码时,才会去找b类中的代码进行执行。静态加载: 如果a类引入了b类的代码,相当于把 b类中的代码放在了a类中使用。⑤子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)子类的构造方法。2. 静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块可以调。①父类的静态代码块和静态属性(优先级一样,按定义顺序执行)②子类的静态代码块和静态属性(优先级一样,按定义顺序执行)原创 2024-01-13 16:20:12 · 534 阅读 · 0 评论 -
JVM内存模型
1.jvm内存模型、分区程序计数器:记录当前线程执行的位置 方法区:用于储存已被虚拟机加载的类信息,常量池(常量,静态变量),即时编译器编译后的代码 堆:存放数组和对象实例 栈:定义基本数据类型的变量,一个对象的引用保存在栈里面 Book b = new Book(); new Book()实例是放到堆里面的 b引用是放到栈里面的2.堆分区Java 堆从 GC 的角度细分为: 新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年......原创 2020-07-27 23:55:23 · 176 阅读 · 1 评论 -
静态代码块,构造代码块,构造方法
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行执行顺序优先级:静态块,main(),构造块,构造方法对于一个类而言,按照如下顺序执行:执行静态代码块执行构造代码块执行构造函数对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器public class HelloA { public HelloA(){//构造函数原创 2020-12-24 10:02:42 · 210 阅读 · 0 评论 -
java类的初始化顺序(静态 代码块 构造函数等的执行顺序)
Java类的初始化顺序Java 父类构造函数,父类静态成员变量,父类普通成员变量,父类静态代码块,父类代码块,子类构造函数 子类静态成员变量,子类普通成员变量,子类静态代码块,子类代码块执行顺序没有继承情况下1. 执行顺序 1. 静态成员变量 2. 静态代码块 3. 普通成员变量 4. 普通代码块 5. 构造函数2. 总结: 1. 静态->普通 2. 变量->代码块->构造函数 3.原创 2021-11-12 10:19:26 · 266 阅读 · 0 评论 -
ArrayList和LinkedList的区别
arraylist和linkedlist的区别是:数据结构不同,效率不同,自由性不同,主要控件开销不同1、数据结构不同ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。2、效率不同当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比Arr.原创 2022-03-15 09:25:21 · 10001 阅读 · 0 评论 -
LinkedHashSet与HashSet去重List区别
Set可删除重复数据;LinkedHashSet保持添加到其中数据的顺序,但HashSet会重新排序public static void main(String[] args) { Integer[] array = {1,3,7,3,1,5,4}; List<Integer> list = Arrays.asList(array); Set<Integer> set1 = new LinkedHashSet<>(list); List<Inte.原创 2022-04-21 15:52:10 · 379 阅读 · 0 评论 -
HashMap、ConcurrentHashMap、LinkedHashMap区别
ConcurrentHashMap是使用了锁分段技术技术来保证线程安全的,锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问 ConcurrentHashMap 是在每个段(segment)中线程安全的 LinkedHashMap维护一个双链表,可以将里面的数据按写入的顺序读出ConcurrentHashMap应用场景ConcurrentHashMap的应用场景是高并发,但是并不能保证线程安全,而同步的Has原创 2021-01-20 15:49:05 · 2297 阅读 · 0 评论 -
java集合
1.1 接口的继承关系及实现集合类存放在java.util包中,主要包括:List(列表)、Set(集)、Map(映射)原创 2020-06-05 22:10:18 · 94 阅读 · 0 评论 -
java基础
1.有基本类型,为什么还需要包装类型?8种基本类型装箱:把基本类型转换为对应的包装类型Integer a = Integer.valueOf(1);拆箱:包装转基本int b = a.intValue();java是面对对象,而基本类型不具备面向对象的特性id是Interger判断是否有值nullid是int类型判断是否为0,麻烦2.== 与 equeals区别==是用来判断两个变量之间的值是否相等,变量可以分为基本数据类型,引用类型(包装类型)如果是基本数据类型的变量直接比...原创 2020-06-11 15:26:31 · 210 阅读 · 0 评论