• Java学习笔记二十四:Java中的Object类


     

    Java中的Object类

     

    一:什么是Object类;

      Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。

      Object类中的方法,适合所有子类。

    二:toString()方法;

      在OBject类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。

      如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个字符串,是用来唯一区分对象的,可以想象为身份证号。

      可以通过重写toString()方法表示出对象的属性

    举一个例子:

    Initail主函数:

    package com.test;
    
    public class Initail {
    
        public static void main(String[]args){
            
            Dog dog = new Dog();//这里我们定义了一个dog对象
            System.out.println(dog);//我们如果现在输入dog的值
        }
    }

    Dog类:

    package com.test;
    
    //Dog对象继承于Animal类
    public class Dog extends Animal{
        public int age = 20;
        public void eat(){
            System.out.println("狗有吃骨头的能力");
        }
        public Dog(){
            System.out.println("Dog类执行了");
        }
        public void method(){
            eat();
        }
    }

    Animal类:

    package com.test;
    //Animal类并没有明确表明它继承于那个类,他就相当于继承了Object类
    public class Animal extends Object{
        public int age=10;//为属性赋初值
        public String name;
        public void eat(){
            System.out.println("动物是可以吃东西的");
            
        }
        public Animal(){
            System.out.println("Animal类执行了");
            
            
        }
    }

    运行结果为:

    此时我们看到它输出的是dog类的包名+dog对象在内存中的地址

    重写从父类继承来的toString)方法:

    在Eclipse中的source下选择选项

    确认即可完成

     修改后的Dog类:

    package com.test;
    
    //Dog对象继承于Animal类
    public class Dog extends Animal{
        public int age = 20;
        public void eat(){
            System.out.println("狗有吃骨头的能力");
        }
        public Dog(){
            System.out.println("Dog类执行了");
        }
        @Override
        public String toString() {
            return "Dog [age=" + age + "]";
        }
        public void method(){
            eat();
        }
    }

    运行结果为:

    此时便输出了对象属性的值。

    三:equals()方法;

    equals()方法比较的是对象的引用是否指向同一块内存地址

    Dog dog = new Dog();

    这个dog对象并不是我们创建的对象,而是对象在内存中的地址,在操作对象的地址的时候相当于间接操作了对象的值。这个dog就是引用。

    一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。

    举一个例子:

    主函数Initail:

    package com.test;
    
    public class Initail {
    
        public static void main(String[]args){
            
            Dog dog = new Dog();//这里我们定义了一个dog对象
            dog.age = 15;
            Dog dog2 = new Dog();//继续创建一个dog对象
            dog2.age = 15;
            //比较两个对象是否符合equals
            if(dog.equals(dog2)){
                System.out.println("两个对象是相同的");
            }
            else{
                System.out.println("两个对象是不相同的");
            }
        }
    }

    运行结果为:

      虽然我们赋给对象的值是相同的,但是new两个对象其实是开辟了两个不同的内存空间,因为equals对比两个内存地址是否相同,所以两个对象不同。

     重写方法:

    我们选择eclipse的source下的选项

    Initail类:

    package com.test;
    
    public class Initail {
    
        public static void main(String[]args){
            
            Dog dog = new Dog();//这里我们定义了一个dog对象
            dog.age = 15;
            Dog dog2 = new Dog();//继续创建一个dog对象
            dog2.age = 15;
            //比较两个对象是否符合equals
            if(dog.equals(dog2)){
                System.out.println("两个对象是相同的");
            }
            else{
                System.out.println("两个对象是不相同的");
            }
        }
    }

    Dog类:

    package com.test;
    
    //Dog对象继承于Animal类
    public class Dog extends Animal{
        public int age = 20;
        public void eat(){
            System.out.println("狗有吃骨头的能力");
        }
        public Dog(){
            System.out.println("Dog类执行了");
        }
        @Override
        public String toString() {
            return "Dog [age=" + age + "]";
        }
        public void method(){
            eat();
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)//判断两个引用的值是否相同
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())//判断两个对象的类型是否相同
                return false;
            Dog other = (Dog) obj;
            if (age != other.age)//两个属性的属性值是否相同
                return false;
            return true;
        }
    }

    其中:getClass()方法比较两个类对象是否相同,类对象和类的对象的关注点如下

    运行结果为:

  • 相关阅读:
    jQuery.getJSON() – jQuery API
    打造个性化的Select(可编辑)(还不错,有一定实用价值)
    RMAN备份异机恢复并创建新DBID
    输出所有在给定范围内的水仙花数
    使用 ptstalk 诊断 MySQL 问题
    VC6.0 error LNK2001: unresolved external symbol _main解决办法
    Mysql备份
    在从1到n的正数中1出现的次数
    游标sql语句
    linux中如何改IP
  • 原文地址:https://www.cnblogs.com/pureqh/p/9165033.html
Copyright © 2020-2023  润新知