深入理解,源码解析 Integer 神奇的老哥

咱们对这个Integer封装类并不陌生,就连初学者都了解  ,下面咱们就解剖一下这个神奇的老哥

JDK源码 (在java.lang包下面)

深入理解,源码解析 Integer 神奇的老哥

首先这老哥继承一个Number 类 ,这个类的总体作用就是对数字的处理, 这个实现了Serializable(序列化接口),内置抽象方法(intValue,longValue,floatValue,doubleValue)以及byteValue,shortValue方法。

其次实现比较接口 Comparable ,其泛型是老哥,此接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法,相当于javaArrays.sort方法,同时
不需要指定一个comparator  有兴趣可以看一下此接口和comparator  的区别,老哥就有了自己和自己本身类型比较能力。

老哥是个final类  不能被继承,所以你见过老哥的儿子和孙子吗?

深入理解,源码解析 Integer 神奇的老哥

肯定会有些大兄弟看到这玩意会懵逼的 其实这两个玩意就是2个补码,不要那么紧张

这里的话 我就不解释了   给大兄弟们一个链接(因为我懒的看 )https://blog.csdn.net/u011531425/article/details/80712160

 

最后得出来 的结论 MIN_VALUE =  -231-1   MAX_VALUE = 231-1    这是老哥的范围

深入理解,源码解析 Integer 神奇的老哥

Class.getPrimitiveClass("int")  为指定的对象返回虚拟机的类对象   实现 :static native Class getPrimitiveClass(String name);   这个类的话  是通过其他语言(好像是C写的)实现的 (native ),咱们不用管这哥们。 

这个地方涉及到老哥.class 和 老哥.TYPE  以及 int.class的区别 

我这里稍微的解释一下 

老哥.class  这个很好理解就是返回老哥的类型类,

老哥.TYPE 这个就是虚拟机的类对象, 其实也就是int 

int.class 返回的是int

  做个测试:通过反射机制,看老哥.TYPE的类型类是不是原始类型

  Class<Integer> c1 = Integer.TYPE; 
  Class<Integer> c2 = int.class; 
  System.out.println(c1 == c2);  // true
  System.out.println(c1.isPrimitive()); // true 
  System.out.println(c2.isPrimitive()); // true 

  isPrimitive方法 确定指定类对象表示一个基本类型 ,有九个预定类对象代表八个基本数据类型和void。 这些是由Java虚拟机创建,并且具有相同的名称为他们所代表的基本类型,即boolean , byte , char , short , int , long , float和double

       并且是该方法返回true的唯一类对象 

结论:

  c1和c2的虚拟机类对象是一样的,Integer在虚拟机中还是拆箱为int。

老哥.toString(int i, int radix)

深入理解,源码解析 Integer 神奇的老哥

深入理解,源码解析 Integer 神奇的老哥

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); } char buf[] = new char[33]; boolean negative = (i < 0); int charPos = 32; if (!negative) { i = -i; } while (i <= -radix) { buf[charPos--] = digits[-(i % radix)]; i = i / radix; } buf[charPos] = digits[-i]; if (negative) { buf[--charPos] = '-'; } return new String(buf, charPos, (33 - charPos)); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzzsd.html