
Java
文章平均质量分 84
HWHuangeian
每天学习一点点,每天进步一点点
展开
-
volatile关键字解读
volatile用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的值,volatile很容易被误用.下面看一个例子,我们实现一个计数器,每次线程启动的时候,会调用计数器inc方法,对计数器进行加一package test;public class Counter { public static int count = 0; pub转载 2015-10-17 20:31:17 · 789 阅读 · 0 评论 -
List与ArrayList起头的区别
首先List是一个接口,而ArrayList是一个类。当声明为List list = new ArrayList()时,这句话创建了一个ArrayList的对象,然后把它上溯至List,此时它是个List对象,可以使用List固有的属性和方法,但是不能使用原来ArrayList的属性。 List list = new ArrayList(); list.trimToSiz原创 2015-11-06 18:29:05 · 593 阅读 · 0 评论 -
finalize()与System.gc()
GC的特殊情况与finalize()的“假定”原理GC负责回收无用对象占据的内存资源。但也有特殊情况:假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以它不知道该如何释放该对象的这块“特殊”内存。为了应对这种情况,Java允许在类中定义一个名为finalize()的方法。它的工作原理“假定”是这样的:一旦GC准备好释放对象占用的存原创 2015-10-21 20:02:27 · 598 阅读 · 0 评论 -
ArrayList与Vector异同
List是一个接口,里面声明有操作“表”这一种数据结构的通用方法,具体实现类实现此接口后,根据实现的不同可对通用方法进行不同程度的扩展,它主要有四个实现类:ArrayList,LinkedList,Vector,Stack。ArrayList原创 2015-11-09 22:45:56 · 981 阅读 · 0 评论 -
String、StringBuilder与StringBuffer
StringString类的部分源代码:public final class String { private final char value[]; public String() { this.value = new char[0]; } public String(String original) { /*把字符串分原创 2015-10-30 14:11:05 · 493 阅读 · 0 评论 -
HashMap原理分析
HashMap基于哈希表的Map接口实现,其中每个元素是一个key-value对,允许使用null值和null键。内部使用单链表的方式解决hash冲突的问题,当容量不足时,它会自动增长容量。HashMap中的部分字段:static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//默认初始容量为16static final int MAXIMUM原创 2015-11-19 18:50:37 · 600 阅读 · 0 评论 -
Java中堆与栈的关系
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }Populate each next pointer to point to its next right node.转载 2015-10-15 16:28:31 · 5614 阅读 · 1 评论 -
Java类初始化顺序
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public Stri转载 2015-10-26 22:43:07 · 410 阅读 · 0 评论