Java学习笔记之Integer自动拆装箱、数据常量池
来源:互联网 发布:主板有什么作用知乎 编辑:程序博客网 时间:2024/05/21 13:54
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("------------------------"); }}
0 0
- Java学习笔记之Integer自动拆装箱、数据常量池
- Java学习笔记---自动拆装箱
- Integer自动拆装箱
- 《java入门第一季》之Integer类和自动拆装箱概述
- Integer关于equals与==的比较(自动拆装箱技术和常量池技术)
- java面试题12--Integer--自动拆装箱
- java特性之自动拆装箱
- java 自动拆装箱
- java 自动拆装箱
- Java自动拆装箱
- JAVA自动拆装箱
- java自动拆装箱
- Java 自动拆装箱
- Java自动拆装箱
- Integer的自动拆装箱的陷阱
- Integer的自动拆装箱的陷阱
- Integer的缓存和自动拆装箱
- Integer的自动拆装箱问题
- laravel的Eloquent模型
- The server quit without updating PID file (/var/run/mysqld/mysqld.pid)
- silverlight中ItemsSource和DataContext的用法注意
- springmvc全局异常处理
- log4j,slf4j及Commons Logging介绍与原理使用
- Java学习笔记之Integer自动拆装箱、数据常量池
- 2-1 Point类的定义
- AS 快捷键改成Ec
- PHP:冒泡排序、快速查找和二分查找的思路以及算法
- 个性化 git log 输出
- Qt的信号与槽你可能不知道的那些
- 在mvc4里怎样引用:System.Web.Optimization和entityframework
- 取某个时间段某个值的平均值要求按日取值
- 牛客网台阶问题源码实现 动态规划