你知道Object类和Objects的常用方法吗

news2024/9/28 11:21:09

文章目录

    • Object的常用方法
    • Objects的常用方法
      • hashCode
      • hash
      • isNull
      • equals
      • requireNonNull
      • compare
      • nonNull

大家好,Leo又来了!!!最近在网上看到别人分析Objects中isNullfanfan方法来判断,我就想到之前写的一坨坨==null,突然很惭愧,特地去研究学习下,争取下次可以用上.

Object的常用方法

方法作用
clone()创建此对象的副本
equals()判断他与某个对象是否“相等”
getClass()返回此类运行时类,通过在反射时会用到
hashCode()获取到这个对象的哈希码值
notify()唤醒在对象监听器上等待的一个线程
notifyAll()唤醒在此对象监听器上等待的所有线程
toString()返回此对象的字符串表示
wait()让当前线程进入等待状态

Objects的常用方法

hashCode

每一个对象都有自己的hashCode,不同对象的hashCode可能相同

hash

在Objects中,hash是传入参数是一个不定长度的参数,底层也是

isNull

在Objects中这个方式判断对象是否为null是非常优雅的,比如下面这段代码,如果每一个都用 == null,属实是比较乱了,但是如果我们使用isNull这种写法会简洁并且明了很多,代码也更加统一

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateStudentById(Student student) {

        if (null == student) {
            throw new RuntimeException("对象为空,更新失败!");
        }
        if (Objects.isNull(student)) {
            throw new RuntimeException("对象为空,更新失败!");
        }

    }

equals

这个方法在判断两个对象是否相等,或者字符串是否相等非常常用,那使用这个方法时也需要考虑一个问题就是a.equals(b),a不能为null,否则会抛出NullPointerException,但是在Objects.equals方法是可以很好避免这个问题,我们就可以减少对a是否非null的判断,在equals中是已经进行了判断

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaDnzXaY-1677681907076)(C:\Users\DY\AppData\Roaming\marktext\images\2023-03-01-11-17-35-image.png)]

requireNonNull

requireNonNull方法传入一个对象,如果这个对象为null,就抛出空指针异常,也可以自定义抛出的异常信息message

public static <T> T requireNonNull(T obj) {
   if (obj == null)
       throw new NullPointerException();
   return obj;
}

compare

主要用于比较,我们可以自定义对应的比较器。

在这里插入图片描述

nonNull

可以用来判断对象是否非空

public static boolean nonNull(Object obj) {
    return obj != null;
}

总之,希望大家可以把Objects这样的类用起来,让自己的代码长的更好看点啦😂

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

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

相关文章

IIC总线式驱动开发(mpu6050)

目录 一、I2C总线背景知识 二、Exynos4412 I2C收发实现之裸机版 2.1 发送 2.2 接收 三、Linux内核对I2C总线的支持 四、MPU6050 五、应用层直接使用I2C通道 5.1 预备工作&#xff1a; 5.1.1 5.1.2 5.2 应用层直接使用i2c总线的代码实现 5.2.1 调用read、write实现接…

解决“vue“不是内部或外部命令问题

通过vue指令使用脚手架初始化项目时&#xff0c;在cmd中输入vue init webpack vue_project&#xff0c;终端报错&#xff1a; vue 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。解决方案&#xff1a; 1、确定npm是否已正确安装&#xff0c;在cmd中输入如下…

AcWing算法提高课-3.1.3香甜的黄油

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 农夫John发现了做出全威斯康辛州最甜的黄油的方法&#xff1a;糖。 把糖放在一片牧场上&#xff0c;他知道 N 只奶牛会过来舔它&#xff0c;这样就能做出能卖好价…

Dynamics 365 环境搭建 之 SQL Server 2019问题汇总

前言 随着产品的迭代&#xff0c;SQL Server 2016 已经是7-8年前的产品&#xff0c;新环境的搭建必然要随之更新。截至目前&#xff08;2023年3月&#xff09;Dynamics 365 9.1 op版本的软件要求如下。 Windows ServerSQL ServerWindows Server 2019 标准 Windows Server 20…

Vue2与Vue3响应式的详解与比对

目录前言一&#xff0c;响应式的理解1.1 Mvvm模式的复习1.2 什么是响应式二&#xff0c; Vue2中响应式的应用三&#xff0c;Vue2响应式的原理及实现3.1 数据代理3.2 数据代理的原理3.3 数据劫持四&#xff0c;Vue3中响应式的应用3.1 ref与reactive3.2 ref函数的使用讲解3.3 为什…

Anaconda配置Python新版本tensorflow库(CPU、GPU通用)的方法

本文介绍在Anaconda环境中&#xff0c;下载并配置Python中机器学习、深度学习常用的新版tensorflow库的方法。 在之前的两篇文章基于Python TensorFlow Estimator的深度学习回归与分类代码——DNNRegressor&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/detail…

圣杯布局的实现方式

1.什么是圣杯布局&#xff1f; 左右盒子固定&#xff0c;中间盒子自适应 2.实现方式 &#xff08;1&#xff09;flex布局 思路&#xff1a;左右盒子给固定的宽高&#xff0c;中间盒子flex:1 <!DOCTYPE html> <html lang"en"> <head> <met…

JavaSE学习进阶 day1_01 static关键字和静态代码块的使用

好的现在我们进入进阶部分的学习&#xff0c;看一张版图&#xff1a; 前面我们已经学习完基础班的内容了&#xff0c;现在我们已经来到了第二板块——基础进阶&#xff0c;这部分内容就不是那么容易了。学完第二板块&#xff0c;慢慢就在向java程序员靠拢了。 面向对象进阶部分…

入门力扣自学笔记240 C++ (题目编号:2373)

2373. 矩阵中的局部最大值 题目&#xff1a; 给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal &#xff0c;并满足&#xff1a; maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 x 3 矩阵中的 最大值 。 换句…

学习渗透测试,考CISP-PTE还是考NISP-PT证书呢?

其实两者都可以&#xff0c;但是要看考生的实际需求&#xff01; 为什么说两者都可以&#xff1f; 两个证书都由中国信息安全测评中心颁发&#xff0c;CISP-PTE&#xff08;注册信息安全渗透测试工程师&#xff09;,NISP-PT&#xff08;国家信息安全水平考试渗透测试工程师),…

月薪30k测试岗技术要求,简简单单,你学废了吗?

如果还只会点点点&#xff0c;那么可以往自动化测试的方向发展&#xff0c;然后再往测试开发的方向发展&#xff0c;做一个测试开发的工程师&#xff0c;这样薪资是非常可观的。当然过程中需要学习很多的知识&#xff0c;比如&#xff1a;编程语言&#xff0c;自动化测试框架&a…

2023年工程师中级和高级有什么区别,他们评审的要求有哪些不同?

2023年工程师中级和高级有什么区别&#xff0c;他们评审的要求有哪些不同&#xff1f; 职称主要分为初、中、高三个等级。在大部分地区都是逐级申报的&#xff0c;先初级再中级最后高级。不少人都想直接评中级&#xff0c;这是不可行的的&#xff0c;除少数地区破格来说&#x…

软件测试工程师该怎么做自己的职业规划呢

软件测试需求量不仅稳健&#xff0c;还会加大 疫情前&#xff0c;人们的“吃、穿、住、用、行”方方面面都有对应APP软件。疫情后&#xff0c;复工最快&#xff0c;最迅速的企业也都是通过互联网技术实现。 过去&#xff0c;互联网技术只是让某些企业活的好。未来&#xff0c…

面经-Spring框架相关

面试题 Spring、SpringMVC、SpringBoot的区别 Spring是轻量级的开发框架&#xff0c;主要提供了IOC依赖注入容器和AOP面向切面编程的功能。 SpringMVC是基于Spring的一个用来解决Web开发的问题&#xff0c;主要处理web开发中路径映射和视图渲染等 SpringBoot是融合了Spring…

关于算力的未来,新一代PowerEdge告诉你答案

从ChatGPT等大模型海量参数的训练&#xff0c;自动驾驶领域感知模型的训练与仿真&#xff0c;到蛋白质机构预测、流体力学仿真等AIScience&#xff0c;再到矿山、交通、能源等部署广泛的边缘计算设备……如今&#xff0c;我们愈发确切地认识到&#xff0c;算力在数字经济时代不…

Ubuntu系统设置开机自启

在测试国产操作系统&#xff1a;银河麒麟、UOS统信机器的过程中&#xff0c;发现开机不自启&#xff0c;总结以下几种方式实现自启 一.rc.local rc.local脚本是一个Ubuntu开机后自动执行的脚本&#xff0c;可以在脚本内添加行指令&#xff0c;该脚本位于/etc/路径下&#xff…

【Pytorch】Pytorch深度学习实战教程:超分辨率重建AI与环境搭建

一、基础开发环境搭建 1&#xff09;cuda安装 需要根据自己的显卡的型号选择支持的CUDA版本 显卡驱动查看&#xff1a; 鼠标右键 CUDA安装版本查看&#xff1a;https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 注意看自己的电脑配置&#xff0c;我的…

基于麻雀算法改进的BP神经网络坑基监测,BP神经网络详细原理,

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数&#xff0c; BP神经网络的传递函数 麻雀算法原理 麻雀算法主要参数 麻雀算法流程图 麻雀算法优化测试函数代码 基于麻雀算法改进的BP神经网络坑基监测 数据 matlab…

matlab-数据和数据运算

学习视频基本数据类型1.1 整型与浮点型在matlab中同样有8、16、32、64bit的数据大小之分&#xff0c;同时也可以叠加signed(有符号)和unsigned(无符号)的区别&#xff0c;默认数据类型为double(双精度浮点型)参考其他博客的详述1.2 复数还有一些其他常用的函数方法&#xff1a;…

STM32之定时器

定时器软件定时缺点&#xff1a;不精确&#xff0c;占用CPU资源定时器工作原理使用精准的时基&#xff0c;通过硬件的方式&#xff0c;实现定时功能。定时器的核心是计数器。通用定时器框图该框图主要分成四部分&#xff1a;时钟产生器、时基单元、输入捕获、输出比较时钟产生器…