美文网首页
Java 基础 27 Scanner类 与 Object类

Java 基础 27 Scanner类 与 Object类

作者: 小熊先生很不开心 | 来源:发表于2018-02-01 20:44 被阅读10次

    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类

          本文链接:https://www.haomeiwen.com/subject/hpsjzxtx.html