随笔分类 - java
java开发学习的一些知识
摘要:静态代理 为某个对象提供一个代理,以控制对这个对象的访问。 代理类和被代理类有共同的父类或父接口,这样在任何使用被代理类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给被代理对象处理、以及被代理对象执行完请求后的后续处理。 代理类是手动编写的代码,在编译期代理类和被代理类的
阅读全文
摘要:StringBuilder、StringBuffer源码分析 StringBuilder源码分析 类结构 StringBuilder使用final关键字修饰,和String一样不可以被继承 StringBuilder继承AbstractStringBuilder并实现了Serializable和Ch
阅读全文
摘要:String源码分析 类结构 String类实现了Serializable可以被序列化 String类实现了Comparable可以进行比较 String类实现了CharSequence可以按下标进行相关操作 并且String类使用final进行修饰,不可以被继承 属性 构造方法 方法 静态方法 j
阅读全文
摘要:LinkedHashMap源码分析 为什么要有LinkedHashMap? 在分析HashMap的时候提到了HashMap是无序的,即添加节点的顺序和遍历的顺序不一致 LinkedHashMap保证节点的顺序,这也是LinkedHashMap和HashMap的主要区别 存储示意图 类结构 Linke
阅读全文
摘要:Hashtable源码分析 类结构 Hashtable继承自Dictionary实现了Map接口。 Hashtable实现了Cloneable可以进行克隆。 Hashtable实现了Serializable可以进行序列化。 属性 节点 构造器 方法 Hashtable的所有方法都加了synchron
阅读全文
摘要:HashSet源码分析 简介 HashSet不能存放重复的值,且不保证存放的顺序。 类结构 HashSet继承自AbstractSet并重写了方法 HashSet实现可Cloneable接口,可被克隆 HashSet实现了Serializable接口,可以被序列化 属性 构造器 方法 iterato
阅读全文
摘要:HashMap源码分析 简介 HashMap是一个底层用数组+链表实现的存储KV键值对数据结构,它允许null键和null值。 原理 HashMap的存储规则是,根据K的hashCode运算得到hash值,然后根据hash值运算得到下标,如果数组中该下标没有值就放入,有值就一个一个比较是否hash值
阅读全文
摘要:ArrayList、LinkedList和Vector源码分析 ArrayList ArrayList是一个底层使用数组来存储对象,但不是线程安全的集合类 ArrayList的类结构关系 ArrayList实现了List接口,List接口中定义了一些对列表通过下标进行添加删除等方法 ArrayLis
阅读全文
摘要:Java序列化Serialize 序列化与反序列化 序列化:把对象写入到流中 反序列化:把对象从流中读取出来 什么情况下序列化 1. 对象需要通过网络进行传输 2. 需要持久化对象到磁盘 3. 需要持久化对象到数据库(把对象通过字节流的方式存储) 序列化的实现方式 实现Serializable接口
阅读全文
摘要:java克隆 为什么需要克隆 我们在很多时候需要使用一个对象去记录另外一个对象的当前状态,对象中可能会有很多属性,如果我们一个一个去设置,不仅不方便,而且效率很低,我们看一个初学者可能遇到的问题 也许有的人认为Person p2=p1这样的方式就可以克隆一个对象,这种想法是错误的,这种使用等号赋值的
阅读全文
摘要:时间 java8以前使用的时间很多方法都已经废弃了,而且不是线程安全的,java8提供了一系列的时间类,这些时间类都是线程安全的 LocalDate、LocalTime、LocalDateTime 这三个关于时间的类在使用上都类似 时间戳 Duration获取时间间隔 Peroid获取日期间隔 Te
阅读全文
摘要:接口默认方法和静态方法 默认方法 如果类的父类的方法和接口中方法名字相同且参数一致,子类还没有重写方法,那么默认使用父类的方法,即类优先 如果类实现的接口中有名字相同参数类型一致的默认方法,那么在类中必须重写 静态方法 重复注解 以前我们是这样使用注解,当要在一个方法上标注两个相同的注解时会报错,j
阅读全文
摘要:Stream 介绍 java8添加了一个抽象流Stream,可以让我们像写sql一样操作集合元素。Stream将要处理的元素看做是一种流, 在管道中传输,并进行处理,最后由终止操作得到处理的结果。 什么是Stream? Stream是一个来自特定元素队列并支持聚合操作 元素是具体类型的对象,形成一个
阅读全文
摘要:Lambda表达式 简介 Lambda表达式可以取代大部分匿名内部类,可以优化代码结构。 可以取代匿名内部类?什么意思呢? 在以前如果我们需要对集合排序,我们是这样做: 使用Arrays类提供的sort方法传入一个指定排序规则的Comparator,如果我们使用匿名内部类的话,可以看到整个内部类中只
阅读全文
摘要:equals和hashCode方法 equals 我们知道equals是用来比较两个对象是否相等的,比如我们常用的String.equals方法 hashCode方法 hashCode方法是通过一定的算法得到一个hash值,一般配合散列集合一起使用,如HashMap、HashSet都是不可以存放重复
阅读全文

浙公网安备 33010602011771号