Java 数据类型包装器

为什么使用包装类

Java虽然是面向对象的编程语言,但是在里面包含了8种基本数据类型,这8个基本数据类型不支持面向对象的编程机制。

这些基本数据类型的数据不具备“对象”的特性,例如没有属性、没有方法可以被调用。这8种基本数据类型带来了一定的方便之处,例如可以进行简单、有效的常规数据处理。

但在某些时候,在使用基本数据类型时会有一些制约,例如所有引用类型的变量都继承了 Object类,都可以当成Object 类型变量来使用。但是基本数据类型的变量就不可以,如果有个万法需要用到Object类型的参数,但实际需要的值却是诸如数字3之类的数值,这可能就比较难以处理。

为了解决8个基本数据类型的变量不能当成Object奚型变量使用的这一问题,在Java中引入了包装类,通过包装类可以为8个基本数据类型分别定义相应的引用类型,这被称为基本数据类型的包装类。

包装类类型

Java库在java.lang包中提供了八个类来表示八种基本类型中的每一种。
这些类称为包装类,因为它们在对象中包装原始值。

下表列出了原始类型及其相应的包装类。

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

方法
所有包装类都是不可变的。它们提供了两种方法来创建它们的对象:

  • 使用构造函数
  • 使用valueOf()工厂方法

除了Character之外,每个包装类都提供至少两个构造函数:一个采用对应基本类型的值,另一个采用String。
Character类只提供一个接受char的构造函数。

以下代码创建一些包装类的对象:

public class Main {
  public static void staticMethod() {
    // Creates an Integer object from an int
    Integer intObj1 = new Integer(100);

    // Creates an Integer object from a String
    Integer intObj2 = new Integer("1969");

    // Creates a Double object from a double
    Double doubleObj1 = new Double(10.45);

    // Creates a Double object from a String
    Double doubleObj2 = new Double("234.60");

    // Creates a Character object from a char
    Character charObj1 = new Character("A");

    // Creates a Boolean object from a boolean
    Boolean booleanObj1 = new Boolean(true);

    // Creates Boolean objects from Strings
    Boolean booleanTrue = new Boolean("true");
    Boolean booleanFalse = new Boolean("false");
  }
}

valueOf()
创建包装类对象的另一种方法是使用它们的valueOf()方法。
valueOf()方法是静态的。
下面的代码使用它们的valueOf()方法创建一些包装器类的对象:

public class Main {
  public static void staticMethod() {
    Integer  intObj1 = Integer.valueOf(100); 
    Integer  intObj2 = Integer.valueOf("2014"); 
    Double  doubleObj1  = Double.valueOf(10.45); 
    Double  doubleObj2  = Double.valueOf("234.56"); 
    Character charObj1   = Character.valueOf("A");
  }
}

实例文件baozhuang.java

public class baozhuang
{
	public static void main(String[] args) 
	{
		boolean bl = true;
		//通过构造器把b1基本类型变量包装成包装类对象
		Boolean blObj = new Boolean(bl);
	
		int it = 5;
		//通过构造器把it基本类型变量包装成包装类对象
		Integer itObj = new Integer(it);
		//把一个字符串转换成Float对象
		Float fl = new Float("1.23");
		//把一个字符串转换成Boolean对象
		Boolean bObj = new Boolean("trUe");
		System.out.print("---------" + bObj);
		//下面会引发java.lang.NumberFormatException异常
		//Long lObj = new Long("ddd");
		//取出Boolean对象里的boolean变量
		boolean bb = bObj.booleanValue();
		//取出Integer对象里的int变量
		int i = itObj.intValue();
		//取出Float对象里的float变量
		float f = fl.floatValue();
	}
}

在上面的实例代码中,演示了如何扣基本类型变量转换成对应包装类对象,以及如何把一个字符串包装成包装类对象的过程。
在上面程序中分别可以把把e,5等基本类型变量包装成包装类对象。
并且通过向包装类构造器里传人一个字符串参数,分别利用“4.56”“false”等字符串来创建包装类对象。
其中一行代码试图把字符串“ddd”换成Long 类型变量,所以编译时没有问题,但是在运行时会引发 java.lang.NumberFormat
Exception 异常.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值