目录
前面我们重写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
运行结果:
包装类
介绍
为什么要有包装类?
对于基本类型,它们都不是对象;但是如果在泛型中我们需要用到这些基本类型的数据,而泛型又只能传入引用数据类型,这个时候包装类就发挥了作用了。
- 包装类就是把基本类型的数据包装成对象。
基本数据类型 | 对应的包装类(引用数据类型) |
---|---|
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
学习自:黑马程序员——JavaSE课程