对哈希码和默认的toString()不了解,百度后总结如下:

一 哈希码

在Java中,哈希码代表了对象的一种特征,例如我们判断某两个字符串是否==,如果其哈希码相等,则这两个字符串是相等的。其次,哈希码是一种数据结构的算法。常见的哈希码的算法有:

1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。

2:String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
3:Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可见,2个一样大小的Integer对象,返回的哈希码也一样。

二 Object对象默认的toString()

假如.直接输出一个实例对象,出现一串字符串,代表什么?

直接输出一个类的对象的时候,会调用这个类的toString()方法,这个方法有些类是覆盖了的,比如String,Integer。你自己写的类没有覆盖这个方法的话就是继承Object类的这个方法,Object中toString()方法的实输出格式是这样的getClass().getName() + "@" + Integer.toHexString(hashCode()) 后面跟的是这个类的哈希码,如果你希望这个类打印出来输出你希望的格式,你就要覆盖这个、toString方法。
以上部分内容摘自:https://zhidao.baidu.com/question/556180467.html         https://zhidao.baidu.com/question/179265608.html

测试:
---------------------
作者:勤勤勤能补拙
来源:CSDN
原文:https://blog.csdn.net/zark721/article/details/70254548
版权声明:本文为博主原创文章,转载请附上博文链接!

 1 package new_start1;
 2 public class Test1 {
 3     class Person
 4     {
 5         public String name;
 6         public Person(String n)
 7         {
 8             this.name=n;
 9         }
10         public Person(){}
11     }
12     public static void change(Person a)//改变对象a的name值
13     {
14         a.name="haha";
15     }
16     public static void main(String[] args) {
17         Test1 t=new Test1();
18         Person p=t.new Person("zhangsan"); //实例一个对象p
19         Person a=t.new Person();//又实例一个对象a
20         System.out.println("未赋值前,两者的哈希码是不相同的:");
21         System.out.println("a.hashCode="+a.hashCode()+"  "+"p.hashCode="+p.hashCode());
22         System.out.println("a.toString()="+a.toString());
23         System.out.println("p.toString()="+p.toString());
24         /*
25             未赋值前,两者的哈希码是不相同的:
26             a.hashCode=366712642  p.hashCode=1829164700
27             a.toString()=new_start1.Test1$Person@15db9742
28             p.toString()=new_start1.Test1$Person@6d06d69c
29          */
30         a=p;
31         System.out.println("赋值后,两者的哈希码相同:");
32         System.out.println("a.hashCode="+a.hashCode()+"  "+"p.hashCode="+p.hashCode());
33         System.out.println("a.toString()="+a.toString());
34         System.out.println("p.toString()="+p.toString());
35         /*
36              赋值后,两者的哈希码相同:
37             a.hashCode=1829164700  p.hashCode=1829164700
38             a.toString()=new_start1.Test1$Person@6d06d69c
39             p.toString()=new_start1.Test1$Person@6d06d69c
40          */
41     }
42 }

转载于:https://www.cnblogs.com/mike-JP/p/10960129.html

哈希码以及Object.toString()简单理解相关推荐

  1. tostring 16进制_ToString:身份哈希码的十六进制表示形式

    tostring 16进制 我以前在方便的Apache Commons ToStringBuilder上写过博客,最近有人问我,在生成的String输出中出现的看似神秘的文本是什么构成的. 询问该问题 ...

  2. ToString:身份哈希码的十六进制表示形式

    我以前在方便的Apache Commons ToStringBuilder上写过博客,最近有人问我,在生成的String输出中出现的看似神秘的文本是什么构成的. 询问该问题的同事正确地推测出他正在查看 ...

  3. toString()的简单理解

    ToString的简单理解 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()方法. 文章目录 ToString的简单理解 一.Object类中toString()的定义 二.重 ...

  4. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  5. 面试准备每日系列:Java底层源码——Arrays.toString(数组) object.toString() new String()

    文章目录 Java.lang->String StringBuilder.StringBuffer.String区别 Object.toString() Arrays.toString(数组) ...

  6. 余三码和余三循环码的简单理解

    关系: 余三码是在8421码加上0011得来的一种无权码,8421码就是4位二进制所能表示的16个数字的前10位,用以表示0~9的数字,所以余三码就是所能表示的16个数字中的第4~13个. 余三循环码 ...

  7. 补码原码反码简单理解

    补码原码反码简单理解 看到一句I2S的data是以补码形式来表现数据.再次查阅得出以下只管结论: ####1,首先直观举例机器里面是如何存放有符号数的:#### 1在机器里面表示为 0000 0001 ...

  8. 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

    深度学习算法及应用 一. 实验目的 二. 实验要求 三. 实验的硬件.软件平台 四. 实验原理 1.1. 深度学习概述 1.2. 深度学习的常见结构 1.3. 卷积神经网络(CNN) **卷积** * ...

  9. 一文简单理解《Effective Java》建议

    考虑用静态工厂方法替代构造方法 传统的获取一个对象实例,通常是通过构造方法,new一个对象:不同数量的入参,会有不同的构造方法: 例如,统一的返回结果类,传统方式(伪代码)如下: //成功 retur ...

最新文章

  1. 豆瓣评分 9.4 的算法巨著,这本书带无数读者入门算法
  2. Ubuntu16.04里django的配置和安装
  3. JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数
  4. Angular [(ngModel)]的ng-dirty设置时机
  5. [蓝桥杯][算法提高VIP]扫雷-枚举
  6. LeetCode--171--Excel表列序号
  7. 股票休市午间可以撤单吗?
  8. 运行Eclipse出现:a java runtime environment(JRE) or java development kit(JDK) must be....
  9. 数控直流电压源的设计与制作【keil5 AD20]
  10. 基于javaweb宠物领养平台管理系统设计和实现
  11. Leetcode 惊现马化腾每天刷题 ? 为啥大佬都这么努力!
  12. 多机器人系统实验室汇总
  13. 工业触摸一体机的触摸屏原理和维护
  14. C++之常指针和指向常量的指针
  15. 联想服务器如何重装win 2012系统,联想电脑如何重装win10操作系统
  16. 超级码力在线编程大赛初赛第1场-1-树木规划题解
  17. Word2Vec--词向量模型
  18. 怎样配置Ruckus AP
  19. MIPI CSI-2笔记(2) -- 物理层Physical Layer
  20. [附源码]计算机毕业设计游戏商城平台论文Springboot程序

热门文章

  1. mysql按 当前时间和规定时间大小排序_为什么 MySQL 使用 B+ 树· Why#x27;s THE Design?(009)...
  2. linux strace cpu,如何定位死循环或高CPU使用率(linux)
  3. python virtualenv
  4. 18 File Duplication and Pipes
  5. C++ 对比 C语言
  6. java hashmap
  7. Linux mv命令
  8. 读写序列(pickle)
  9. python列表_Python列表列表的所有组合
  10. java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据