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

本文详细介绍了JDK1.5中的新特性——自动装箱和自动拆箱的功能及其实现方式,并通过示例代码展示了如何在实际编程中应用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.collection.jdk15;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/*
JDK1.5新特性 ---> 自动装箱和自动拆箱

java是面向对象的语言,任何事物都可以使用类进行描述;于是sun公司就使用了一些类描述java中八种数据类型;
	基本数据类型		包装类型
	byte			Byte
	short			Short
	int 			Integer
	long			Long
	
	float			Float
	double			Double
	
	char			Character
	
	boolean			Boolean

 */

public class Demo4 {

	// 基本数据类型存在包装类的好处:
	@Test
	public 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);	// 10
		System.out.println("八进制1010对应的十进制数:" + a3);	// 520
		System.out.println("十六进制1010对应的十进制数:" + a4);// 4112
	}
	
	// 自动装箱:
	@Test
	public 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以前的写法;
	}
	
	// 自动拆箱
	@Test
	public 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);
	}
	
	@Test
	public void test4(){
		
		/*
		Integer内部维护了一个缓冲数组,该缓冲数组存储的数据范围是-128~127;
		如果指定的数据是在这个范围之内的,那么就直接冲缓存中获取数据;
		如果指定的数据超出这个范围了,那么就需要重新创建新的对象存储数据了;
		 */
		
		Integer a = 120;
		Integer b = 120;
		System.out.println("是同一个对象吗?" + (a == b)); 	// true
		
		Integer m = 128;
		Integer n = 128;
		System.out.println("是同一个对象吗?" + (m == n)); 	// false
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值