【JAVA】与数字相关的类,Number & Math 类

简介: 【JAVA】与数字相关的类,Number & Math 类

前言

为了解决对数字、日期和系统设置进行处理的困难,如:一些数字&数学问题、随机数问题、日期问题和系统设置问题等。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


目录
相关文章
|
2天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
16 0
|
4天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
4天前
|
Java Spring 容器
Java获取接口的所有实现类方法
这篇文章介绍了在Java中获取接口所有实现类的方法,包括使用JDK的ServiceLoader(SPI机制)和Spring Boot中的@Autowired自动注入及ApplicationContextAware接口两种方式。
23 1
|
8天前
|
存储 Java 索引
如何在 Java 中创建类对象的 Arraylist?
【8月更文挑战第23天】
17 1
|
10天前
|
存储 SQL Java
Java 系类之 Java StringBuffer类详解
这篇文章详细介绍了Java中的StringBuffer类的使用,包括其构造方法、追加字符串、替换字符、反转字符串和删除字符串的方法,并提供了相应的示例代码。
|
10天前
|
Java
Java系类 之 生成随机数(random()和Random类)
这篇文章介绍了Java中生成随机数的两种方法:使用`Math.random()`方法和`Random`类的实例方法,并提供了示例代码展示如何使用这些方法生成特定范围或特定条件下的随机数。
|
10天前
|
Java 索引
Java系类之 Java字符串查找
这篇文章介绍了Java中`indexOf()`方法的两种重载形式,用于返回子字符串在指定字符串中首次出现的索引位置,包括基本语法和示例代码演示其用法。
Java系类之 Java字符串查找
|
10天前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
|
3天前
|
缓存 安全 Java
Java String类
Java String类
8 0
|
4天前
|
安全 Java API
Java多线程编程:使用Atomic类实现原子操作
在Java多线程环境中,共享资源的并发访问可能导致数据不一致。传统的同步机制如`synchronized`关键字或显式锁虽能保障数据一致性,但在高并发场景下可能导致线程阻塞和性能下降。为此,Java提供了`java.util.concurrent.atomic`包下的原子类,利用底层硬件的原子操作确保变量更新的原子性,实现无锁线程安全。
8 0
下一篇
云函数