摘要: 一:总述 1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。 2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须 阅读全文
posted @ 2019-07-27 13:55 沦为旧友 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 一:懒汉模式,线程不安全 懒加载(在需要的时候创建对象) 二:懒汉模式,线程安全 效率极为低下,不建议使用 三:饿汉模式,线程安全 没有达到懒加载的目的,不推荐 四:饿汉模式,线程安全 等同于第三种 五:静态内部类,线程安全 与第三第四种的区别是:前者在类加载时就会创建实例,假如实例耗费内存,则是一 阅读全文
posted @ 2019-07-26 15:46 沦为旧友 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 附上图,图片来自网络 阅读全文
posted @ 2019-07-26 11:54 沦为旧友 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 一:先看其实现了哪些接口和继承了哪些类 1.实现了Serializable接口,表明它支持序列化。 2.实现了Cloneable接口,表明它支持克隆,可以调用超类的clone()方法进行浅拷贝。 3.继承了AbstractSet抽象类,和ArrayList和LinkedList一样,在他们的抽象父类 阅读全文
posted @ 2019-07-26 11:39 沦为旧友 阅读(736) 评论(1) 推荐(1) 编辑
摘要: 一:总述 底层实现原理是用数组+链表,与HashMap一样,但HashTable是线程安全的,HashMap是非线程安全的 下面是其结构图(与hashMap类似) 二:属性说明 三:构造方法 由构造方法可得知,hashtable没有size规定默认为11,在hashMap中默认为16,并且hashM 阅读全文
posted @ 2019-07-26 09:51 沦为旧友 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 一:总述: 主要讲解3个集合 1.ArrayList: 底层是数组,线程不安全; 2.LinkedList: 底层是链表,线程不安全; 3.Vector 底层数据结构是数组。线程安全; 二:ArrayList解析 首先,我们来看一下ArrayList的属性: /** * Default initia 阅读全文
posted @ 2019-07-25 21:40 沦为旧友 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 一:HashMap的特点 1.HashMap是基于哈希表的Map接口实现。 2.HashMap底层采用的是Entry数组和链表实现。 3.HashMap是采用key-value形式存储,其中key是可以允许为null但是只能是一个,并且key不允许重复(如果重复则新值覆盖旧值)。 4.HashMap 阅读全文
posted @ 2019-07-25 20:03 沦为旧友 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 总的来说,static的作用:方便在没有创建对象的情况下来进行调用(方法/变量)。 一:static 方法 成为静态方法,可以不依赖对象就访问,没有this关键字,不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是非静态成员方法中是可以访问静 阅读全文
posted @ 2019-07-25 17:26 沦为旧友 阅读(849) 评论(0) 推荐(0) 编辑
摘要: 前面部分摘自:https://blog.csdn.net/javazejian/article/details/51348320 一:Object中equals方法的实现原理 每个对象都有内存地址和数据,“==”比较2个对象的地址,Object类中的equals()比较的是2个对象的地址是否相同,o 阅读全文
posted @ 2019-07-25 16:28 沦为旧友 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 一、分析下面程序输出: 分析: 启动了5个线程,thread0先拿到这把锁,开始执行,thread1-4都在等待准备抢这把锁;thread0执行完之后,释放锁;thread4率先抢到了这把锁,开始执行;执行完之后thread1又抢到了这把锁,开始执行....; 所以看到每次线程访问一次,count- 阅读全文
posted @ 2019-07-25 15:30 沦为旧友 阅读(3729) 评论(4) 推荐(2) 编辑