Java基础篇--Number(包装) Math (数学运算)类

news2024/11/26 21:51:09

目录

Number类

扩展小知识

Math类

实例 


Number类

Java中的Number类是一个抽象类,它是所有包装类(如Integer、Double、Long等)的父类。这个类提供了将基本数据类型(如int、double、long等)封装为对象,并在对象中进行数字值的操作。

包装类基本数据类型
Booleanboolean
Bytebyte
Shortshort
Integerint
Longlong
Characterchar
Floatfloat
Doubledouble

Number 类的一些常用方法包括:

  • xxxValue():将 Number 对象转换为对应数据类型的值。(xxx为基本数据类型)
  • compareTo():将 Number 对象与参数进行比较。
  • equals():判断 Number 对象是否与参数相等。
  • valueOf():返回指定内置数据类型的 Number 对象。
  • toString():以字符串形式返回值。
  • parseInt():将字符串解析为 int 类型。

这些方法允许你在不同的数值类型之间进行转换,并且每个子类需要实现这些方法以提供适当的转换行为。

扩展小知识

在Java中,将基本数据类型转换为其对应的包装类对象的过程称为装箱(Boxing),而将包装类对象转换为基本数据类型的过程称为拆箱(Unboxing)。

  • 编译器会自动处理装箱和拆箱的过程,在需要时将基本类型和包装类之间进行转换。这样就可以像操作对象一样使用基本数据类型,同时还可以享受到包装类提供的额外功能,提高代码的简洁性和可读性,使操作更加便捷。
  • 手动装箱和拆箱需要显式地调用相应的方法进行转换,相比于自动装箱和拆箱,代码更加繁琐。但手动装箱和拆箱提供了更精确的控制,适用于一些特殊情况下的操作。
// 自动装箱和拆箱示例
int num = 10;
Integer wrappedNum = num; // 自动装箱,将int类型的num装箱为Integer对象

double value = 3.14;
Double wrappedValue = value; // 自动装箱,将double类型的value装箱为Double对象

boolean flag = true;
Boolean wrappedFlag = flag; // 自动装箱,将boolean类型的flag装箱为Boolean对象

System.out.println(wrappedNum);    // 输出:10
System.out.println(wrappedValue);  // 输出:3.14
System.out.println(wrappedFlag);   // 输出:true

int unwrappedNum = wrappedNum; // 自动拆箱,将Integer对象wrappedNum拆箱为int类型的unwrappedNum
double unwrappedValue = wrappedValue; // 自动拆箱,将Double对象wrappedValue拆箱为double类型的unwrappedValue
boolean unwrappedFlag = wrappedFlag; // 自动拆箱,将Boolean对象wrappedFlag拆箱为boolean类型的unwrappedFlag

System.out.println(unwrappedNum);    // 输出:10
System.out.println(unwrappedValue);  // 输出:3.14
System.out.println(unwrappedFlag);   // 输出:true


-----------------------------------------------------------------------------------------


// 手动装箱和拆箱示例
int num = 10;
Integer wrappedNum = Integer.valueOf(num); // 手动装箱,使用valueOf方法将int类型的num装箱为Integer对象

double value = 3.14;
Double wrappedValue = Double.valueOf(value); // 手动装箱,使用valueOf方法将double类型的value装箱为Double对象

boolean flag = true;
Boolean wrappedFlag = Boolean.valueOf(flag); // 手动装箱,使用valueOf方法将boolean类型的flag装箱为Boolean对象

System.out.println(wrappedNum);    // 输出:10
System.out.println(wrappedValue);  // 输出:3.14
System.out.println(wrappedFlag);   // 输出:true

int unwrappedNum = wrappedNum.intValue(); // 手动拆箱,使用intValue方法将Integer对象wrappedNum拆箱为int类型的unwrappedNum
double unwrappedValue = wrappedValue.doubleValue(); // 手动拆箱,使用doubleValue方法将Double对象wrappedValue拆箱为double类型的unwrappedValue
boolean unwrappedFlag = wrappedFlag.booleanValue(); // 手动拆箱,使用booleanValue方法将Boolean对象wrappedFlag拆箱为boolean类型的unwrappedFlag

System.out.println(unwrappedNum);    // 输出:10
System.out.println(unwrappedValue);  // 输出:3.14
System.out.println(unwrappedFlag);   // 输出:true

Number类属于java.lang包,是一个抽象类,定义了所有数值包装类的共同行为。它作为其他具体数值包装类(如IntegerDoubleLong等)的父类,提供了一些通用的方法和属性。通过使用Number及其子类,我们可以在需要处理数值的场景中更方便地进行装箱和拆箱操作。

Math类

Math类是一个工具类,提供了执行常见数学运算的静态方法。它包含了许多用于执行基本数学运算的方法,例如求绝对值、取最大/最小值、四舍五入、三角函数、指数和对数运算等。

以下是一些 Math 类的常用方法:

  1. abs(double a):返回参数的绝对值。
  2. ceil(double a):返回大于等于给定参数的最小整数,类型为双精度浮点型。
  3. floor(double a):返回小于等于给定参数的最大整数。
  4. rint(double a):返回与参数最接近的整数,返回类型为 double。
  5. round(float a):四舍五入,将原来的数字加上 0.5 后再向下取整,返回类型为 int。
  6. max(double a, double b):返回两个参数中的最大值。
  7. min(double a, double b):返回两个参数中的最小值。
  8. exp(double a):返回自然数底数e的参数次方。
  9. log(double a):返回参数的自然对数值。
  10. pow(double a, double b):返回第一个参数的第二个参数次方。
  11. sqrt(double a):求参数的算术平方根。
  12. sin(double a):求指定double类型参数的正弦值。
  13. cos(double a):求指定double类型参数的余弦值。
  14. tan(double a):求指定double类型参数的正切值。
  15. asin(double a):求指定double类型参数的反正弦值。
  16. acos(double a):求指定double类型参数的反余弦值。
  17. atan(double a):求指定double类型参数的反正切值。
  18. random():返回一个随机数,范围在0.0到1.0之间。

通过使用Math类的这些方法,可以执行基本的数学运算,例如绝对值计算、取最大/最小值、四舍五入、三角函数计算以及指数和对数运算等。

这些只是Number类和Math类提供的一些常用方法示例,实际上还有其他更多的方法可供使用。它们在Java编程中非常有用,并且可以轻松处理数字和执行数学计算。

实例 

public class MyClass {
    public static void main(String[] args) {
        // 使用 Number 类的方法示例
        Number number = 10.5;

        // 转换为 int 类型
        int intValue = number.intValue();
        System.out.println("intValue: " + intValue);

        // 比较两个数是否相等
        boolean isEqual = number.equals(10.5);
        System.out.println("isEqual: " + isEqual);

        // 转换为字符串
        String stringValue = number.toString();
        System.out.println("stringValue: " + stringValue);


        // 使用 Math 类的方法示例
        double x = 2.3;
        double y = 4.7;

        // 返回较大的数
        double max = Math.max(x, y);
        System.out.println("max: " + max);

        // 返回较小的数
        double min = Math.min(x, y);
        System.out.println("min: " + min);

        // 计算绝对值
        double absValue = Math.abs(-10.8);
        System.out.println("absValue: " + absValue);

        // 对数运算
        double logValue = Math.log(2.0);
        System.out.println("logValue: " + logValue);

        // 平方根
        double sqrtValue = Math.sqrt(16.0);
        System.out.println("sqrtValue: " + sqrtValue);

        // 随机数生成
        double randomValue = Math.random();
        System.out.println("randomValue: " + randomValue);
    }
}

编译以上程序,输出结果为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/881115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序-uni-app:hbuildx uni-app 安装 uni-icons 及使用

一、官方文档找到uni-icons uni-app官网 二、下载插件 三、点击“打开HBuildX” 四、选择要安装的项目 五、勾选要安装的插件 六、安装后&#xff0c;项目插件目录 根目录uni_modules目录下增加uni-icons、uni-scss 七、引入组件&#xff0c;使用组件 <uni-icons type&qu…

Python | Package | Python的三种包安装方式(pip/whl/tar.gz)

文章目录 PIP 安装与卸载Source 安装与卸载Whell 安装与卸载 PIP 安装与卸载 pip install xxx pip install xxxversion_numberpip install captcha pip install captcha0.4# XXX/anaconda3/envs/py373/lib/python3.7/site-packages pip uninstall captchaSource 安装与卸载 p…

如何使用CSS实现一个纯CSS的滚动条样式?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现自定义滚动条样式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣…

win11右下角图标(网络,音量,电量)点击无反应问题,两分钟解决!

win11系统用的好好的&#xff0c;突然有一天任务栏右下角的常用三件套&#xff08;网络&#xff0c;音量&#xff0c;电量&#xff09;左键单击没反应&#xff0c;无法方便的调节音量和连接wifi&#xff0c;如下图所示&#xff0c;但是右键好用&#xff0c;不过不方便。网上查了…

恒运资本:ipo和上市有什么区别?

IPO和上市都是公司融资和发展的途径&#xff0c;可是它们之间存在着差异。在本篇文章中&#xff0c;我们将从多个角度分析IPO和上市的差异。 从概念上来说&#xff0c;IPO是指公司首次揭露发行股票&#xff0c;一般会在股票市场上引起很大的轰动。而上市则是指公司的股票已经被…

【双指针_有效三角形的个数_C++】

题目解析 有效三角形的个数 判断三角形&#xff1a;任意两边之和大于第三边 需要重复计算&#xff1a; 知识点 1、需要判断三次&#xff1a; 2、只需要判断一次 已经知道这三个数的大小&#xff08;先进行排序&#xff09; 只需要判断 较小的两个数之和 是否 大于最大的…

激活函数总结(九):Softmax系列激活函数补充(Softmin、Softmax2d、Logsoftmax)

激活函数总结&#xff08;九&#xff09;&#xff1a;Softmax系列激活函数补充 1 引言2 激活函数2.1 Softmin激活函数2.2 Softmax2d激活函数2.3 Logsoftmax激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、S…

Python中执行调用JS的多种方法汇总

1. 写在前面 做爬虫的人大家都知道&#xff0c;现在国内Web或App普遍防护都做的很好&#xff0c;且越有价值的网站这方面越强 再小再弱的网站现在或多或少都要整点反爬 JS在反爬中应用非常广泛&#xff0c;现在做爬虫工程师基本都要懂JS&#xff0c;因为各种JS加密需要逆向&…

聊聊JDK1.0到JDK20的那些事儿 | 京东云技术团队

1.前言 最近小组在开展读书角活动&#xff0c;我们小组选的是《深入理解JVM虚拟机》&#xff0c;相信这本书对于各位程序猿们都不陌生&#xff0c;我也是之前在学校准备面试期间大致读过一遍&#xff0c;emm时隔多日&#xff0c;对里面的知识也就模糊了。这次开始的时候从前面…

zookeeper未授权访问漏洞处理

方法一&#xff1a;设置指定ip访问 a、登陆zookeeper&#xff1a;./zkCli.sh -server :(ps&#xff1a;需cd到zookeeper的bin目录下执行) b、查看当前权限&#xff1a;getAcl /&#xff08;ps:默认为’world,anyone&#xff09; c、添加可访问IP&#xff1a;setAcl / ip:192.16…

HCIP-OpenStack搭建

1、OpenStack概述 OpenStack是一种云操作系统&#xff0c;OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池&#xff0c;所有资源都通过API或Web界面进行管理。 为什么称OpenStack是云操作系统&#xff1f; 云一般指云计算&…

中间件(二)dubbo负载均衡介绍

一、负载均衡概述 支持轮询、随机、一致性hash和最小活跃数等。 1、轮询 ① sequences&#xff1a;内部的序列计数器 ② 服务器接口方法权重一样&#xff1a;&#xff08;sequences1&#xff09;%服务器的数量&#xff08;决定调用&#xff09;哪个服务器的服务。 ③ 服务器…

C 内存分配器 mimalloc

有论文 … … https://www.microsoft.com/en-us/research/publication/mimalloc-free-list-sharding-in-action/ 可以减少内存碎片,微软研究院2019 年开源出的内存分配器 代码,适配linux

YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2

AI周公解梦-在线AI解梦大师

AI周公解梦-在线AI解梦大师 废话不多啥&#xff0c;直接上效果图 展示链接https://zuowen.toolxq.com/front/ai/jiemeng/jiemeng 梦是人类心灵深处的奇妙现象&#xff0c;它们在科学、文化和心理层面都具有重要的意义和启发。以下是关于梦对个人的意义和启发的一些观点&#x…

Markdown使用笔记

Markdown使用笔记 一、段落与强调 important denotes the impossible thing to do Because your ugly appearance, you cannot have a happy ending. 使用*括起来的为斜体 使用**括起来的是粗体 使用~~括起来的是删除线 在句子后面添加<br>即可换行 二、标题 在…

HD Supply EDI 项目案例

HD Supply Inc.是一家总部位于美国的工业分销公司。该公司成立于1983年&#xff0c;总部位于佐治亚州亚特兰大市。它主要提供广泛的工业产品、设备和解决方案&#xff0c;涵盖建筑、能源、制造、设施维护等多个行业。其产品和服务包括管道、阀门、暖通空调设备、电气设备、工具…

java对象和json类型转换

fastjson参考 参考&#xff1a;http://doc.yaojieyun.com/www.runoob.com/w3cnote/java-json-instro.html 参考&#xff1a; http://doc.yaojieyun.com/www.runoob.com/w3cnote/fastjson-intro.html 序列化&#xff1a;JSON.toJSONString(person)将Java 对象转换为 JSON 字符串…

DNS服务器的搭建之初体验

第一步关闭防火墙 安装bind 启动服务&#xff0c;设置开机自动启动 安装vim 编辑修改/etc/resolv.conf文件&#xff0c;既修改本机的dns解析文件&#xff0c;增加我们自己的dns服务器地址 这里遇到问题了 这里我们需要重启启动网络服务 重启服务还是不行&#xff0c;那么重…

轻薄的ESL电子标签有哪些特性?

在智慧物联逐渐走进千万家的当下&#xff0c;技术变革更加日新月异。ESL电子标签作为科技物联的重要组成部分&#xff0c;是推动千行百业数字化转型的重要技术&#xff0c;促进物联网产业的蓬勃发展。在智慧零售、智慧办公、智慧仓储等领域&#xff0c;ESL电子标签在未来是不可…