JAVA面向对象之——包装类;入门讲解进来就能看懂

写在前面的话

在Java中有一个设计的原则“一切皆对象”,那么这样一来Java中的一些基本的数据类型,就完全不符合于这种设计思想,因为Java中的八种基本数据类型并不是引用数据类型,所以Java中为了解决这样的问题,引入了八种基本数据类型的包装类。



为八种基本数据类型提供包装类的作用

包装类的出现,能够使得基本数据类型和引用数据类型之间可以相互转换;

序号 基本数据类型 包装类
1 int Integer
2 char Character
3 float Float
4 double Double
5 boolean Boolean
6 byte Byte
7 short Short
8 long Long

以上的八种包装类也是分为两种大的类型的:

· Number:Integer、Short、Long、Double、Float、Byte都是Number的直接子类,表示是一个数字。

· Object:Character、Boolean,Number都是Object的直接子类。

我们知道,基本数据类型存储在栈中,而类存储在堆中。当基本数据类型有了自己的包装类后,那么赋值就可以这么写:

Integer i = new Integer(10);    
// 等价于 int i = 10;

这样对象名i就保存着地址存储在栈中,Interger类则存储在堆中。

变为包装类的好处
1,我们知道,对象可以作为接口传给方法;当变为包装类后,对象i也就可以传给一个方法:

Integer i = new Integer(10);
public void xxx(Object o){ … }
2,Integer还提供直接把字符串转换为数字的功能:

int a = Integer.parseInt(“100”);

装箱和拆箱操作
装箱和拆箱操作是我们使用包装类时常用的功能。

装箱:指如何把一个基本数据类型的值变成包装类。

拆箱:指从包装类中把值变为基本数据类型。

因为所有的数值型的包装类都是Number的子类,Number的类中定义了如下的操作方法,以下的全部方法都是进行拆箱的操作。

序号 方法 描述
1 public byte byteValue() 用于Byte->byte
2 public abstract double doubleValue() 用于Double->double
3 public abstract float floatValue() 用于Float->float
4 public abstract int intValue() 用于Integer->int
5 public abstract long longValue() 用于Long->long
6 public short shortValue() 用于Short->short
// 手动装箱
Integer i = new integer(200);
// 手动拆箱
int a = i.intValue();

// 自动装箱
Integer j = 200;
// 自动拆箱
int b = j;

JDK1.5版本之后,手动变成了自动。


字符串转换

使用包装类还有一个很优秀的地方在于:可以将一个字符串变为指定的基本数据类型,此点一般在接收输入数据上使用较多。

在Integer类中提供了以下的操作方法:

public static int parseInt(String s) ;

将String变为int型数据

在Float类中提供了以下的操作方法:

public static float parseFloat(String s) ;

将String变为Float

在Boolean 类中提供了以下操作方法:

public static boolean parseBoolean(String s) ;

将String变为boolean


方法的可变参数

一个方法中定义完了参数,则在调用的时候必须传入与其一一对应的参数,但是在JDK 1.5之后提供了新的功能,可以根据需要自动传入任意个数的参数。

语法:

返回值类型 方法名称(数据类型…参数名称) {

    //参数在方法内部,以数组的形式来接收

}

// int...nums:表示可变参数,可以传入0-n个数字
// 方法内部可变参数以数组作为载体体现
public static int sum(int... nums){
    int n = 0;
    for(int i=0; i<nums.length;i++){
        n+=nums[i];
    }
    return n;
}

System.out.println(sum(1,2,3,4));

注意:可变参数只能出现在参数列表的最后。

猜你喜欢

转载自blog.csdn.net/m0_58702068/article/details/120505376