包装类

本文详细介绍了Java中基本数据类型与包装类之间的转换方法,包括手动装箱拆箱及自动装箱拆箱的过程,并提供了String类型与其他数据类型相互转换的具体方式。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
blooeanBlooean
charCharacter

byte、short、int、long、float、double 的父类是 number

在这里插入图片描述

基本数据类型--------包装类

1、基本数据 ===> 包装类:调用包装类的构造方法

因为包装类中重写了toString()方法,所以以下两个句子效果相同,都是输出对象里面存储的具体值

System.out.println(new Integer(num).toString());    //10
System.out.println(new Integer("12"));

调用包装类的构造方法,构造方法可以放对应的基本数据,也可以放对应的字符串

class Untitled {
	public static void main(String[] args) {
		int num = 10;
		Integer i1 = new Integer(num);
		Integer i2 = new Integer("12");
		System.out.println(i1.toString());    //10
		System.out.println(i2);    //12
		
		//编译不报错,运行报错
		//Integer i3 = new Integer("12abc");
		//System.out.println(i3);
		
		Float f1 = new Float(2.3f);
		System.out.println(f1);
	}
}

若输入的字符串和需要的基本数据类型内容对应不上,就会在运行时候报错

	//编译不报错,运行报错
	//Integer i3 = new Integer("12abc");
	//System.out.println(i3);

注意boolean类型的数据有个特殊之处

当给包装类的构造器传输String类型的字符串时,无论大小写只要是true,就输出true,若是其他的字符,就直接输出false,而不是运行报错

	boolean b = true;
	Boolean b1 = new Boolean(b);
	Boolean b2 = new Boolean("tRuE");
	Boolean b3 = new Boolean("true123");
	Boolean b4 = new Boolean(null);
	
	System.out.println(b1);   //true
	System.out.println(b2);   //true
	System.out.println(b3);   //false
	System.out.println(b4);   //false

2、包装类 ===> 基本数据:调用包装类的xxxValue()方法

调用包装类的xxValue()方法,xxx代指基本数据类型

class Untitled {
	public static void main(String[] args) {
		Integer ii = new Integer(12);
		int i = ii.intValue();
		System.out.println(i + 1);     //13
		//注意以下代码
		System.out.println(ii + 1);    //13
		
		Float ff = new Float(2.3f);
		float f = ff.floatValue();
		System.out.println(f + 1);     //3.3
		//注意以下代码
		System.out.println(ff + 1);    //3.3
	}
}

2、自动封箱、自动拆箱

class Untitled {
	public static void main(String[] args) {
		//自动装箱
		int i = 10;
		m(i);  //Object obj = new Integer(i)
		Integer a = i;
		
		boolean b = true;
		Boolean bb = b;
		
		//自动拆箱
		System.out.println(a + 1);
		int ii = a;
	}
	//注意非静态方法不能在静态方法中调用
	public static void m(Object obj){
		System.out.println(obj);
	}
}

String类型--------基本数据类型包装类

1、基本数据类型包装类 ===> String类型:调用String类重载的valueOf(变量)方法

方法重载是指在同一个类中,方法名相同,参数列表不同。

class Untitled {
	public static void main(String[] args) {
		int i = 10;
		//转换成String类型
		//方法一:连接字符串
		String str1 = i+"";
		System.out.println(str1);     //10
		//方法二:调用String的valueOf()方法
		float f = 2.3f;
		String str2 = String.valueOf(f);
		System.out.println(str2);     //2.3
	}
}

1、String类型 ===> 基本数据类型包装类:调用包装类的parseXxx()方法

调用包装类的parseXxx()方法,xxx代指基本数据类型

class Untitled {
	public static void main(String[] args) {
		String str = "123";
		int i = Integer.parseInt(str);
		System.out.println(i+1);      //124
	}
}

若输入的字符串和需要的基本数据类型内容对应不上,就会在运行时候报错:NumberFormatException

	//编译不报错,运行报错
	//String str = "123a";
	//int i = Integer.parseInt(str);
	//System.out.println(i+1);

注意boolean类型的数据有个特殊之处

当给包装类的parseXxx()方法传输String类型的字符串时,无论大小写只要是true,就输出true,若是其他的字符,就直接输出false,而不是运行报错

class Untitled {
	public static void main(String[] args) {
		String str = "TruE";
		boolean i = Boolean.parseBoolean(str);
		System.out.println(i);       //true
		String str1 = "TruE123";
		boolean i1 = Boolean.parseBoolean(str1);
		System.out.println(i1);     //false
	}
}

小结

  1. 基本数据 ===> 包装类:调用包装类的构造方法
  2. 包装类 ===> 基本数据:调用包装类的xxxValue()方法
  3. 基本数据类型包装类 ===> String类型:调用String类重载的valueOf(变量)方法
  4. String类型 ===> 基本数据类型包装类:调用包装类的parseXxx()方法

练习题

输出以下结果

Object obj = true ? new Integer(1):new Double(2.0);
System.out.println(obj);
Object obj;
if(true)
	obj = new Integer(1);
else
	obj = new Double(2.0);
System.out.println(obj);

输出以下结果

public void m(){
	Integer a = new Integer(1);
	Integer b = new Integer(1);
	System.out.println(a == b);

	Integer m = 2;
	Integer n = 2;
	System.out.println(m == n);
	
	Integer x = 128;
	Integer y = 128;
	System.out.println(x == y);
}

参考字符串

class Untitled {
	public static void main(String[] args) {
		String s = new String("a");
		String t = new String("a");
		//System.out.println(s);
		System.out.println(s == t);     //false
		
		String w = "b";
		String m = "b";
		//System.out.println(w);
		System.out.println(w == m);     //true
	}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值