Java 基础进阶篇(九)—— 常用 API

news2024/10/1 21:36:38

文章目录

  • 一、Object 类
  • 二、Objects 工具类
  • 三、Math 类
  • 四、System 类
  • 五、BigDecimal 类


一、Object 类

一个类要么默认继承了 Object 类,要么间接继承了 Object 类,Object 类是 java 中的祖宗类。Object 类的方法是一切子类都可以直接使用的。

在这里插入图片描述
因此,子类可以重写 Object 类的 toString() 与 equals(obj) 的方法。
子类重写 toString() 方法,是以便返回子类对象的内容。
子类重写 equals() 方法,是以便比较对象的内容是否相同

Idea 快捷键 Alt + Enter 键生成官方提供的方法,方法如下:

public class Student {
    private String name;
    private char sex;
    private int age;
    
	// set 和 get 方法省略
	
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return sex == student.sex && age == student.age && Objects.equals(name, student.name);
    }
}

官方提供的 equals 方法:首先判断是否为同一个对象,然后再判断对象是否为空或是否为学生类,最后判断学生类中的成员变量的值。
但也存在问题,如果一个空的学生类对象调用equals方法,则会报错,因此建议用 Objects 类进行比较。


二、Objects 工具类

Objects 是一个工具类,其与 Object 是继承关系,常用 API 如下:
在这里插入图片描述

equals() 方法源码:Objects多了一层判断 a 对象是否为空,因此会比较安全

在这里插入图片描述

注: 如果 a 对象不为空,a.equals(b)方法还是会调用 Object 的 equals(obj) 方法,所以不论使用哪种比较方法,都需要重写 equals(obj) 方法,以防比较地址。

举例:假设 Student 类重写了 equals 方法。

public class Test {
    public static void main(String[] args) {
        Student s1 = null;
        Student s2 = new Student("张三", '男', 19);

        System.out.println(Objects.equals(s1, s2)); // false
        System.out.println(s1.equals(s2)); // 报错,空指针异常
    }
}

三、Math 类

Math 类包含执行基本数字运算的方法,Math类没有提供公开的构造器。
看类的成员是否都是静态的,如果是,通过类名就可以直接调用。

Math 类常用方法如下:
在这里插入图片描述
n - m 之间的随机数:(int)(Math.random() * (m-n+1)) + n
如:3 - 9 之间的随机数:(int)(Math.random()*7) + 3; // 原理:(0 - 6) + 3


四、System 类

System 的功能是通用的,都是直接用类名调用即可。由于私有构造器,所以System不能被实例化。

在这里插入图片描述

时间毫秒值起始时间:1970 年 1 月 1 日 00:00:00

currentTimeMills() 常用语进行时间的计算。


五、BigDecimal 类

用于解决浮点型运算精度失真的问题。

使用: 创建对象 BigDecimal 封装浮点型数据,但最好的方式是调用 valueOf 方法。

说明: BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
如:BigDecimalg = new BigDecimal(0.1F),实际的存储值为:0.100000001490116119384765625。

BigDecimal 类常用方法如下:
在这里插入图片描述

举例:

public class Demo {
    public static void main(String[] args) {
        // 注意事项:BigDecimal是一定要精度运算的
        BigDecimal a11 = BigDecimal.valueOf(10.0);
        BigDecimal b11 = BigDecimal.valueOf(3.0);
        // System.out.println(a11.divide(b11)); // 报错
        /**
         参数一:除数 参数二:保留小数位数  参数三:舍入模式
         */
        BigDecimal c11 = a11.divide(b11, 2, RoundingMode.HALF_UP); // 3.33 四舍五入
        BigDecimal c12 = a11.divide(b11, 2, RoundingMode.CEILING); // 3.34 向上取整

        System.out.println(c11);
        System.out.println(c12);

        // BigDecimal 是手段,最后还需转换成double
        double dd = c11.doubleValue();
        System.out.println(dd); // 3.33
    }
}

文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

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

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

相关文章

Obsidian +Obsidian Git插件 + Gitee 自动同步笔记

在Obsidian 关闭安全模式 然后再插件市场里面搜索并下载Obsidian Git 这个插件 注意:这里需要科学上网才能搜索并下载,我看很多博主都没说这件事情 然后再你的Gitee中,新建一个仓库 把这两个勾选上,然后随便选个语言&#xff0…

【JavaEE】应用层UDP协议

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 本篇文章将为大家介绍应用层中UDP协议~~ 在应用层这里,虽然存在一些现有的协议(HTTP),但是也有很多情况,需要程序猿自定制协议&a…

Windeployqt 打包,缺少DLL 的原因分析,解决方法

很多同学使用工具windeployqt进行打包发布后,运行exe文件时,还是会出现下图所示的系统错误提示,这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显示运行正常啊,难道是QT自家的windeployqt这个工具有bug&…

2024年浙大MBA创客班项目提面如何申请?

2024年浙大MBA创客班提面如何申请?在目前的提前批面试申请过程中不少考生都不太清楚,专注浙大的杭州达立易考教育本期将项目的提前批面试和常规批复试申请基本流程和关键信息整理出来,帮助考生更精准的进行面试准备。 一、浙大MBA创客班项目…

基于比较排序算法总结

1.数据无法全部放入内存 2.数据以数据流形式

操作系统2(多处理器编程)

一、并发 1.操作系统是最早的并发程序之一 2.并发的基本单位:线程 共享内存的多个执行流 执行流拥有独立的堆栈/寄存器共享全部的内存(指针可以互相引用) 3.实现原子性 lock(&lk)unlock(&lk) 实现临界区(critical section)之间…

keepalived脑裂现象

Keepealived最常见的问题是会出现脑裂现象: Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占mas…

Snmputil和Snmputilg工具的下载和基本使用 SNMP协议 Windows系统SNMP服务的安装教程

⬜⬜⬜ ---🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪---⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→…

现代CMake高级教程 - 第 7 章:变量与缓存

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 7 章:变量与缓存 重复执行 cmake -B build 会有什么区别? ❯ cmake -B build -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detec…

C++:分治算法之输油管道问题

目录 描述 输入 输出 输入样例 输出样例 分析 代码 运行结果 描述 ¢ 某石油公司计划建造一条 由东向西 的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。 ¢ 如果给定…

如何区分GPT3.5和4?

切换模型 前两天申请的GPT 4的API调用权限终于申请下来了。 这两天我也是抓紧开发,让自己搭建的国内网站(aichatroom.cn)可以快速支持上使用GPT 4。 GPT 3.5和GPT4的区别 GPT-3.5 和 GPT-4 分别代表了 OpenAI 发布的两个不同版本的自然语言处…

现代CMake高级教程 - 第 4 章:对象的属性

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 4 章:对象的属性 除了 POSITION_INDEPENDENT_CODE 还有哪些这样的属性? add_executable(main main.cpp)set_property(TARGET main PROPERTY CXX_STANDARD 17) # 采用 C17 标准进行编译&am…

STC15W104 8脚单片机串口下载程序

单片机串口下载是一种常见的单片机程序下载方式,它通过串口线连接单片机的串口引脚和电脑的串口接口实现。下面是单片机串口下载的基本原理和操作方法: 原理 确定下载模式:大多数单片机芯片都支持串口下载模式,需要在程序中设置…

常识性概念图谱建设与应用

目录 一、知识图谱背景介绍 (一)基本背景 (二)与NLP的关系 (三)常识性概念图谱的引入对比 二、常识性概念图谱介绍 (一)常识性概念图谱关系图示例 (二&#xff09…

深度学习-tensorflow 使用keras进行深度神经网络训练

概要 深度学习网络的训练可能会很慢、也可能无法收敛,本文介绍使用keras进行深度神经网络训练的加速技巧,包括解决梯度消失和爆炸问题的策略(参数初始化策略、激活函数策略、批量归一化、梯度裁剪)、重用预训练层方法、更快的优化…

linux进程描述指令:ps与top

这里写自定义目录标题 一 ps指令1 ps -aux2. ps -a3. ps -u4.ps -x 二 top指令1 top2 top -d 时间3. top -i4 top -p ID 一 ps指令 1 ps -aux 显示系统中的所有进程 PID就是进程的唯一编号,操作系统书里有一个PCD的概念,就是一个标识性的控制单元 [ro…

学系统集成项目管理工程师(中项)系列16b_风险管理(下)

1. 规划风险应对 1.1. 针对项目目标,制订提高机会、降低威胁的方案和措施的过程 1.2. 制订风险应对措施 1.3. 制订风险应对计划 1.4. 次生风险是实施风险应对措施的直接结果 1.5. 应对措施必须与风险的重要性相匹配,能经济有效地应对挑战 1.5.1. 【…

项目管理-计算专题(三点估算、PERT估算)

基本概念 通过考虑估算中的不确定性和风险,可以提高活动持续时间估算的准确性。这个概念源自计划评审技术(PERT)。PERT使用三种估算值来界定活动持续时间的近似区间: 最可能时间(tM):基于最可能获得的资源、最可能取得的资源生产率、对资源可用时间的现…

C语言CRC-16 MODBUS格式校验函数

C语言CRC-16 MODBUS格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同应用规范通过对…

Simulink 自动代码生成电机控制:弱磁控制从仿真到硬件开发板验证实验

目录 前言 仿真 生成代码在硬件上运行 总结 前言 测试了一个新的小电机,24V只能跑2000RPM左右,在此基础上测试一下弱磁控制,由于MTPA只适用于表贴电机,测试效果不能直观看出来,一般是通过测试效率。而前馈解耦的响…