包装类学习


  

1 包装类

   Java为每个基本类型都提供了一个对应的包装类

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

2 为什么用包装类

为了编程方便提供的包装类

/**
 * 使编程更加方便
 */
public class Test01 {

	public static void main(String[] args) {

		m1("asdf");
		
		m1( 456 );
		/*
		 * m1()方法的形参是Object类型的引用,调用方法时,只能obj形参传递一个引用, 
		 * 不能直接传递基本类型数据
		 * 在这儿调用m1( 456 ); 系统没有错误, 
		 * 是因为系统自动把整数 456 转换为对应的包装类对象, 再把包装类对象传递给形参obj
		 */
	}

	//定义一个方法,可以接收任意类型的数据
	public static void m1( Object obj ) {
		
	}
}

3 包装类的继承结构

在这里插入图片描述

4 创建包装类对象

  1、所有的包装类都可以根据基本类型创建包装类对象
  2、除了Character外, 其他的包装类都可以根据字符串创建包装类对象

/**
 * 创建包装类对象
 */
public class Test02 {

	public static void main(String[] args) {
		//1) 都可以根据基本类型创建包装类对象
		Boolean b1 = new Boolean(true);
		Character c1 = new Character('A');
		Integer i1 = new Integer(123);
		Double d1 = new Double(3.14);
		
		//2) 除了Character外,都可以根据字符串创建包装类对象
		Integer i2 = new Integer("789");
		Double d2 = new Double("78.456");
		//注意, 字符串格式要符合对应的数字格式
//		i2 = new Integer("abc"); 		//java.lang.NumberFormatException
		d2 = new Double("213e+2"); 		//科学计数法
		System.out.println( d2 );
//		d2 = new Double("2323dsafaf");   //java.lang.NumberFormatException
		
		Boolean b2 = new Boolean("true");
		System.out.println( b2 );
		//Boolean可以把非"true"的字符串都转换为false
		b2 = new Boolean("asdfasfdasfasfasfda");
		System.out.println( b2 );    //false
	}
21300.0
true
false

Process finished with exit code 0

5 包装类的基本操作

/**
 * 包装类的基本操作
 * 	以Integer类为例
 */
public class Test03 {

	public static void main(String[] args) {
		Integer i1 = new Integer(123);
		
		//1)从Number继承的方法, byteValue(), shortValue(), intValue(), floatValue(), doubleValue()
		byte bb = i1.byteValue();
		double dd = i1.doubleValue();
		
		//2) 包装类都实现了Comparable接口,重写comapareTo()方法,可以比较两个包装类对象的大小
		//在包装类中都有一个value字段保存对应基本类型的数据, 在比较大小时,根据value字段大小比较
		Integer i2 = new Integer("789");
		System.out.println( i1.compareTo(i2));      //-1
		
		//3) 重写equals()方法, 根据value字段的值判断
		System.out.println( i1.equals(i2) ); 		//false
		
		//4)包装类有parseXXX( text ) 可以把字符串转换为基本类型数据
		int num = Integer.parseInt("369");
		double dd2 = Double.parseDouble("3.14");
		//注意, 参数字符串要符合数字格式
//		num = Integer.parseInt("3.14");  // java.lang.NumberFormatException
		
		//5)重写了toString()方法
		String text = i1.toString();
		
		//6) valueOf() 可以把基本类型/String字符串转换为包装类对象
		Integer i3 = Integer.valueOf(147);
		i3 = Integer.valueOf("258");
	}
}
-1
false

Process finished with exit code 0

6 拆箱和装箱

装箱:把基本类型转换为包装类对象
拆箱:把包装类对象转换为基本类型

在Java中, 装箱与拆箱可以自动进行


public class Test04 {

	public static void main(String[] args) {
		Integer i1 = 123; 		//装箱
		int num = i1; 			//自动拆箱
		
		Integer i2 = 456; 		//根据基本类型数据456创建一个包装类对象, 把该对象的引用赋值给i2
		Integer i3 = 456;		//创建了一个新包装类对象
		System.out.println( i2.equals(i3)); 	//true
		System.out.println( i2 == i3 ); 		//false
		
		i2 = 123; 		//自动装箱
		i3 = 123;
		System.out.println( i2 == i3 ); 		//true
		/*
		 * Java认为-128 ~ 127 之间的整数是使用最频繁的, 所以该范围的整数装箱后的包装类对象存储在共享池中
		 * 在执行 i2 = 123时, 根据123创建Integer对象,存储 在共享池中
		 * 执行 i3 = 123时, 直接把共享池中的包装类对象的引用返回赋值给i3
		 */
		
		Long gg1 = 66L;
		Long gg2 = 66L;
		System.out.println( gg1 == gg2 ); 		//true
	}

}

true
false
true
true

Process finished with exit code 0

7 int/ Integer/String之间的相互转换

/**
 * 编写程序,实现int/ Integer/String之间的相互转换
 */
public class Test04 {

	public static void main(String[] args) {
		//1)int->String
		int num = 456;
		String text = "" + num ; 
		text = String.valueOf(num);
		text = Integer.toString(num);
		
		//2) Integer -->String
		Integer i1 = new Integer(789);
		text = i1.toString(); 
		
		//3) int -->Integer
		i1 = num; 			//自动装箱
		i1 = Integer.valueOf(num);
		
		//4) String -->Integet
		i1 = Integer.valueOf(text);
		
		//5)Integer-->int
		num = i1 ; 			//自动拆箱
		num = i1.intValue();
		
		//6) String -->int
		num = Integer.parseInt(text);
		
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值