随笔分类 - Java
摘要:ArrayList是我们经常用到的一个类,下面总结一下它内部的实现细节和使用时要注意的地方。 基本概念 ArrayList在数据结构的层面上讲,是一个用数组实现的list,从应用层面上讲,就是一个容量会自己改变的数组,具有一系列方便的add、set、get、remove等方法,线程不安全。先上张类图
阅读全文
摘要:随着JDK的发展,一些设计缺陷或者性能不足的类库难免会被淘汰,最常见的就是Vector、Stack、HashTable和Enumeration了。 Vector(@since 1.0) 首先看看Vector的UML类图,可以看出,他是一个与ArrayList有着相同继承体系的类,大致功能也和Arra
阅读全文
摘要:内部类的分类 内部类分为普通内部类,局部内部类,匿名内部类,嵌套类,接口内部类。比较陌生的就是接口内部类了,顾名思义就是在接口中定义一个内部类,这个内部类默认是public static的,用处不大。 内部类的创建需要外部类的实例的引用 我们都知道,内部类可以肆无忌惮的访问外部类的成员,这是怎么办到
阅读全文
摘要:整理自知乎;整理自知乎;整理自知乎 静态代理与动态代理 整理自知乎;整理自知乎;整理自知乎 静态代理与动态代理 代理模式是一种设计模式,典型的分为静态代理和动态代理。 先讲静态代理 首先给个场景,现有个FontProvider接口,用于获取字体 public interface FontProvid
阅读全文
摘要:所谓静态代码块,是指用static关键字修饰的代码块,特点是代码块会在类的构造代码块、构造函数之前运行, 且只会执行一次。而构造代码块,则就是单纯的由花括号构成的代码块,特点是代码块会在类的构造函数之前运行, 且每次实例化对象都会被调用。本篇blog从虚拟机的角度描述静态代码块和构造代码块,加深理解
阅读全文
摘要:当final修饰一个数据域时,意义是声明该数据域是最终的,不可修改的。常见的使用场景就是eclipse自动生成的serialVersionUID一般都是final的。 另外还可以构造线程安全(thread safe)的immutable类,比如String,其数据域都是final的。这些使用场景都建
阅读全文
摘要:1.stop()方法 中断Java线程,首当其冲的当然是“方便的”stop()方法啦!直接调用,线程就会中止运行。 但是这个方法却在API中被标明为废弃,这是为什么? 这是正是因为它的“方便”导致的,想象某一个数据处理线程,数据处理到一半, 然后调用stop()方法,线程自然会被中断,但是他还有一半
阅读全文
摘要:以前跟别人讨论finally关键字,我总是简单的说:“fianly代码块中的代码一定会执行,一般用来清除IO资源等非内存资源(内存资源由GC机制回收)”。 今天翻书发现了几种不会执行的情况,现在总结下。 1.finally的含义 finally的真正含义是指从try代码块出来才一定会执行相应的fin
阅读全文