目录
一. 前言
二. Number 类及其子类
三. Java Math 类
四. Number & Math 类方法
五. 课后习题
Number 是一个抽象类,也是一个超类(即父类)。Number 类属于 java.lang 包,所有的包装类(如 Double、Float、Byte、Short、Integer 以及 Long)都是抽象类 Number 的子类。
一般情况下我们会使用数据的基本数据类型:byte、int、short、long、double、float、char、boolean。
对应的包装类型也有八种: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 |
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相应地,编译器也可以把一个对象拆箱为内置类型。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 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
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 类的方法:
序号 | 方法 | 描述 | |||||||
---|---|---|---|---|---|---|---|---|---|
1 | xxxValue() | 将number对象转换为xxx数据类型的值并返回。 | |||||||
2 | compareTo() | 将number对象与参数比较。 | |||||||
3 | equals() | 判断number对象是否与参数相等。 | |||||||
4 | valueOf() | 返回一个Integer对象指定的内置数据类型 | |||||||
5 | toString() | 以字符串形式返回值。 | |||||||
6 | parseInt() | 将字符串解析为int类型。 | |||||||
7 | abs() | 返回参数的绝对值。 | |||||||
8 | ceil() | 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 | |||||||
9 | floor() | 返回小于等于(<=)给定参数的最大整数 。 | |||||||
10 | rint() | 返回与参数最接近的整数。返回类型为double。 | |||||||
11 | round() | 返回一个最接近的int、long型值。 | |||||||
12 | min() | 返回两个参数中的最小值。 | |||||||
13 | max() | 返回两个参数中的最大值。 | |||||||
14 | exp() | 返回自然数底数e的参数次方。 | |||||||
15 | log() | 返回参数的自然数底数的对数值。 | |||||||
16 | pow() | 返回第一个参数的第二个参数次方。 | |||||||
17 | sqrt() | 求参数的算术平方根。 | |||||||
18 | sin() | 求指定double类型参数的正弦值。 | |||||||
19 | cos() | 求指定double类型参数的余弦值。 | |||||||
20 | tan() | 求指定double类型参数的正切值。 | |||||||
21 | asin() | 求指定double类型参数的反正弦值。 | |||||||
22 | acos() | 求指定double类型参数的反余弦值。 | |||||||
23 | atan() | 求指定double类型参数的反正切值。 | |||||||
24 | atan2() | 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。 | |||||||
25 | toDegrees() | 将参数转化为角度。 | |||||||
26 | toRadians() | 将角度转换为弧度。 | |||||||
27 | random() | 返回一个随机数。 |
1. 编写程序,从键盘输入一个 double 型的华氏温度,然后将其转换为摄氏温度输出。转换公式为摄氏度 = (5/9) * (华氏度-32)。
2. 设今日外汇牌价为1美元兑换6.89元人民币。编写程序,计算10000元人民币能兑换多少美元,要求从键盘输入汇率。
3. 编写程序,从键盘输入你的体重(单位:kg)和身高(单位:m),计算你的体重指数(Body Mass Index,BMI)。改制是衡量一个人是否超重的指标。假设w表示体重,h表示身高,则BMI的计算公式为:BMI=w/(h*h)。
4. 编写程序,要求用户从键盘输入一个double型数,输出为该数的整数部分和小数部分。
5. 录入三个学生成绩,并计算平均分打印。