Java学习笔记之Integer自动拆装箱、数据常量池
2016-09-27 16:20
330 查看
1.自动拆箱和自动装箱
JDK5的新特性自动装箱:把基本类型转换为包装类类型
自动拆箱:把包装类类型转换为基本类型
注意一个小问题:
在使用时,Integer x = null;代码就会出现NullPointerException。
建议先判断是否为null,然后再使用。
public class IntegerDemo { public static void main(String[] args) { // 定义了一个int类型的包装类类型变量i // Integer i = new Integer(100); Integer ii = 100; ii += 200; System.out.println("ii:" + ii); // 通过反编译后的代码 // Integer ii = Integer.valueOf(100); //自动装箱 // ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱 // System.out.println((new StringBuilder("ii:")).append(ii).toString()); Integer iii = null; // NullPointerException if (iii != null) { iii += 1000; System.out.println(iii); } } }
缓冲池
Integer i=127,编译器默认将其转化成Integer i=Integer.valueOf(127);通过查看valueOf()方法的源码,针对-128到127之间的数据,内存中有一块数据缓冲池
1.如果数据是该范围内的,每次并不创建新的空间,而是先去缓冲池中寻找,没有则在缓冲池中创建该数值,有则返回该数值的地址
2.如果数据不是该范围,则 代码为 i=new Integer(XXX )
public class IntegerDemo { public static void main(String[] args) { Integer i=new Integer(127); Integer i2=new Integer(127); System.out.println(i==i2); //false System.out.println(i.equals(i2)); //true System.out.println("------------------------"); Integer i3=new Integer(128); Integer i4=new Integer(128); System.out.println(i3==i4); //false System.out.println(i3.equals(i4)); //true System.out.println("------------------------"); Integer i5=127; Integer i6=127; System.out.println(i5==i6); //true System.out.println(i5.equals(i6)); //true System.out.println("------------------------"); Integer i7=128; Integer i8=128; System.out.println(i7==i8); //false System.out.println(i7.equals(i8)); //true System.out.println("------------------------"); } }
相关文章推荐
- Java学习笔记---自动拆装箱
- 黑马程序员—Java基础学习笔记之数据类型转换(自动转换和强制转换)
- JAVA学习笔记22——基本数据类型包装类+自动装、拆箱+初识Date类
- Java学习笔记---2.Java标识符和基本数据类型
- Java学习笔记(一) Java基础以及数据类型介绍
- java学习笔记---数据类型、运算符和控制语句
- 数据连接部分通过测试源代码-----java学习笔记之4
- J2SE学习笔记3 — Java基本语法(2)基本数据类型
- java学习笔记(二)--数据的溢出
- JVM学习笔记--Java运行时数据区域
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- 【学习笔记】--java通过数据库表名自动生成实体类
- JAVA 数据结构与算法学习笔记一(转载)
- java学习笔记(二)--数据的溢出
- Java开发学习笔记之三:HTTP客户请求数据格式
- Java学习笔记---2.Java标识符和基本数据类型
- jdbc的连接问题-----java数据学习笔记之2
- Java学习笔记之JTextArea自动滚动到最后一行
- Java学习笔记四。设计模式、基本数据类型、包装类、异常、断言、包、访问权限、命名规范、jar
- java学习笔记三——数据类型转换