JavaSE——常用API进阶一(2/3)-Objects类(equals方法、isNull方法、nonNull方法)、包装类(介绍、包装方法及自动装拆箱、其他常见操作)

简介: JavaSE——常用API进阶一(2/3)-Objects类(equals方法、isNull方法、nonNull方法)、包装类(介绍、包装方法及自动装拆箱、其他常见操作)

前面我们重写equals方法的时候,发现比较两个对象是否相等,用的是objects的equals方法,而不是用对象自己的equals方法来比较:


这是为什么呢?

接下来就来学习一下Objects类的相关知识。

Objects

  • Objects是一个工具类,提供了很多操作对象的静态方法给我们使用。

Objects类的常见方法

图片.png

equals方法

public class Test {
    public static void main(String[] args) throws CloneNotSupportedException {
        String s1 = null;
        String s2 = "hello";
 
        //如果使用Object父类的equals方法,会因为调用了空地址而报错
        //System.out.println(s1.equals(s2));
        //所以就需要用Objects工具类的equals
        System.out.println(Objects.equals(s1, s2));
 
    }
}

运行结果:


其源码:(按住Ctrl键+鼠标左键点击目标方法)


下面两个方法的用法都比较简单直接:

isNull方法

System.out.println(Objects.isNull(s1)); //true
//效果相当于下面这句
System.out.println(s1 == null);//true
 
System.out.println(Objects.isNull(s2)); //false
System.out.println(s2 == null);//false

运行结果:


nonNull方法

System.out.println(Objects.nonNull(s2)); //true
System.out.println(Objects.nonNull(s1)); //false

运行结果:


包装类

介绍

为什么要有包装类?

对于基本类型,它们都不是对象;但是如果在泛型中我们需要用到这些基本类型的数据,而泛型又只能传入引用数据类型,这个时候包装类就发挥了作用了。


  • 包装类就是把基本类型的数据包装成对象。
基本数据类型 对应的包装类(引用数据类型)
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

接下来以Integer为例,展示一下基本类型的数据包装成对象的方法:

包装方法及自动装拆箱

基本类型的数据包装成对象的方法
public Integer(int value)  已过时
public static Integer valueOf(int i)   


具体用法:

public class Test {
    public static void main(String[] args) {
//        Integer a1 = new Integer(12); //已过时
        Integer a2 = Integer.valueOf(12);
        System.out.println(a2);
    }
}

运行结果:


对于包装类来说,是可以自动装箱和拆箱的,

  • 自动装箱:基本数据类型可以自动转换为包装类型。
  • 自动拆箱:包装类型可以自动转换为基本数据类型。
//自动装箱
Integer a3 = 12;
 
//自动拆箱
int a4 = a3;

在泛型或者集合中应用:

public class Test {
    public static void main(String[] args) {
 
        //ArrayList<int> list = new ArrayList<int>(); //不支持基本数据类型
        ArrayList<Integer> list = new ArrayList<>();
        list.add(12); //自动装箱
        list.add(13);//自动装箱
        int rs = list.get(1); //自动拆箱
        System.out.println(rs);
    }
}

运行结果:


其他常见操作

  • 可以把基本类型的数据转换成字符串类型。

public static String toString(double d)

public String toString()

  • 可以把字符串类型的数值转换成数值本身对应的数据类型。

public static int parseInt(String s)

public static Integer valueOf(String s)

具体用法:

把基本类型的数据转换成字符串类型

public class Test {
    public static void main(String[] args) {
 
        //1.把基本类型的数据转换成字符串
        //第一种写法
        Integer a = 23;
        String rs1 = Integer.toString(a); //转换成 “23”
        System.out.println(rs1 + 1); //字符串拼接,结果为231
 
        System.out.println();
 
        //第二种写法
        String rs2 = a.toString();
        System.out.println(rs2 + 1); //结果一样为231
 
        System.out.println();
 
        //第三种
        String rs3 = a + "";  //自动转换类型
        System.out.println(rs3 + 1);
    }
}

运行结果:


把字符串类型的数值转换成数值本身对应的数据类型

public class Test {
    public static void main(String[] args) {
 
        //2.把字符串类型的数值转换成对应的基本类型
        String ageStr = "29";
        //int ageI = Integer.parseInt(ageStr); //29
        //更建议使用下面这种,用的时候不需要多记一个方法
        int ageI = Integer.valueOf(ageStr); //29
        System.out.println(ageI + 1); // 30
 
        System.out.println();
 
        String scoreStr = "99.5";
       // double score = Double.parseDouble(scoreStr); //99.5
        //同样的,建议使用下面这种方法
        double score = Double.valueOf(scoreStr);//99.5
        System.out.println(score + 0.5);
    }
}

运行结果:



END



目录
相关文章
|
3月前
|
自然语言处理 算法 Java
地址描述转换为坐标点不使用API,有什么转换的方法?
地址描述转换为坐标点不使用API,有什么转换的方法?
326 64
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
57 1
|
20天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
87 5
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
2月前
|
JavaScript 前端开发 Java
多种语言请求API接口方法
每种语言和库的选择取决于具体需求、项目环境以及个人偏好。了解这些基本方法,开发者就可以根据项目需求选择合适的语言和库来高效地与API交互。
46 1
|
2月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
2月前
|
API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
37 0
|
3月前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
3月前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
4月前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
62 0
下一篇
DataWorks