No7.基本数据类型的包装类

知识点:

1.基本数据类型包装类的定义:

2.数据的装箱与拆箱;

3.数据类型的转换;

具体内容:

1.认识包装类:

    java最初设计的基本原则是:一切皆对象,一切的操作都要求用对象的形式进行描述。但是这会出现一个矛盾,即基本类型不是对象。那么为了符合原则,所以最初就是利用认为的方式来解决这种问题的。

代码:

package 面试题目;

public class MyInt { //一个类
	private int num;   //这个类包装的基本数据类型
    //构造的目的是为了将基本数据类型传递给对象
	public MyInt(int num){  //将基本类型包装类
		this.num = num;
	}
	public int intValue(){   //将包装的数据内容返回
		return this.num;
	}
	
}
package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
		MyInt mi = new MyInt(10);  //将Int包装为类
		int temp = mi.intValue();  //将数据中包装的内容取出
		System.out.println(temp*2);
	}

}

   以上的转变是比较容易实现了,java为了方便用户的使用,所以专门提供了一组包装类,来包装所有的基本类型。

基本类型的数据有:byte(Byte)、short(Short)、int(Integer)、long(Long)、float(Folat)、double(Double)、char(Character)、boolean(Boolean)。

  包装类的两种类型:

       对象型包装类(Object直接子类):Character、Boolean

       数值型包装类(Number直接子类):Byte、Short、Integer、Float、Double、Long

Number是一个抽象类,里面一共定义了六个操作方法:intValue()、doubleValue()、floatValue()、byteValue()、shortValue()、longValue()

2.装箱与拆箱

      现在已经存在有基本数据类型与包装类了,那么这两种变量之间的转换就通过一下方式定义:

  • 装箱操作:将基本数据类型变化为包装类的形式

              每个包装类的构造方法都可以接收各自的类型的变量;

  • 拆箱操作:从包装类中取出被包装的数据;

              利用Number类中提供的一系列的:xxxValue()方法完成;

范例:使用Int和Integer

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
		Integer obj = new Integer(10); //将基本类型装箱
		int temp = obj.intValue();    //将基本类型拆箱
		System.out.println(temp*2);
	}

}

  之前编写的是MyInt类,现在换成了Integer这个系统类。

范例:使用double和Double

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
		Double obj = new Double(10.2); //将基本类型装箱
		Double temp = obj.doubleValue();    //将基本类型拆箱
		System.out.println(temp*2);
	}

}

范例:boolean和Boolean(不是Number子类)

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
		Boolean obj = new Boolean(true); //将基本类型装箱
		Boolean temp = obj.booleanValue();    //将基本类型拆箱
		System.out.println(temp);
	}

}

以上统一的操作是JDK1.5的。在jdk1.5以后提供了自动装箱与自动拆箱机制,并且可以直接利用包装类的对象进型数学计算。

范例:自动装箱与自动拆箱

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	         Integer obj = 10;  //自动装箱
	         int temp = obj;     //自动拆箱
	         obj++ ;    //包装类直接进行数学计算
	         System.out.println(temp*obj);
	}

}

  如果可以直接利用包装类进行计算,那么就省略勒手工的拆箱部分。

注意:Integer类对象身上发现可以直接赋予内容,也可以利用构造方法?

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	         Integer obja = 10;  //直接赋值
	         Integer objb = 10;
	         Integer objc = new Integer(10);
	         System.out.println(obja == objb); //true
	         System.out.println(obja == objc); //false
	         System.out.println(objb == objc); //false
	         System.out.println(objc.equals(obja)); //true
	}

}

判断内容是否相同需要使用equals()方法。

提示:Object可以统一天下了

   Object可以接受一切的引用数据类型,但是由于存在有自动装箱机制,那么Object也可以存放基本类型了。

        流程:基本数据类型——>自动装箱(成为对象)——>向上转向为Object

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       Object obj = 10; //先包装再转换
	       //Object不可能直接向下转向为int
	       int temp =(Integer)obj; //向下转向为Integer
	       System.out.println(temp*2);
	}

}

doubel 

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       Double obj = 10.0;//这里直接写10会被认为是int,因此必须写10.0
	       System.out.println(obj*2);
	}

}

boolean

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       Boolean flag = true ; //自动装箱
	       if(flag){ //直接拆箱判断
	    	   System.out.println("hello world!");
	       }
	       
	}

}

有了以上的自动装箱和拆箱支持之后,在数据类型的选择上就方便了许多。

3.数据类型转换(核心)

      包装类使用最多的是其数据类型转换功能,里面有将String数据变为基本类型的方法。

Integer类:public static int parseInt(String s);

Double类:public static double parseDouble(String s);

Boolean类:public static boolean parseBoolean(String s);

特别注意的是Character类里面并不存在有字符为字符的方法,因为String类有一个charAt()的方法可以更具索引取出字符内容。

范例:将字符串变为int型数据

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       String str = "123";
	       int temp = Integer.parseInt(str);
	       System.out.println(temp*2);
	       
	}
}

    此时实现了字符串变为基本类型的操作,但是在这样的转换过程中请一点光要注意:转换成数字的字符串一定要由数字组成。

范例:错误代码

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       String str = "1a23";
	       int temp = Integer.parseInt(str);
	       System.out.println(temp*2);
	       
	}
}

Exception in thread "main" java.lang.NumberFormatException: For input string: "1a23"

范例:观察Doubel转换

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       String str = "1.23";
	       Double temp = Double.parseDouble(str);
	       System.out.println(temp*2);
	       
	}
}

没有小数点也可以转换。

范例:观察boolean转换

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	       String str = "true";
	       Boolean flag = Boolean.parseBoolean(str);
	       if(flag){
	    	   System.out.println("**满足条件!**");
	       } else{
	    	   System.out.println("**不满足条件!**");
	       }
	     
	}
}

如果进行转换的时候,boolean对象不是true或者false,那么统一进行false处理。

基本类型变为字符串:

      两种做法:方式一:任何基本数据类型与字符串使用了"+"操作之后都表示变为字符串;

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	      int num = 100;
	      String str = num+"";
	      System.out.println(str.replaceAll("0","6"));
	  	     
	}
}

      这样的操作虽然可以简单的完成,但是会存在有垃圾问题(" ")。

                       方式二:public static String valueOf(数据类型 变量);

package 面试题目;

public class TestDemo {

	public static void main(String[] args) {
	      int num = 100;
	      String str = String.valueOf(num);
	      System.out.println(str.replaceAll("0","6"));
	  	     
	}
}

总结:1.jdk1.5之后才会提供自动装箱与拆箱操作。

           2.字符串与基本类型的相互转换:

  •  字符串变为基本类型,依靠包装类的parseXxx()方法
  •  基本数据类型变为字符串,依靠String.valueOf(基本数据类型)   方法。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值