- 博客(3)
- 收藏
- 关注
原创 反射的使用(超详细)
可以实例化:getInstance方法使用clazz.newInstance()方法创建该类的实例对象,因此必须保证这个类是可实例化的,即它必须包含一个公共的默认构造函数,否则会抛出InstantiationException异常。接着,使用构造方法创建对象,这里使用了三种不同的构造方法:无参构造方法,带有一个字符串参数的构造方法和带有一个字符串参数和一个整数参数的构造方法。使用Constructor的newInstance方法创建一个User类的对象,传入的参数是一个字符串"醉梦"。
2023-03-03 20:25:02 464
原创 【HashMap底层原理解析】
原理:当我们写put()方法时,传入key-value值,然后根据传过来的key-调用他hashCode方法,通过高16和低16位的异或运算增加随机性 ,然后将hash值(运算后的)、key、value、 两个boolean值传入putVal方法进行放入。带参构造靠这个方法来保证容量是2的多少次方-把你给容量变为离你最近并且比你大的2的多少次方 ,通过移位运算(确实挺牛的方法)横着的是数组,里面是一个个的元素。(其中的红黑树是发生冲突实现的,具体的实现概率大概只有百万分之几,概率很小。
2023-02-25 15:37:23 871 2
原创 解析ArrayList集合底层原理
虽然都为空,但内存地址不一样是两个不同的数组;以便区分这是默认构造还是带参构造时给的长度为0的数组。方法计算出了明确所需的容量,如果大于底层数组的长度则扩。如果新的容量还是不满足需要的容量,则直接把新容量。确保ArrayList的容量(判断是否需要扩容)将元素添加到elementData数组的指定位置。以后的都不为空就不进if循环,所以说。ArrayList 的底层实现是通过。,如果容量过大则报异常(一般不可能).将集合中实际的元素个数加1。定义了两个常量空数组。方法来确保最小容量。无参构造的第一次而写。
2023-02-23 20:24:03 236 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人