• 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 虚拟机固定Ip地址
    艰难的K8s环境准备及集群安装kuberneters
    妙啊!动画还可以这样控制?
    shell删除变量中的字符(字符串替换)
    如何在shell的循环中实现字符串的拼接
    echo输出原始字符串中连续多个空格的方法
    std:;mutex 使用
    免费素材网站合集
    从华为转正到离职
    C++实现图的遍历和最短路径
  • 原文地址:https://www.cnblogs.com/SongHai/p/14120844.html
Copyright © 2020-2023  润新知