java 基础
文章平均质量分 88
凉兮~
这个作者很懒,什么都没留下…
展开
-
知识点
IO BIO NIO AIO 集合 ArrayList 的扩容机制 线程安全的list HashMap JDK1.8之前 HashMap底层是数组和链表结合在一起使用也就是链表散列。 HashMap通过key 的hashCode经过扰动函数处理过后得到hash值,然后通过(n- 1)&hash判断当前元素存放的位置(这里的n指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的hash值以及key是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。 所谓扰动函原创 2021-03-28 23:12:59 · 120 阅读 · 0 评论 -
Hashmap
hashmap计算hashcode时 ,为什么会右移16位 减少碰撞 让值分布的更加均匀 计算位置时,hssh值会和length-1进行&操作,在其长度范围内取hash值 因为hashmap的长度一般不会超过16位,所以hash值的前16位可能不参与位置的计算, 所以取高16位与低16位异或,取出高16位与低16位不同的地方,即各自的特征,进行位置的运算 ...原创 2020-07-28 11:05:59 · 160 阅读 · 0 评论 -
hashcode和equal重写
原创 2020-07-24 17:31:58 · 103 阅读 · 0 评论 -
java随机数
基础 生成随机数的三种 Math.random(); java.util.Random伪随机数(线性同余法生成); java.security.SecureRandom真随机数; Math.random 方式 通过random实现 java.util.Random方式 伪随机值 通过种子得到随机值,种子相同时,随机值相同 seed 种子 long值,可以手动通过setSeed(seed);方式赋值 默认 的seed为,一纳秒为基准,拼接一个固定值组成 seed相同时,得到的随机数相同原创 2020-05-20 22:12:08 · 123 阅读 · 0 评论 -
类
基础 变量名以字母、下划线或者美元符开头,不能以数字开头,后面跟字母、下划线、美元符、数字,变量名对大小写敏感,无长度限制 类变量为类中的静态变量,实例变量为通过对象来访问的变量 在当前类构造时先执行属性赋值,类中实例属性赋值和构造代码块之间按顺序执行,构造函数中的语句最后执行 在语句块中定义的语句在语句块之外不可以访问,(包括静态代码块和实例代码块) 当类中存在final类型的变量时,需要在有...原创 2020-05-08 14:06:08 · 105 阅读 · 0 评论 -
Java 泛型
基础 泛型值 泛型值只能为类对象,不可以是基本类型,需要使用基本类型的包装类型 当泛型参数未指定时,默认为泛型类型为object类型,如 ArrayList li=new ArrayList(); li.add("ni"); li.add(2); 继承关系 泛型之间不可以继承,如Integer和Number是继承关系, Box和Box没有关系 存...原创 2020-05-03 17:38:36 · 115 阅读 · 0 评论 -
java 内存回收
引用类型 强引用 正常创建对象,不会被会收,当内存不足时,会抛出堆溢出异常 集合类的内存回收 clear 方法不会回收集合对象本身,会遍历集合数据,将集合中的每一个元素置空;此时,集合中的数据会被回收,但集合不会被回收,集合本身所维护的内部数组也不会被回收,仍会保持回收前的大小(可能是一个大数组) 集合置null,会回收与集合有关的所有内存,clear方法仅回收数据 将强引用对象转换为其...原创 2020-01-15 20:02:51 · 226 阅读 · 0 评论 -
java 时间相关
Calendar Calendar类用于日期和时间字段的操作,它可以通过特定的方式设置和读取日期的特定部分,比如年、月、日、时等。Calendar类是一个抽象类,通过Calendar calendar = Calendar.getInstance();获取对应实例,此时实例中存储的为当前时间 可以有针对性的获取,设置,增加,删除日期中某一部分的值,如年月日;月份从0开始,取出时要+1 日期、月份...原创 2019-12-31 17:52:11 · 109 阅读 · 0 评论 -
Java基础
基础 引用类型的数组初始化为null(包括string),基础类型初始化为默认值 volatile关键字(java内存),读取时强制从公共内存取值,用于变量,synchronize可起到相同作用 null可以被转换为任意类型的对象,静态方法与对象无关,即便是空对象((array)null).s(‘v’); 创建对象时,先执行父类和子类的静态初始化块(先后),然后执行父类和子类的实例初始化块和构造...原创 2019-09-09 12:42:55 · 98 阅读 · 0 评论 -
锁
锁 join为阻塞当前线程,底层为wait,会释放锁 Suspend 会使线程沉睡(调用该方法的线程),且不释放锁,会造成死锁,sleep使线程沉睡(主线程,而非调用者)也不释放锁,但会被自动唤醒 Wait会释放锁 Object的wait和notify方法使用前需要获取锁,因为两个方法都需要获取对象的monitor(监视器),该方法会使当前线程阻塞,不需要指定线程,当对象空闲时,需要调用noti...原创 2019-12-24 19:18:08 · 110 阅读 · 0 评论 -
线程
基础 getStackTrace()会返回函数栈,保存有调用类的名称,方法名,行号;返回的数据中,thread类的getstacktrace方法始终为最顶端,下标为0,之后为所调用的方法,最顶级的调用者在栈底,最新的在顶部,当方法结束后,栈中的信息也会清除 上方法中,0为getstacktrace方法,1位调用getstacktrace方法的类,2为更上一级 线程只可以被启动一次,重复启动时会报...原创 2019-12-24 19:17:11 · 95 阅读 · 0 评论