JAVA日常学习036(Object类与其方法的重写)

学习目标:

/**

  • Object类 是类层次结构的跟类,每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

*/

学习内容:

package Test;

/**

  • Object类 是类层次结构的跟类,每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

*/
public class Test015 {
public static void main(String[] args) {
Student00 s=new Student00(“a”,1,5);
System.out.println(s.toString());
//----------------------------
String s1=new String(“aaa”);
String s2=new String(“bbb”);
System.out.println(s1.equals(s2));
//---------------------------------
Student00 a1=new Student00(“aaaa”,2,5);
Student00 a2=new Student00(“bbbb”,3,10);
boolean b=a1.equals(a2);
System.out.println(b);
}
}
class Student00{
private String name;
private int sid;
private int age;
public Student00(){}
public Student00(String name,int sid,int age){
this.name=name;
this.age=age;
this.sid=sid;
}

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

public void setSid(int sid) {
    this.sid = sid;
}

public int getSid() {
    return sid;
}

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

public int getAge() {
    return age;
}

/**
 *      public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
 *   Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
 *
 *    getClass().getName() + '@' + Integer.toHexString(hashCode())
 *
 *     返回:
 *     该对象的字符串表示形式。
 *
 */

//重写Object类中的toString方法
public String toString(){
    return "sid="+sid+",name="+name+",age="+age;
}

/**
 *                    equals
 *   public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
 *   equals 方法在非空对象引用上实现相等关系:
 *
 *   自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
 *   对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
 *   传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
 *   一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
 *   对于任何非空引用值 x,x.equals(null) 都应返回 false。
 *   Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
 *
 *   注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
 *
 *
 *   参数:
 *   obj - 要与之比较的引用对象。
 *   返回:
 *   如果此对象与 obj 参数相同,则返回 true;否则返回 false。
 */
//重写equals方法,来实现两个对象的比较
public boolean equals(Object obj){
    if(this==obj){
        return true;
    }
    if(obj instanceof Student00){
        Student00 s=(Student00)obj;
        if(!this.name.equals(s.name)){
            return false;
        }
        if(this.sid!=s.sid){
            return false;
        }
        if(this.age!=s.age){
            return false;
        }
        return true;
    }
    return false;
}

}

你可能感兴趣的:(笔记,java,学习)