1. 大量判定是否

思路:通过二进制表示是否,结合位运算

2. 数据转换

2.1 数字与byte[]的等值转换

/**
 * Created by Kami Wan on 2015/12/17.
 */
public class Radix {
    public static void main(String[] args) {
        /*
            将其他进制表示的字符串转化成十进制内容
         */
        System.out.println(Integer.valueOf("10",16));       //16进制的10代表的是十进制当中的16,返回int
        System.out.println(Integer.parseInt("A",16));       //16进制的A代表的是十进制当中的10,返回Integer
        System.out.println(Long.parseLong("B",16));         //16进制的B代表的是十进制当中的11,返回Long
        /*
            将十进制表示的内容转化成二进制的字符串
         */
        System.out.println(Integer.toBinaryString(16));     //结果为10000,二进制表示的16,返回值是String
    }
}

3. 处理大数字

用BigDecimal或者BigInteger类,用字符串可以初始化。常量有ONE,TEN和ZERO

4. 基本数据类型

首先可以先看下这篇文章解惑下。
为什么Java要保留基本数据类型

/**
 * Created by Kami Wan on 2015/12/17.
 */
public class TestInteger {
    public static void main(String[] args) {
        Integer a = 1;
        Integer b = 1;
        Integer c = 200;
        Integer d = 200;
        System.out.println(a==b);
        System.out.println(c==d);

    }
}
true
false

这个就是基本数据类型和包装类里面的一个坑。int赋值给Integer的Integer.valueof()自动装箱。如果Integer赋值给int类型则使用intValue()方法。我们来看下Intger.valueOf(int)的源码

public static Integer valueOf(int i){
    if(i >= -128 && i<=IntergerCache.high)
        return IntegerCache.cache[i+128]
    else
        return new Integer(i);
}

IntegerCache.high默认是127。由源码可知,在[-128,127]这个范围内是有缓存的,缓存的值有相同的内存地址。

其他数据类型使用valueOf()自动装箱的时候,也会有类似的情况

  • Boolean的true和false都在cache中
  • Byte的256个值全部在cache中
  • Short、Long两种类型的cache范围为]-128,127]
  • Float、Double没有cache

其他扩散内容:

5. 集合

集合是老生常谈的东西,我这里仅仅罗列下我看书时刚领悟的。

  1. 已知List长度的时候,实例化ArrayList的时候可以带上长度
  2. List太大的时候,注意可以分段处理,避免OOM
  3. 思索常见的框架用到了什么集合类

6. 常见目录与工具包

6.1 java.util.Collections和java.util.Arrays

有很多不错的API提供,例如

List<String> list = new ArrayList<String>();
list.add("a");
lsit.add("b");
lsit.add("c");

这种语句可以替换成
List<String> list = Arrays.asList("a","b","c");

6.2 Comparator和Comparable接口

Comparable比较固定和不灵活,和对象捆绑在一起。Comparator比较灵活,是个比较器,谁都可以用。定义好比较规则了,可以给不同的对象使用。例如在Arrary.sort(list,comparator)中第二个参数就可以代入一个比较器。比如中文排序可以使用Collator.getInstance(java.util.Locale.CHINA)这个比较器