JAVA基础
文章平均质量分 50
.
CodingPeppa
Stay Hungry
展开
-
jls,jvms,java 语言规范,java虚拟机规范
jls,jvms,java语言规范,java虚拟机规范原创 2022-08-04 19:29:43 · 214 阅读 · 0 评论 -
Junit快速入门
一、什么是单元测试单元测试是针对最小的功能单元编写测试代码Java程序最小的功能单元是方法单元测试就是针对单个Java方法的测试二、为什么要使用单元测试2.1使用main()方法测试的缺点:只能有一个main()方法 ,不能把测试代码分离;没有打印出测试结果和期望结果;需要一种测试框架,帮助我们编写测试。2.2单元测试的好处:确保单个方法运行正常;如果修改了代码,只需要确保其对应的单元测试通过;测试代码本身就可以作为实例代码;可以自动原创 2021-12-05 22:44:23 · 361 阅读 · 0 评论 -
Java 使用LocalDate获取前n天
//获取当前日期 LocalDate now = LocalDate.now(); System.out.println(now); LocalDate tenDaysAgo = now.plusDays(-10); System.out.println(tenDaysAgo); //获取指定日期 System.out.println("测试跨年————————————————"); Local.原创 2021-11-23 16:22:26 · 2922 阅读 · 0 评论 -
Synchronized同步静态方法和非静态方法总结
1.Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。Java中每个对象都有一个锁,并且是唯一的。假设分配的一个对象空间,里面有多个方法,相当于空间里面有多个小房间,如果我们把所有的小房间都加锁,因为这个对象只有一把钥匙,因此同一时间只能有一个人打开一个小房间,然后用完了还回去,再由JVM 去分配下一个获得钥匙的人。情况1:同一个对象在两个线程中分别访问该对象的两个同步方法结果:会产生互斥。解释:因为锁针对的是对象,当对象调用一个synchronized方法时,原创 2021-10-18 14:05:11 · 321 阅读 · 0 评论 -
Integer和String做对象锁的问题
在并发编程时,对象锁是无法回避的问题,什么样的对象可以用了做锁呢?就Java语法而言,只要是对象就能作为锁来使用,然而,仍有几点必须遵守:锁不能为空,即用作锁的对象不能为空,这种错误很容易暴露,一般都能避免;锁应该是final的,此处并非要求用作锁的对象的引用一定要声明为final,而是指一个对象要用作锁的话,其引用不应该存在被修改指向的可能,否则引用指向变了,对象锁也就变了,锁可能会失效。如果使用基本数据类型的封装类型,如Integer、Long等对象做锁时,基于JVM的一些优化,如同Stri原创 2021-10-17 11:49:38 · 925 阅读 · 0 评论 -
Stream 流式编程
Stream传统Java集合的不足:集合是Java中用途十分广泛的一个集合,正是因为它对于数据的处理的优势,几乎任何一个Java应用程序都会设计对Java集合的制造和处理。 然而,一个传统的Java集合仅仅是对Java集合内部的数据进行简单的添加、删除等操作,而且处理的数据类型有限。 当涉及到复杂的业务逻辑处理时,需要借助大量的迭代器才能完成需求,操作繁琐,工作量大。流的优势流,解决了两个问题直接实现你”想要什么”可以进行并行处理。流,的本质,集合Lambda表达式,对传统Jav原创 2021-09-26 19:43:30 · 272 阅读 · 0 评论 -
JAVA静态代码块,匿名构造代码块,构造方法的执行顺序,以及在子父类继承中的执行顺序
构造代码块:在类中成员变量的位置,用{}括起来,每次调用构造方法执行前,都会优先执行构造代码块。作用:可以把多个构造方法中的共同代码放到一起public class Test { public static void main(String[] args) { new A(); }}class A{ static { System.out.println("静态代码块"); } A(){ System.out原创 2021-09-12 22:11:16 · 207 阅读 · 0 评论 -
Java基本数据类型
byte8位1字节对应封装类:Byteshort16位2字节对应封装类:Shortint32位4字节对应封装类:Integerfloat单精度浮点数32位4字节对应封装类:Floatdouble双精度浮点数(小数位更多)64位8字节long64位8字节对应封装类:Long对应封装类:Doubleboolen只有 true或者false 1位对应封装类:Booleanchar16位两字节对应封装类:Character...原创 2021-08-03 16:50:17 · 68 阅读 · 0 评论 -
用PriorityQueue实现最大最小堆
PriorityQueue(优先队列),一个基于优先级堆的无界优先级队列。(不指定Comparator时默认为最小堆),通过传入自定义的Comparator函数可以实现大顶堆。 //默认小顶堆 PriorityQueue<Integer> minHeap=new PriorityQueue<>(); //大顶堆 PriorityQueue<Integer> maxHeap=new PriorityQueue<>(new Comparator&原创 2021-06-30 10:02:48 · 120 阅读 · 0 评论 -
Java中Integer比较问题
结论:使用equals判断public class Test { public static void main(String[] args) { Integer a=new Integer(1); Integer b=new Integer(1); System.out.print("缓存范围内,两个对象引用,直接使用==判断:"); System.out.println(a==b);System.out.println("--原创 2021-07-04 12:58:31 · 148 阅读 · 0 评论 -
自定义注解 @Retention相关注意事项
记录原因isAnnotationPresent() 返回False解决方案自定义注解时,如果想通过反射获取注解信息必须加上@Retention(RetentionPolicy.RUNTIME)声明该注解的存活策略可以保留到运行时扩展@Retention 有3个值@Retention(RetentionPolicy.SOURCE) 仅仅停留在源码,编译时去除@Retention(RetentionPolicy.RUNTIME)保留到运行时,通过反射可以获取注解信息 只有保留到运行时,调用isA原创 2021-05-07 18:40:39 · 385 阅读 · 0 评论 -
Java 如何以及为什么要重写对象的 equals 方法和 hashCode 方法
前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31。接下来看看各种为什么。一、需求:对比两个对象是否相等。对于下面的 User 对象,只需姓名和年龄相等则认为是同一个对象。二、解决方案:需要重写对象的 equals 方法和 hashCode 方法package com.peppa.user.entity;import org.springframework.util.StringUtils.转载 2021-07-23 07:53:23 · 270 阅读 · 0 评论 -
JDK7,8 HashMap,ConcurrentHashMap源码分析,区别对比
HashMap源码分析JDK7数组+链表HashMap<String,String> hashMap= new HashMap<>();//数组+链表//每一个 都是存的Entry对象hashmap.put("123","1")//key-->key.hashcode()--> hashcode%数组的长度-->index,//hash冲突,形成链表,头插法,链表向下移动一格到数组中,方便后续从头开始遍历寻找//头插法更快。尾插法需要遍历到最后,效率低原创 2021-07-14 18:01:30 · 108 阅读 · 0 评论 -
常用类
Object类超类、基类,所有类的直接或间接父类,位于继承树的最顶层任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承Object类中所定义的方法,是所有对象都具备的方法Object类型可以存储任何对象作为参数,可接受任何对象作为返回值,可返回任何对象public final Class<?> getClass(){}返回引用中存储的实际对象类型应用:通常用于判断两个引用中实际存储对象类型是否一致g原创 2020-12-23 20:59:15 · 123 阅读 · 0 评论 -
JAVA集合框架学习记录
JAVA集合框架什么是集合概念对象的容器,实现了对对象常用的操作和数组的区别数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型位置java.util.*;Collection体系特点:代表一组任意类型的对象,无序、无下标、不能重复。创建集合 Collection collection = new ArrayList();常用方法添加元素 collection.add();删除元素collection.remove();collec原创 2020-12-01 19:55:02 · 160 阅读 · 0 评论 -
JAVA I/O学习记录
I/O 框架流的概念内存与存储设备之间传输数据的通道流的分类按方向(重点)输入流:将<存储设备>中的内容读到<内存>中输出流:将<内存>中的内容写到<存储设备>中按单位字节流:以字节为单位,可以读写所有数据字符流:以字符为单位,只能读写文本数据按功能节点流:具有实际传输数据的读写功能过滤流:在节点流的基础之上增强功能字节流字节流的所有类的超类(抽象类)//InputStream 字节输入流 这个抽象类是表原创 2020-12-19 16:05:55 · 103 阅读 · 1 评论