Object类
Object类的特点:
- 是所有类的父类。
- 所有类都是直接或间接继承Object。
equals方法概述:
boolean equals(Object obj)
- 用来比较两个对象是否相同,相同返回true,否则false。
- 默认是通过比较两个对象的地址值判断两个对象是否相同。
- 注意:使用equal方法的时候,一般常量在前,变量在后,这样可以避免空指针异常。
重写equals方法的目的:
- 在比较两个对象是否相同时不希望通过比较地址值判断,因为比较地址值没有任何意义。
- 而是希望通过比较两个对象的成员变量值来判断两个对象是否相同。
toString方法概述:
- 一般创建类,必须加toString方法。
- 默认返回值是:类全名@对象在内存中的地址值
- 类全名: 包名加类名。
- 例如:com.itheima._01Object类.Student@75828a0f
toString方法的调用时机:
- 直接调用:通过对象名调用。
- 间接调用:直接打印对象到控制台时,系统会自动调用该对象的toString方法。
- 一般情况下,都是用间接调用。
重写toString方法的目的:
在打印对象时不想看到对象在内存中的地址值,而是希望看到对象的成员变量值是什么。
Objects类
Objects类概述:
- Objects类是JDK1.7推出的。
- Objects类的方法
- 是操作对象的。
- 特点是:null-save(空指针安全的)或null-tolerant(容忍空指针的)。
Objects类常用方法:
public static boolean equals(Object a, Object b)
- 判断两个对象是否相同,相同返回true,否则false。
- 底层依赖于对象的equals方法,如果对象没有重写equals方法,则是通过比较地址比较。
- 与boolean equals (Object obj)对比的优点:不需要考虑空指针的问题。
public static <T> T requireNonNull(T obj)
- 检查指定对象obj不为null,如果为null,则抛出空指针异常,否则返回值为obj对象本身。
- 如果对象不为空,直接使用该方法,则此方法无作用。
public static boolean nonNull(Object obj)
- 判断指定对象obj是否为null,不为null返回true,否则返回false。
public static boolean isNull(Object obj)
- 判断指定对象obj是否为null,为null返回true,否则返回true。
示例代码:
public class ObjectsDemo01 {
public static void main(String[] args){
// 创建两个学生对象
Student s1 = new Student("rose",20);
Student s2 = new Student("jack",20);
System.out.println(Objects.requireNonNull(s1));
if (s1 != null){
System.out.println(s1.equals(s2));
}
// 判断对象s1是否为null
System.out.println(Objects.isNull(s1)); // false
// 判断对象s1是否不为null
System.out.println(Objects.nonNull(s1)); // true
// 比较对象是否相同
System.out.println(Objects.equals(s1, s2));
saveStudent(s1);
}
public static void saveStudent(Student stu){
// 在JDK1.7之前
/*if (stu == null){
throw new NullPointerException();
}*/
// 在JDK1.7之后
Objects.requireNonNull(stu);
System.out.println(stu);
}
}
API
什么时API:
应用程序编程接口,通俗的讲就是Java写好的类,我们直接使用。
API中类的使用步骤:
- 导包
- 创建对象
- 使用对象的功能。
API帮助文档使用步骤:
- 看包。 java.lang下的类不需要导包,其他都需要。
- 看类的解释和说明。 (要知道这个类可以帮助我们做什么事情)
- 学习构造方法。
- 使用成员方法。
导包方式:
- 手动导包(不推荐):impoort 包名.类名
- 自动导包(推荐): 写一半的类名 -----> 有提示 -----> 回车
- 半自动导包: 写完整类名-----> alt + 回车 ------> import.class
Scanner类
Scanner ==》 扫描器
什么是Scanner类:
一个可以解析基本类型和字符串的简单文本扫描器。
Scanner类对象创建固定格式:
Scanner 对象名 = new Scanner(System.in)
- System.in 系统输入指的是通过键盘录入数据。
next/nextInt/nextDouble 与 nextLine的区别:
next/nextInt/nextDouble
- 扫描结束标记是: 空格,tab键,回车符。
- 从左往右开始扫描数据,在扫描第一个有效之前会自动过滤掉结束标记符。
nextLine:
- 从左往右开始扫描数据,扫描结束标记是:回车符。
Random类
构造方法:
public Random()
- 创建一个新的随机数生成器。
成员方法:
public int nextInt(int n)
- 返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的int 值。