包装类的使用与一些面试

package Object;
/**
 * 包装类的使用:
 * 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征
 * 2.基本数据类型、包装类、String三者之间的相互转换
 * @author tongy
 *
 */

import org.junit.Test;

public class WrapperTest {
	//基本数据类型->包装类:调用包装类的构造器
	@Test
	public void test1() {
		int num=10;
//		System.out.println(num.toString());   //基本数据类型没有类的特征
		Integer num1=new Integer(num);
		System.out.println(num1.equals(new Integer(10)));  //true
		Float f1=new Float(12.3);
		Float f2=new Float("12.3");
		System.out.println(f1.equals(f2)); //true
		Boolean b1=new Boolean(true);	//true
		Boolean b2=new Boolean("true");  //true
		Boolean b3=new Boolean("true123");	//false
		Boolean b4=new Boolean("TrUe");		//true
		Order1 order=new Order1();
		System.out.println(order.isMale);  //false
		System.out.println(order.isFemale);   //null
	}
	//包装类-->基本数据类型:调用包装类的xxxValue
	@Test
	public void test2(){
		Integer i1=new Integer(4);
		int i=i1.intValue();
		System.out.println(i+2);
		Float f1=new Float(2.0);
		double f=f1.floatValue();
		System.out.println(f+2);
	}
	//自动装箱与拆箱
	@Test
	public void test3() {
//		int m=2;
//		method(m);  //并不是Object obj=m; 一个int型的数据不能直接赋给一个类
		//自动装箱  基本数据类型-->包装类
		int num=3;
		Integer num1=num;	//自动装箱
		
		boolean b1=true;
		Boolean b2=b1;	//自动装箱
		//自动拆箱  包装类-->基本数据类型
		System.out.println(num1.toString());
		int num3=num1;  //自动拆箱
		
	}
	public void method(Object obj) {
		System.out.println(obj);
	}
	//基本数据类型、包装类-->String转换  调用String重载的ValueOf(Xxx xxx)
	@Test
	public void test4() {
		int num=12;
		//方式一:连接运算
		String str=num+"";
		//方式二:ValueOf()
		float f1=12.3f;
		String string=String.valueOf(f1);
		System.out.println(string);
		
		Double d1=new Double(12.3);
		String string2=String.valueOf(d1);
		System.out.println(string2);
	}
	//String-->基本数据类型、包装类:调用包装类的方法:parseXxx()
	@Test
	public void test5() {
		String s1="123";
		//错误的情况
//		int i1=(int)s1;
//		Integer i2=(Integer)s1;  //类强转必须两个类之间有子父类关系
		//可能会报NumberFormatException
		System.out.println(Integer.parseInt(s1));
		String s2="true";
		boolean b1=Boolean.parseBoolean(s2);
		System.out.println(b1);
	}
	@Test
	public void t1(){
		Object o1=true?new Integer(1):new Double(2.0);
		System.out.println(o1);    //1.0
		Object o2;
		if (true) {
			o2=new Integer(2);
		}
		else {
			o2=new Double(3.0);
		}
		System.out.println(o2);		//2
		System.out.println(new Integer(4));
	}
	@Test
	public void t2() {
		Integer i=new Integer(1);
		Integer j=new Integer(1);
		System.out.println(i==j);//false
		//Integer内部定义了IntegerCache结构,IntegerCache内部定义了一个Integer数组,保存了
		//-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在-128~127中,可以直
		//接使用数组中的元素,不用再去new。主要目的是提高效率
		Integer m=1;
		Integer n=1;
		System.out.println(m==n);//true
		Integer p=128;	//相当于new了一个对象
		Integer q=128;
		System.out.println(p==q);//false
	}
}
class Order1{
	boolean isMale;
	Boolean isFemale;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值