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

目录

Objects类的常见方法

equals方法

isNull方法

nonNull方法

包装类

介绍 

包装方法及自动装拆箱

其他常见操作


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

 这是为什么呢?

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

Objects

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

Objects类的常见方法

方法名说明
public static boolean equals(Object a,Object b)先做非空判断,再比较两个对象
public static boolean isNull(Object obj)判断对象是否为null,为null返回true,反之
public static boolean nonNull(Object obj)

判断对象是否不为null,不为null则返回true,反之

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

运行结果: 

包装类

介绍 

为什么要有包装类?

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


  • 包装类就是把基本类型的数据包装成对象。
基本数据类型对应的包装类(引用数据类型)
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

 接下来以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 


学习自:黑马程序员——JavaSE课程

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值