Integer类源码浅析】的更多相关文章

1.首先Integer提供了两类工具类,包括把一个int类型转成二进等, 其实执行转换算法只有一个方法: public static String toString(int i, int radix) { if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) radix = 10; /* Use the faster version */ if (radix == 10) { return toString(i); }…
先看一下它的继承.实现关系: public final class Integer extends Number implements Comparable<Integer> Number是个抽象类,大概包含六个抽象方法,都是用来类型转换的 具体代码如下:public abstract class Number implements java.io.Serializable { public abstract int intValue(); public abstract long longV…
1.Long类和Integer相类似,都是基本类型的包装类,类中的方法大部分都是类似的: 关于Integer类的浅析可以参看:Integer类源码浅析 2.这里主要介绍一下LongCache类,该缓存类比Integer的缓存类,实现更简单 private static class LongCache { private LongCache(){} static final Long cache[] = new Long[-(-128) + 127 + 1]; static { for(int i…
由于是浅析,所以我只分析常用的接口,注意是Android系统中的JAVA类,可能和JDK的源码有区别. 首先从构造函数开始, /** * Min capacity (other than zero) for a HashMap. Must be a power of two * greater than 1 (and less than 1 << 30). */ private static final int MINIMUM_CAPACITY = 4; /** * Max capacity…
1.首先来看一下ArrayList类中的字段 可以看出,ArrayList维护了一个Object数组,默认容量是10,size记录数组的长度: 2.ArrayList提供了三个构造器:ArrayList(int initialCapacity),ArrayList(),ArrayList(Collection<? extends E> c) 带int参数的构造是指定ArrayList的大小,无参的构造函数,Object[]初始化为一个空数组,重点来讨论接受一个Colection参数的构造器,先…
Byte 类字节,属于Number. public final class Byte extends Number implements Comparable<Byte> { /** * A constant holding the minimum value a {@code byte} can * have, -2<sup>7</sup>. */ public static final byte MIN_VALUE = -128; /** * A constant…
1.先来看一看LinkedList类的字段和构造方法 size记录链表的长度,first永远指向链表的第一个元素,last永远指向链表的最后一个元素 提供两个构造方法,一个无参的构造方法,一个接受一个Collection对象为参数的构造方法 first和last的类型都是Node,Node是LinkedList类中的一个私有的静态内部类,定义非常简单 Node类中定义了三个字段,数据域item,后继元素next,前驱元素prev,而且都是接受泛型的 2.来看第一个方法linkFirst(E e)…
1.看一个示例 运行上述代码,抛出一个异常: 这是一个典型的并发修改异常,如果把上述代码中的125行注释,把126行打开,运行就能通过了: 原因: 1)因为在迭代的时候,使用的是Itr类的对象,在调用hasNext()方法的时候,只要cursor和szie不相等就返回true: 2)在Itr类中存在一个属性字段:expectedModCount,每次调用next()方法的时候都会检查expectedModCount和modCount是否相等, 如果不相等,就会抛出异常: 3)调用Itr类的rem…
1.removeAll(Collection<?> c)和retainAll(Collection<?> c)方法 第一个是从list中删除指定的匹配的集合元素,第二个方法是用指定的集合替换list: 但是在这两方法中调用同一个batchRemove方法: 2.内部类Sublist 这个类继承自AbstractList抽象类,实现RandomAccess接口,类中的字段有 这个类中的大部分的方法都是在调用ArrayList的方法:ArrayList.this.elementData…
1.上一节介绍了LinkedList的几个基本的方法,其他方法类似,就不一一介绍: 现在再来看一个删除的方法:remove(Object o) remove方法接受一个Object参数,这里需要对参数做空与非空处理: 但是删除一个Object元素,都需要遍历整个链表,这样如果需要频繁的调用remove方法,删除的效率是非常低的: 类似的方法还有indexOf(Object o):这是根据传入的object参数来获取下标的方法: 2.根据下标来查找节点元素:node(int index) 这个查询…