JDK-Integer源码解读
2018-01-06 15:03
363 查看
通过类的定义可以看出
不能被继承
实现Comparable接口,用compareTo进行比较并且Integer对象只能和Integer类型的对象进行比较,不能和其他类型比较
继承了Number类,所以该类可以调用longValue、floatValue、doubleValue等系列方法返回对应的类型的值
属性
私有属性
value
serialVersionUID
公有属性
publis static fianl 可以直接使用
方法
当Integer被加载时,就新建了-128到127的所有数字并存放在Integer数组cache中
当调用valueOf方法(包括后面会提到的重载的参数类型包含String的valueOf方法)时,如果参数的值在-127到128之间,则直接从缓存中返回一个已经存在的对象。如果参数的值不在这个范围内,则new一个Integer对象返回
String->int调用栈
getInteger
获取确定具有指定名称的系统属性的整数值
decode
该方法的作用是将 String 解码为 Integer。接受十进制、十六进制和八进制数字
根据要解码的 String(mn)的形式转成不同进制的数字。 mn由三部分组成:符号、基数说明符和字符序列。 —0X123中-是符号位,0X是基数说明符(0表示八进制,0x,0X,#表示十六进制,什么都不写则表示十进制),123是数字字符序列。
总结
parseInt方法返回的是基本类型int
其他的方法返回的是Integer
valueOf(String)方法会调用valueOf(int)方法。借助缓存
如果需要一个对象,那么建议使用valueOf(),因为该方法可以借助缓存带来的好处。
如果和进制有关,那么就是用decode方法。
如果是从系统配置中取值,那么就是用getInteger
int转为String
toString()
局部性原理之空间局部性:sizeTable为数组,存储在相邻的位置,cpu一次加载一个块数据数据到cache中(多个数组数据),此后访问sizeTable 不需要访问内存。
基于范围的查找,是很实用的设计技术
移位的效率比直接乘除的效率要高
乘法的效率比除法的效率要高
compareTo
参考文章
jdk-Integer
java成神之路-Integer源码
public final class Integer extends Number implements Comparable<Integer>
不能被继承
实现Comparable接口,用compareTo进行比较并且Integer对象只能和Integer类型的对象进行比较,不能和其他类型比较
继承了Number类,所以该类可以调用longValue、floatValue、doubleValue等系列方法返回对应的类型的值
属性
私有属性
value
serialVersionUID
公有属性
publis static fianl 可以直接使用
方法
当Integer被加载时,就新建了-128到127的所有数字并存放在Integer数组cache中
当调用valueOf方法(包括后面会提到的重载的参数类型包含String的valueOf方法)时,如果参数的值在-127到128之间,则直接从缓存中返回一个已经存在的对象。如果参数的值不在这个范围内,则new一个Integer对象返回
String->int调用栈
getInteger(String nm) ---> getInteger(nm, null);--->Integer.decode()--->Integer.valueOf()--->parseInt()
getInteger
获取确定具有指定名称的系统属性的整数值
decode
该方法的作用是将 String 解码为 Integer。接受十进制、十六进制和八进制数字
根据要解码的 String(mn)的形式转成不同进制的数字。 mn由三部分组成:符号、基数说明符和字符序列。 —0X123中-是符号位,0X是基数说明符(0表示八进制,0x,0X,#表示十六进制,什么都不写则表示十进制),123是数字字符序列。
总结
parseInt方法返回的是基本类型int
其他的方法返回的是Integer
valueOf(String)方法会调用valueOf(int)方法。借助缓存
如果需要一个对象,那么建议使用valueOf(),因为该方法可以借助缓存带来的好处。
如果和进制有关,那么就是用decode方法。
如果是从系统配置中取值,那么就是用getInteger
int转为String
toString()
局部性原理之空间局部性:sizeTable为数组,存储在相邻的位置,cpu一次加载一个块数据数据到cache中(多个数组数据),此后访问sizeTable 不需要访问内存。
基于范围的查找,是很实用的设计技术
移位的效率比直接乘除的效率要高
乘法的效率比除法的效率要高
compareTo
return (x < y) ? -1 : ((x == y) ? 0 : 1);
参考文章
jdk-Integer
java成神之路-Integer源码
相关文章推荐
- JDK源码解读之Integer(1)
- JDK 源码解析 —— Integer
- JDK之ArrayList源码解读
- JDK之CopyOnWriteArrayList源码解读
- Timer的故事----Jdk源码解读
- java源码解读之TreeMap------jdk 1.7
- java读书笔记:LinkendList源码解读(基于jdk1.8)
- 63_常用类_包装类_Integer_Number_JDK源码分析
- JDK 源码解析 —— Integer
- JDK源码分析之Integer
- Java之ArrayList源码解读(JDK 1.8)
- Java之LinkedList源码解读(JDK 1.8)
- JDK源码分析-Integer
- JDK源码之解读hashMap 的put和get方法的实现原理
- Integer.valueOf方法的源码解读
- java 十六进制 Integer 进制转换 源码解读
- JDK源码分析-Integer
- JDK源码分析-Integer
- JDK源码之解读hashMap 的put和get方法的实现原理
- JDK 1.7 Integer.parseInt 源码解析