Java 基础 27 Scanner类 与 Object类

1.1 Scanner类

1.1.1 Scanner类作用

  用Scanner类的方法可以完成接收键盘录入的数据,接收的数据类型为基本数据类型和字符串类型。

1.1.2 Scanner 类接受键盘录入的字符串

1.1.2.1案例代码

package com.itheima;

import java.util.Scanner;

/*
 * Scanner:用于获取键盘录入数据。(基本数据类型,字符串数据)
 * public String nextLine():获取键盘录入字符串数据
 */
public class ScannerDemo {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        
        //接收数据
        System.out.println("请输入一个字符串数据:");
        String line = sc.nextLine();
        
        //输出结果
        System.out.println("line:"+line);
    }
}

1.2 Object类

1.2.1 Object类作用

  Object:是类层次结构的根类,所有的类都直接的或者间接的继承自该类。

1.2.2 Object类的toString()方法

1.2.2.1 案例代码

package com.itheima_01;

public class Student {
    private String name;
    private int age;
    
    public Student() {}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }
    
}

package com.itheima_01;
/*
 * Object:是类层次结构的根类,所有的类都直接的或者间接的继承自该类。
 * 构造方法:Object()
 * 
 * 直接输出对象名,输出底层调用的是该对象的toString()
 * 
 * 查看API,我们发现建议所有子类都重写toString()。
 * 到底该如何重写该方法呢?自动生成的就可以。
 */
public class ObjectDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("林青霞");
        s.setAge(30);
        System.out.println(s);
        //System.out.println(s.toString());
        /*
         public void println(Object x) { //Object x = s;
            String s = String.valueOf(x);
            synchronized (this) {
                print(s);
                newLine();
            }
        }
        
        public static String valueOf(Object obj) { //Object obj = x;
            return (obj == null) ? "null" : obj.toString();
        }
        */
    }
}

1.2.3 Object类的equals()方法

1.2.3.1 案例代码


package com.itheima_02;

public class Student {
    private String name;
    private int age;
    
    public Student() {}
    
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }


    @Override
    public boolean equals(Object obj) {
        //s1.equals(s2)
        //this -- s1
        //obj -- s2
        
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        //比较的是对象是否是同一个类的对象
        if (getClass() != obj.getClass())
            return false;
        Student other = (Student) obj; //other -- s2
        if (age != other.age) //this.age -- s1.age
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            //字符串的equals()比较的是字符串的内容是否相同
            return false;
        return true;
    }
}


package com.itheima_02;
/*
 * ==:
 *      可以比较基本数据类型,比较基本数据类型的时候比较的是基本数据类型的值是否相同
 *      也可以比较引用数据类型,比较引用数据类型的时候比较的是引用数据类型的地址值是否相同
 * 
 * 而我们现在想比较的是对象的内容是否相同?该怎么办呢?
 * 通过查看API,我们找到了比较对象是否相等的方法:
 * public boolean equals(Object obj)
 * Object类中的equals()方法默认比较的是对象的地址是否相同。
 * 如果我们想比较对象的内容是否相同,就必须自己重写该方法。
 * 如何重写该方法呢?
 *      自动生成即可。
 */
public class ObjectDemo {
    public static void main(String[] args) {
        Student s1 = new Student("林青霞", 30);
        Student s2 = new Student("林青霞", 30);
        
        //System.out.println(s1 == s2);//false
        
        System.out.println(s1.equals(s2));//false
        /*
        public boolean equals(Object obj) {
            //this -- s1
            //obj -- s2
            return (this == obj);
        }
        */
    }
}

你可能感兴趣的:(Java 基础 27 Scanner类 与 Object类)