引言

一般情况下我们会使用数据的基本数据类型:byte、int、short、long、double、float、boolean、char;

对应的包装类型也有八种:Byte、Integer、Short、Long、Double、Float、Character、Boolean;

包装类型都是用 final 声明了,不可以被继承重写;在实际情况中编译器会自动的将基本数据类型装箱成对象类型,或者将对象类型拆箱成基本数据类型;如下:

public static void main(String[] args) {
	int num1 = 1;
	//将基本数据类型装箱成对象包装类型
	Integer num2 = num1;
	Integer num3 = 3;
	//将对象数据类拆箱
	int num4 = num3;
}

Number 类是 java.lang 包下的一个抽象类,提供了将包装类型拆箱成基本类型的方法,所有基本类型(数据类型)的包装类型都继承了该抽象类,并且是 final 声明不可继承改变;

package java.lang;

public abstract class Number implements java.io.Serializable {

    public abstract int intValue();

    public abstract long longValue();

    public abstract float floatValue();

    public abstract double doubleValue();

    public byte byteValue() {
        return (byte)intValue();
    }

    public short shortValue() {
        return (short)intValue();
    }

    private static final long serialVersionUID = -8742448824652078965L;
}

包装类

基本数据类型

Boolean

boolean

Byte

byte

Short

short

Integer

int

Long

long

Character

char

Float

float

Double

double

1688897489.jpg

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

下面是一个装箱与拆箱的例子:

public class Test{

   public static void main(String args[]){
      Integer x = 5; // boxes int to an Integer object
      x =  x + 10;   // unboxes the Integer to a int
      System.out.println(x); 
   }
}

以上实例编译运行结果如下:

15

当 x 被赋为整型值时,由于 x 是一个对象,所以编译器要对 x 进行装箱。然后,为了使 x 能进行加运算,所以要对 x 进行拆箱。

Java Math 类

Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

实例

public class Test {  
    public static void main (String []args)  
    {  
        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));  
        System.out.println("0度的余弦值:" + Math.cos(0));  
        System.out.println("60度的正切值:" + Math.tan(Math.PI/3));  
        System.out.println("1的反正切值: " + Math.atan(1));  
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));  
        System.out.println(Math.PI);  
    }  
}

以上实例编译运行结果如下:

90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483
π/2的角度值:90.0
3.141592653589793

Number & Math 类方法

下面的表中列出的是常用的 Number 类和 Math 类的方法:

Number

方法名

描述

byteValue()

将 Number 对象转换为 byte 类型的值。

shortValue()

将 Number 对象转换为 short 类型的值。

intValue()

将 Number 对象转换为 int 类型的值。

longValue()

将 Number 对象转换为 long 类型的值。

floatValue()

将 Number 对象转换为 float 类型的值。

doubleValue()

将 Number 对象转换为 double 类型的值。

toString()

将 Number 对象转换为字符串表示形式。

Math

方法名

描述

abs(x)

返回参数 x 的绝对值。

ceil(x)

返回大于或等于参数 x 的最小整数。

floor(x)

返回小于或等于参数 x 的最大整数。

round(x)

返回四舍五入后最接近参数 x 的整数。

max(x, y)

返回两个参数中的最大值。

min(x, y)

返回两个参数中的最小值。

sqrt(x)

返回参数 x 的平方根。

pow(x, y)

返回参数 x 的 y 次幂。

random()

返回一个介于 0.0(包含)和 1.0(不包含)之间的随机数。