zoukankan      html  css  js  c++  java
  • Java基础之:toString与hashCode

    Java基础之:toString与hashCode

    hashCode()

    方法返回:返回根据地址生成的十进制哈希值。

    1)两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!

    2)两个引用,如果指向的是不同对象,则哈希值是不一样的

    3)哈希值主要根据地址号来的!, 不能完全将哈希值等价于地址。

    toString()

    方法返回:全类名 + @ + 哈希值的十六进制。

    子类经常会重写toString()方法,用于显示各对象信息

    当直接输出一个对象时,默认调用toString方法。

    例如:System.out.println(a); ===> System.out.println(a.toString());

     

    简单案例

    package object;
    
    public class Hashcode_toString {
    
    	public static void main(String[] args) {
    
    		A a = new A("小范");
    		System.out.println(a);	//重写toString	
    		
    		B b = new B();
    		System.out.println(b.toString()); // 没有重写toString,返回 对象类型与十六进制hashCode
    		System.out.println(b.hashCode()); // 输出十进制hashCode
    		// toString源码:
    		/*
    		 * public String toString() {
            		return getClass().getName() + "@" + Integer.toHexString(hashCode());
        	   }
        	   
        	   getClass():返回对象的运行类型,特别有用!(因为运行类型是可变了,会经常出现变化。)
    		 */
    		
    		//getClass():
    		Object string = new String("hello");
    		System.out.println(string.getClass());	
    	}
    
    }
    
    /**
     * @author FSH
     *
     */
    class A{
    	
    	private String name;
    
    	public A(String name) {
    		super();
    		this.name = name;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	@Override
    	public String toString() {
    		return "A [name=" + name + "]";
    	}
    	
    }
    
    class B{
    	
    }

    在之前的 "Java基础之:构造方法(构造器)与this关键字" (https://www.cnblogs.com/SongHai/p/14037087.html)中,this关键字的第一个案例中也讲到了关于hashCode与toString。

  • 相关阅读:
    智能指针的简单实现
    原型模式
    Linux——模拟实现一个简单的shell(带重定向)
    软件开发的一个案例:学生信息管理系统
    关于正则的一点总结
    STL——模拟实现空间配置器
    LeetCode全文解锁 √
    话说extern和static
    C++有关 const & 内敛 & 友元&静态成员那些事
    C语——宏小结
  • 原文地址:https://www.cnblogs.com/SongHai/p/14120844.html
Copyright © 2011-2022 走看看