
java学习
丧气的地瓜
这个作者很懒,什么都没留下…
展开
-
读源码理解jdk8 HashMap
HashMap HashMap 继承于AbstractMap,实现了Map,Cloneable,Serializable接口。 1、内部结构 JDK7的HashMap内部结构是数组+链表。 JDK8的HashMap内部结构是数组+ 链表+ 红黑树。 链表节点结构: static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value;...原创 2020-05-19 15:38:38 · 295 阅读 · 0 评论 -
hashCode和equals
jdk对equals和hashCode的定义 对于两个对象,如果equals返回true,说明这两个对象相等。此时这两个对象的hashCode返回的整数也一定是相同的。 equals返回false,说明这两个对象不相等,但是此时这两个对象的hashCode返回的整数不一定不相同。所以,可以根据两个对象的hashCode不相同判断这两个对象不相等,但是不能根据两个对象的hashCode相同来判断这两个对象相等。因为不同的对象可能产生相同的hashCode。 在java程序执行期间,对于同一个对象,...原创 2020-05-16 10:42:24 · 223 阅读 · 0 评论 -
直接赋值、浅拷贝和深拷贝
** 直接对象赋值 ** 我们经常使用的: Student s1 = new Student(); Student s2 = s1; 直接对象赋值,它只是拷贝了对象引用地址而已,并没有在堆内存重新生成一个新的对象(如下图)。上面的s1和s2引用其实都是指向堆中同一个Student实例地址。所以如果改下s1中的任何成员变量(基本类型或者引用类型),s2中相对应的成员变量也会改变。 @Data @Builder public class Student{ String name; Integ原创 2020-05-15 02:03:38 · 913 阅读 · 0 评论 -
java8 Lambda表达式学习
Lambda表达式 - 函数式编程 Lambda 表达式,也可称为闭包,允许把函数作为一个参数,使代码更简洁。 - Lambda格式 参数列表 -> 表达式 参数列表 -> {表达式集合} s -> s.length(),s为String类型:返回给定字符串的长度,如果s = “String”,则最终结果为6 ()->5:始终返回5的无参方法 (int x, int y)-> {int z = x * y; return z + x;} //用花括号括起来的表达式集合,要显示原创 2020-05-09 15:12:52 · 241 阅读 · 0 评论