Object和Objects类、API、Scanner类、Rondom类

Object类

Object类的特点:

  1. 是所有类的父类。
  2. 所有类都是直接或间接继承Object。

equals方法概述:

boolean equals(Object obj)

  • 用来比较两个对象是否相同,相同返回true,否则false。
  • 默认是通过比较两个对象的地址值判断两个对象是否相同。

重写equals方法的目的:

  1. 在比较两个对象是否相同时不希望通过比较地址值判断,因为比较地址值没有任何意义。
  2. 而是希望通过比较两个对象的成员变量值来判断两个对象是否相同。

toString方法概述:

  • 一般创建类,必须加toString方法。
  • 默认返回值是:类全名@对象在内存中的地址值
  1. 类全名: 包名加类名。
  2. 例如:com.itheima._01Object类.Student@75828a0f

toString方法的调用时机:

  1. 直接调用:通过对象名调用。
  2. 间接调用:直接打印对象到控制台时,系统会自动调用该对象的toString方法。
  • ​​​​​​​一般情况下,都是用间接调用。

重写toString方法的目的:

在打印对象时不想看到对象在内存中的地址值,而是希望看到对象的成员变量值是什么。

Objects类

Objects类概述:

  1. Objects类是JDK1.7推出的。
  2. 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中类的使用步骤:

  1. 导包
  2. 创建对象
  3. 使用对象的功能。

API帮助文档使用步骤:

  1. 看包。        java.lang下的类不需要导包,其他都需要。
  2. 看类的解释和说明。  (要知道这个类可以帮助我们做什么事情)
  3. 学习构造方法。
  4. 使用成员方法。

导包方式:

  1. 手动导包(不推荐):impoort  包名.类名
  2. 自动导包(推荐): 写一半的类名 -----> 有提示 -----> 回车
  3. 半自动导包: 写完整类名-----> 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 值。

猜你喜欢

转载自blog.csdn.net/weixin_41630924/article/details/81504077