• java_13.2 Object


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

    2.hashCode()方法

      返回该对象的哈希值。一般情况下,该方法会根据对象的地址值来计算。

      不同的对象hashCode()一般来说不会相同,但同一个对象的hashCode值肯定一样。

      不是对象的实际地址值,可以理解为逻辑地址值。

    package demo1;
    
    
    public class Demo1 {
    	public static void main(String[] args) {
    		Student s1 = new Student("张三", 23);
    		int hashcode = s1.hashCode();
    		System.out.println(hashcode);
     	}
    }
    

     

    3getClass()方法

      返回Object的运行时类

      可以通过Class的一个getName()方法来获得类的全名。

    package cn.smx.demo1;
    
    
    public class Demo1 {
    	public static void main(String[] args) {
    		Student s1 = new Student("张三", 23);
    		Class clazz = s1.getClass();
    		String str = clazz.getName();
    		System.out.println(str);
     	}
    }
    

     

    4.toString()方法

    package cn.smx.demo1;
    
    
    public class Demo1 {
    	public static void main(String[] args) {
    		Student s1 = new Student("张三", 23);
    		String s = s1.toString();
    		System.out.println(s);
     	}
    }
    

     

    为了更好的获得属性值,我们会重写toString()方法。在eclipse中有快捷键生成toString()方法。右击-->source-->generate toString()..-->select all.

      

        public static void main(String[] args) {
    		Student s1 = new Student("张三", 23);
    		System.out.println(s1);
     	}
    

     5.equals()方法

      比较对象的地址值

    package demo1;
    
    
    public class Demo1 {
    	public static void main(String[] args) {
    		Student s1 = new Student("张三", 23);
    		Student s2 = new Student("张三", 23);
    		boolean b = s1.equals(s2);
    		System.out.println(b);
     	}
    }
    

     

      没有什么意义,一般来比较对象中的属性值。属性值相同,我们认为是同一个对象。

      重写equals方法。

        public boolean equals(Object obj) {
    		if(this==obj) {
    			return true;
    		}
    		if(obj==null) {
    			return false;
    		}
    		if(obj instanceof Person) {
    			Person p = (Person)obj;
    			if(this.age==age&&this.name==name)
    				return true;
    		}
    		return false;
    	}
    

     主函数:

        public static void main(String[] args) {
    		Person p = new Person("zhangsan",23);
    		Person p1 = new Person("zhangsan",23);
    		boolean b = p.equals(p1);
    		System.out.println(b);
    		System.out.println(p);
    		System.out.println(p1);
        }
    

     

      ==和equals都可以作比较

      区别是:1.==号是比较运算符,既可以比较基本数据类型(比较值),又可以比较引用数据类型(比较地址值)。

          2.equals方法在没重写之前比较的是地址值,底层依赖==号。我们需要重写equals方法,比较对象中的属性值。只能比较引用数据类型。

  • 相关阅读:
    c# PrintDocument 设置自定义纸张大小的示例
    C#获取本地打印机列表,并将指定打印机设置为默认打印机
    水晶报表自定义纸张大小打印 (Crystal Report Print with custom paper size)
    c#打印机设置,取得打印机列表及相应打印机的所有纸张格式
    在C#中设置打印机纸张大小
    打印grid
    获取List集合中最大值的方法
    mysql使用索引优化查询效率
    mysql数据库中标的key的含义
    mysql数据库添加索引优化查询效率
  • 原文地址:https://www.cnblogs.com/smxbo/p/10667361.html
Copyright © 2020-2023  润新知