java基础整理
文章平均质量分 68
rowandjj
阿里巴巴资深移动开发工程师
展开
-
提防toString递归问题
看这个代码:public class D{ @Override public String toString() { return "obj:"+this; } public static void main(String[] args) { System.out.println(new D()); }原创 2014-05-15 12:58:02 · 1825 阅读 · 0 评论 -
【源码】HashMap源码剖析
注:以下源码基于jdk1.7.0_11之前的几篇文章介绍了List集合中一些比较常见的类,比如ArrayList、LinkedList、Vector等。本篇文章将介绍集合框架的另一块内容——Map集合。本文主要介绍HashMap。先回顾下哈希表。哈希表定义:根据设定的hash函数和处理冲突的方式(开放定址、公共溢出区、链地址、重哈希...)将一组关键字映原创 2014-08-14 08:46:27 · 3927 阅读 · 2 评论 -
创建线程的三种方式浅析
方式1,继承Thread:new Thread() { public void run() { System.out.println("hello world"); } }.start();方式2,实现Runnable接口:new Thread(new Runnable() { @Override public void run() {原创 2014-08-28 18:03:46 · 1572 阅读 · 0 评论 -
【源码】Hashtable源码剖析
注:以下源码基于jdk1.7.0_11上一篇分析了HashMap的源码,相信大家对HashMap都有了更深入的理解。本文将介绍Map集合的另一个常用类,Hashtable。Hashtable出来的比HashMap早,HashMap 1.2才有,而Hashtable在1.0就已经出现了。HashMap和Hashtable实现原理基本一样,都是通过哈希表实现。而且两者处理冲突的方式也一原创 2014-08-15 10:11:17 · 10573 阅读 · 6 评论 -
【源码】Timer和TimerTask源码剖析
Timer是java.util包中的一个工具类,提供了定时器的功能。我们可以构造一个Timer对象,然后调用其schedule方法在某个特定的时间或者若干延时之后去执行一个特定的任务,甚至你可以让其以特定频率一直执行某个任务,这个任务用TimerTask描述,我们将需要的操作写在TimerTask类的run方法中即可。本着“知其然,知其所以然”的心态,我决定研究下这个类的源码。打开原创 2014-08-26 09:26:23 · 2313 阅读 · 0 评论 -
【源码】Vector、Stack源码解析
注:以下源码基于jdk1.7.0_11Vector算是一个历史遗留下来的类,现在已基本被ArrayList取代。本文出于学习的目的来分析下这个类。从图上可以看出Vector和ArrayList同样都直接继承于AbstractList,说明这两者功能上还是很相像的,事实也正是如此。下面我们依然通过源码的方式解读Vector这个类。public cl原创 2014-08-11 16:09:35 · 1920 阅读 · 0 评论 -
【源码】TreeMap源码剖析
注:以下源码基于jdk1.7.0_11之前介绍了一系列Map集合中的具体实现类,包括HashMap,HashTable,LinkedHashMap。这三个类都是基于哈希表实现的,今天我们介绍另一种Map集合,TreeMap。TreeMap是基于红黑树实现的。介绍TreeMap之前,回顾下红黑树的性质:首先,我们要明确,红黑树是一种二叉排序树,而且是平衡二叉树。因而红黑树原创 2014-08-23 22:08:00 · 2349 阅读 · 1 评论 -
【源码】Set集合源码剖析
注:以下源码基于jdk1.7.0_11Set集合其实是对Map集合的封装,Map集合存储的是键值对,那么我们将值隐藏,不向外界暴露,这样就形成了Set集合。对应Map集合的两个很重要的实现HashMap(基于哈希表),TreeMap(基于红黑树),Set集合也对应了两个类HashSet和TreeSet。由于之前花很多篇幅介绍了HashMap和TreeMap,在此将不再介绍其原创 2014-08-23 22:58:53 · 2549 阅读 · 0 评论 -
【源码】LinkedList源码剖析
注:以下源码基于jdk1.7.0_11上一篇我们分析了ArrayList,今天我们在来看下LinkedList。首先上一幅框架图:LinkedList同样间接继承了AbstractList抽象类,对外来看,LinkedList提供的操作接口跟ArrayList是很类似的,差别在于内部实现上。稍微有点基础的都知道,LinkedList是基于双向原创 2014-08-08 22:41:40 · 1699 阅读 · 0 评论 -
【源码】ArrayList源码剖析
//--------------------------------------------------------------------转载请注明出处:http://blog.csdn.net/chdjjby Rowandjj2014/8/7//-----------------------------------------------------------原创 2014-08-07 22:54:22 · 1856 阅读 · 0 评论 -
【源码】java包装类总结
1.包装类除了Void和Character,其他六个全部都继承自Number。Number是一个抽象类。如下:public abstract class Number implements java.io.Serializable { public abstract int intValue(); public abstract long longValue(); pu原创 2014-08-03 10:57:13 · 2043 阅读 · 1 评论 -
【源码】StringBuilder和StringBuffer源码深度剖析
//------------------------------------------------------------------------写篇博客不容易,请尊重作者劳动成果。转载请注明出处:http://blog.csdn.net/chdjj//--------------------------------------------------------------------原创 2014-08-06 21:58:52 · 2603 阅读 · 0 评论 -
【源码】LinkedHashMap源码剖析
注:以下源码基于jdk1.7.0_11之前的两篇文章通过源码分析了两种常见的Map集合,HashMap和Hashtable。本文将继续介绍另一种Map集合——LinkedHashMap。顾名思义,LinkedHashMap除了是一个HashMap之外,还带有LinkedList的特点,也就是说能够保持遍历的顺序和插入的顺序一致,那么它是怎么做到的呢?下面我们开始分析。原创 2014-08-19 09:28:23 · 2245 阅读 · 1 评论 -
java自动装箱与拆箱
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是J2SE 5.0提供的新功能,跟泛型、变长参数等一样,这也是一颗“语法糖”,之前介绍jvm早期优化的时候说过,语法糖对运行期的代码没有任何影响,其目的仅仅是方便程序员使用,所有语法糖编译后都将会还原成基础语法。这次介绍的自动装箱和拆箱也不例外。看下头的例子:public class Demo{原创 2014-08-02 20:16:05 · 1891 阅读 · 0 评论 -
java表达式陷阱
下面将列举一些面试中常见的关于java表达式的问题,我将结果直接以注释的形式附在后面。问题1: int a = 10; int b = a + (a = 5) + a + (a = 10); System.out.println(b);//b = 30问题2: int i = 1; i = (i=i+(i+(i=2)+原创 2014-06-16 09:32:30 · 2778 阅读 · 2 评论 -
java参数传递机制浅析
欢迎转载,转载请声明出处!-----------------------------------------前言:java语言中,参数的传递只有一种机制,那就是值传递。举例:下面将通过几个例子来说明java中的参数传递机制,这些例子基本涵盖了所有参数传递的情况。1.基本数据类型:public static void testBase(int i)原创 2014-04-28 09:46:47 · 3646 阅读 · 1 评论 -
Callable和Future浅析
从java5开始,java提供了Callable接口,Callable接口提供了一个call方法可以作为线程的执行体,但call方法比run方法功能更加强大。主要体现在:1.call方法可以有返回值;2.call方法可以声明抛出异常。因此我们完全可以提供一个Callable对象作为Thread的target,而该线程的线程执行体就是该Callable对象的call方法,问题原创 2014-08-28 16:58:08 · 3094 阅读 · 1 评论