Java Object的操作


public class Application {

    public static void main(String[] args) {

        //Object 是所有类的父类,定义了所有类共有的一组方法

        //toString 方法的返回值决定了输出对象的内容
        //默认是输出了对象的内存地址转化后的结构
        //重写toString 方法可以输出对象的属性值 

        Employee e1 = new Employee("zhangsan",20);
        System.out.println(e1);

        //hashCode 方法返回了对象的唯一标识(身份证号)
        System.out.println(e1.hashCode());

        //equals 方法默认进行地址比较,如果想要进行 值 的比较需要重写
        Employee e2 = new Employee("wangwu",40);
        Employee e3 = new Employee("wangwu",40);

        System.out.println(e2.equals(e3));
        //重写equals 后 必须重写hashCode,通常返回某个字符串属性的hashCode
        //保证equals 相同的对象 hashCode 也相同
    }
}

任何类默认都是继承Object

//默认继承自 Object
public class Employee {

    private String name;

    private int age;


    public Employee() {
        super();
    }

    public Employee(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }



    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "Employee:[name:" + name +",age:" + age + "]";
    }

    @Override
    public boolean equals(Object arg0) {
        // 重写这个方法完成值的比较 e2 = this,e3 = obj(arg0)

        //1、判断obj 是不是 Employee 的对象
        //  如果是,进行后续属性值的比较
        //  如果不是,返回false,表示两者不相等
        //  因为 obj是Object 类型,任何类的对象都可以传入进行比较

        if (arg0 instanceof Employee) {
            //instanceof 用来判断对象是否属于某个类
            //2.属于则进行属性值的比较
            //把obg从Oject 类型强制转换为Employee
            //只有转换为Employee 后才能通过 getter方法获取属性的值
            Employee another = (Employee)arg0;

            //比较年龄
            if (age == another.getAge()) {
                //年龄相同,比较名字
                if (name.equals(another.getName())) {
                    //名字相同,返回return,表示两者相等
                    return true;
                }else {
                    //名字不同,返回false,表示两者不相等
                    return false;
                }
            }else {
                //年龄不同,返回false,表示两者不相等

            }

        }else{
            //不属于则返回false,表示两者不相等
            return false;
        }
        return false;
    }


    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return name.hashCode();
    }



    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;
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值