前言
为了解决对数字、日期和系统设置进行处理的困难,如:一些数字&数学问题、随机数问题、日期问题和系统设置问题等。Java为我们提供了多个处理相关问题的类,比如Number类、Math类、Random类、BigInteger类、BigDecimal类、Date类、System类等。今天我们就来学习Number& Marh两个类。
数据类型
Java里的数据类型可以分为引用类型和基本类型,其中基本类型有3大类8个子类
Number类
Java为每一个内置的基本数据类型提供了对应的包装类。其中,6个数值型对应的包装类(Byte、Short、Integer、Long、Float、Double),都是抽象类Number的子类。 在基本类型和包装类型之间,会涉及到装箱和拆箱的操作
包装类 | 基本数据类型 |
Boolean | boolean |
Byte | byte |
Short | short |
Integer | int |
Long | long |
Character | char |
Float | float |
Double | double |
介绍
Number 是一个抽象类,也是一个超类(即父类)。Number 类属于 java.lang 包,所有的包装类(如 Double、Float、Byte、Short、Integer 以及 Long)都是抽象类 Number 的子类。
Number 类定义了一些抽象方法,以各种不同数字格式返回对象的值。如 xxxValue() 方法,它将 Number 对象转换为 xxx 数据类型的值并返回
无论是整数型还是浮点型,它们都是数值型,当我们定义数值型变量时,都是直接操作的数字。
方法 | 说明 |
byte byteValue(); | 返回 byte 类型的值 |
double doubleValue(); | 返回 double 类型的值 |
float floatValue(); | 返回 float 类型的值 |
int intValue(); | 返回 int 类型的值 |
long longValue(); | 返回 long 类型的值 |
short shortValue(); | 返回 short 类型的值 |
抽象类不能直接实例化,而是必须实例化其具体的子类
数据格式化
Java自带了一个DecimalFormat类,可以对数字进行格式化处理。
DecimalFormat是NumberFormat的子类,用于格式化十进制数字,该类包含一个模式和一组符号
实例
public class Test01 { public static void main(String[] args) { Byte n = 5; Integer n1 = 5; Short n2 = 5; Long n3 = 5L; Float n4 = 0.02f; Double n5 = 0.02; Character n6 = 'A'; Boolean n7 = true; System.out.println(n); System.out.println(n1); System.out.println(n2); System.out.println(n3); System.out.println(n4); System.out.println(n5); System.out.println(n6); System.out.println(n7); } }
输出结构
5
5
5
5
0.02
0.02
A
true
Math类
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
介绍
为了方便实现这些数学计算功能,Java自身就给我们提供了一个Math数学类,用于进行各种常见的数学操作
Math中提供了用于执行基本数学运算的多个属性和方法,如初等指数、对数、平方根和三角函数等。Math 类位于 java.lang包中,它的构造方法是 private私有的,因此我们无法创建 Math类对象。
为了方便调用这些方法和属性,Math类中的很多方法和属性都被定义为static形式
静态常量
Math类给我们提供了两个比较常用的静态常量,分别是 E 和 PI,它们的值分别等于 e(自然对数) 和 π(圆周率)
public static void main(String[] args) { //静态常量E和PI System.out.println("E常量的值:"+Math.E); System.out.println("PI常量的值"+Math.PI); }
实例
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