###10.19_常见对象(Object类的equals()方法)(掌握) * A:案例演示 * a:指示其他某个对象是否与此对象“相等”(判断两个对象是否相等)。 * b:默认情况下比较的是对象的引用是否相同。 * c:由于比较对象的引用没有意义,一般建议重写该方法。 案例: package com.itheima.object; import com.itheima.bean.Student; public class Demo4_Equals { /** * equals方法:比较两个对象是否相等,下面是Object中的equals方法,比较的是地址值,没有什么意义 * public boolean equals(Object obj) { return (this == obj);//是调用的对象与传入的对象的比较,比较的是地址值 } 思考:equals方法比较两个对象的地址值是没有意义的,需要重写,因为在开发中通常比较的是对象中的属性值, 我们认为相同属性认为是同一个对象,这要需要在Student类中需要重写equals方法 * @param args */ public static void main(String[] args) { //观察重写equals方法前后的结果 Student s1 = new Student("张三",23); Student s2 = new Student("张三",23); boolean b = s1.equals(s2); //比较两个对象是否相等 //当Student类没有重写equals方式时,下面两个输出都是false System.out.println(s1 == s2); System.out.println(b); } } 重写Student类中的equals方法: package com.itheima.bean; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { super(); 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 boolean equals(Object obj) { //认为当姓名相同并且年龄也相同时为同一对象 //所以要先比较姓名是否相同,而姓名是String类型,通过查看api发现String类型重写了equals方法, //而且比较的是字符串中的字符序列是否相同,正好符合要求,可以直接使用 /* Student s = (Student)obj; return this.name.equals(s.name)&&this.age==s.age;//age是基本数据类型,不能直接调用方法 */ if(obj instanceof Student){ Student s = (Student)obj; return this.name.equals(s.name)&&this.age==s.age; } return false; } }
###10.20_常见对象(==号和equals方法的区别)(掌握) * ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值 * equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
###10.21_常见对象(Scanner的概述和方法介绍)(掌握) * A:Scanner的概述 * B:Scanner的构造方法原理 * Scanner(InputStream source) * System类下有一个静态的字段: * public static final InputStream in; 标准的输入流,对应着键盘录入。
* C:一般方法 * hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx * nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符 案例: public class Demo1_Scanner { /** * @param args */ public static void main(String[] args) { /** * 如果输入10回车,显示10 * 如果输入a回车,则抛出异常InputMismatchException:超出int的取值范围或者和int的类型不匹配 */ Scanner sc = new Scanner(System.in);// 创建键盘录入对象 // int i = sc.nextInt(); //键盘录入整数存储在i中 // System.out.println(i); if (sc.hasNextInt()) { int i = sc.nextInt(); System.out.println(i); } else { System.out.println("你输入的类型错误!"); } } }
|