Java学习笔记之JDK1.5新特性(四):自动装箱和自动拆箱

来源:互联网 发布:邓肯巅峰数据 编辑:程序博客网 时间:2024/06/09 16:51
package com.collection.jdk15;import java.util.ArrayList;import java.util.List;import org.junit.Test;/*JDK1.5新特性 ---> 自动装箱和自动拆箱java是面向对象的语言,任何事物都可以使用类进行描述;于是sun公司就使用了一些类描述java中八种数据类型;基本数据类型保证类型byteByteshortShortint IntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean */public class Demo4 {// 基本数据类型存在包装类的好处:@Testpublic void test1(){String str = "12";// 字符串转换成int数据类型;int i = Integer.parseInt(str);System.out.println(i+1);// 把数字转换成字符串String s = Integer.toString(i);System.out.println(s);// 把整数转换成对应的进制形式System.out.println("10的二进制:" + Integer.toBinaryString(10));System.out.println("10的八进制:" + Integer.toOctalString(10));System.out.println("10的十六进制:" + Integer.toHexString(10));// 可以把字符串当成对应的进制数据转换成十进制数据String data = "1010";int a1 = Integer.parseInt(data);// 默认是把数据当成十进制int a2 = Integer.parseInt(data, 2);// 将data对应的数据当成二进制数据int a3 = Integer.parseInt(data, 8);// 将data对应的数据当成八进制数据int a4 = Integer.parseInt(data, 16);// 将data对应的数据当成十六进制数据System.out.println("a1:" + a1);System.out.println("二进制1010对应的十进制数:" + a2);// 10System.out.println("八进制1010对应的十进制数:" + a3);// 520System.out.println("十六进制1010对应的十进制数:" + a4);// 4112}// 自动装箱:@Testpublic void test2(){// 向集合中添加整型数据//List<int> list = new ArrayList<int>();// 错误;集合中只能存储对象类型的数据,不能存储基本数据类型的数据List<Integer> list = new ArrayList<Integer>();list.add(12);list.add(3);// jdk1.4以前的写法:list.add(new Integer(33));list.add(new Integer(123));/*问题:集合是可以存储任意对象类型数据的容器;那么,上面为什么能够存储基本数据类型的数据?在jdk1.5之前,上面这种写法是会报错的;但是jdk1.5以后,出现了自动装箱的技术;自动装箱:自动把java的基本数据类型的数据转换成对象类型的数据;*/int a = 10;Integer b = a;// 自动装箱;把基本数据类型的数据赋值给引用类型的数据;Integer c = new Integer(a);// jdk1.5以前的写法;}// 自动拆箱@Testpublic void test3(){// 创建一个引用类型的数据Integer i = new Integer(22);// 自动拆箱:将引用类型的数据转换成基本数据类型的数据;int a = i;System.out.println("a:" + a);// jdk1.4以前的写法:将引用类型的数据转换成基本数据类型的数据;int b = i.intValue();System.out.println("b:" + b);}@Testpublic void test4(){/*Integer内部维护了一个缓冲数组,该缓冲数组存储的数据范围是-128~127;如果指定的数据是在这个范围之内的,那么就直接冲缓存中获取数据;如果指定的数据超出这个范围了,那么就需要重新创建新的对象存储数据了; */Integer a = 120;Integer b = 120;System.out.println("是同一个对象吗?" + (a == b)); // trueInteger m = 128;Integer n = 128;System.out.println("是同一个对象吗?" + (m == n)); // false}}

阅读全文
0 0
原创粉丝点击