Java连载56-toSting方法和equals方法
一、关于object中的toString方法:
1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式。
2.在现实的开发过程中,Object里面的toString方法已经不够用了,因为Object的toString方法实现的结果不满意。Object中的toString方法实现的结果不满意。Object中的呢toString方法要被重写了。
3.println打印的如果是对象的话,那么就会默认打印对象的toString方法得到的结果。
4.SUN公司的默认toString方法是这样的
public String toString(){
return getClass().getname() + "@" + Interger.toHexString(hashCode());
}
object中的toString方法返回:类名@java对象的内存地址经过哈希算法得到的int类型值在转换为十六进制。这个输出可以等同看作java对象在堆中内存地址。
5.举个例子
package com.bjpowernode.java_learning;
public class D56_1_ {
public static void main(String[] args) {
Object o1 = new Object();
String s1 = o1.toString();
System.out.println(s1);
Person56 p1 = new Person56("sha",52);
System.out.println(p1);//我们可以看出来,这里打印出来的不是对象,而是打印的对象的toString方法的结果,所以和第11行结果相同
String s2 = p1.toString();
System.out.println(s2);
}
}
class Person56 {
String name;
int age;
Person56(String name ,int age){
this.name = name ;
this.age = age;
}
//重写这个方法,就要按照项目的实际需求进行重新编写
public String toString() {
return "Person[name=" + name + ",age=" + age +"]";
}
}

二、关于Object中的equals方法
1.Object中的equals方法:
public boolean equals(o2){
return (this == obj);//等号两边是引用类型,则比较内存地址,地址相同则返回true.反之,则返回false
}
//Object中的equals方法比较的是两个引用的内存地址。java对象中的equals方法的设计目的在于:判断两个对象是否一样。
2.举个例子
package com.bjpowernode.java_learning;
public class D56_2_equalsMethodAnalysis {
public static void main(String[] args) {
Object o1 = new Object();
Object o2 = new Object();
boolean b1 = o1.equals(o2);
System.out.println(b1);
Star56 s1 = new Star56(100,"xiaoming");
Star56 s2 = new Star56(100,"xiaoming");
System.out.println(s1.equals(s2));
//这样比较出来的是false,因为比较的是两个对象的内存地址,但是这样显然是不符合我们的预期
//其实我们想要比较的是两个对象里面的内容是不是一致的。于是我们重写
}
}
class Star56{
int id;
String name;
public Star56(int id,String name) {
this.id = id;
this.name = name;
}
}

三、源码:
D56_1_toStringMethodAnalysis,java
D56_2_equalsMethodAnalysis.java
地址:
https://github.com/ruigege66/Java/blob/master/D56_1_toStringMethodAnalysis,java
https://github.com/ruigege66/Java/blob/master/D56_2_equalsMethodAnalysis.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载56-toSting方法和equals方法的更多相关文章
- java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重
package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...
- 为什么要重写hashCode()方法和equals()方法及如何重写
我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...
- hashCode()方法和equals方法的重要性。
在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...
- java 中的set方法和get方法的理解
get的意思是获取,set的意思是设置. get方法和set方法是实现类的封装访问的很好的工具. 当类中的变量设为private 时,他的意思就是说,只能通过自身和子类的访问,但是对于别的其他的类来说 ...
- Java 重写hashCode 方法和equals方法
package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致) ...
- JAVA笔记7-Object类之toString方法和equals方法
位于rt.jar\java\lang\Object.class Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个).如果在类声明中未使用extends关键字指明其基类, ...
- 为什么要重写hashcode方法和equals方法
我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 /* * Copyright (c) 1994, 2 ...
随机推荐
- 【HTTP】402- 深入理解http2.0协议,看这篇就够了!
本文字数:3825字 预计阅读时间:20分钟 导读 http2.0是一种安全高效的下一代http传输协议.安全是因为http2.0建立在https协议的基础上,高效是因为它是通过二进制分帧来进行数据传 ...
- mysql5.x数据库文件导入mysql5.7数据库出错解决方法
由于mysql5.7 timestamp 类型不允许timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',创建表的是后会报异常 修改mysql5.7的配置文 ...
- 关于Java调用接入微信、支付宝支付提现
前言: 本篇文章介绍关于自己写的一个集成微信.支付宝的支付.提现等功能的介绍,本项目已在码云上进行开源,欢迎大家一起来进行改造,使进行更好的创新供大家使用:也有对应的pom文件坐标可以导入,因目前不知 ...
- VS2019 开发Django(一)------环境配置
导航:VS2019开发Django系列 缘起:学习是我一直在做的一件事情,但是,可怕的是不知道学习什么,然后止步不前,安于现状,曾经很长的一段时间,我是不知道学习什么,工作上的事情,其实是相对固定的, ...
- linux之寻找男人的帮助,man和info,
1.在linux下寻求帮助是一个很好的习惯,幸运的是系统提供了帮助的命令man和info,由于linux指令很多,记忆起来简直麻烦,比如以a开头的指令有100条,linux命令算起来得几千条,记忆却是 ...
- CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接
说明:在同一窗口打开链接,只要稍加改造就可以实现,这里实现的是在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接 gi ...
- HtEditor使用总结
最近在公司学习到ht编辑器的使用,关于使用方法上总结了一下,避免入坑.ht是做大屏数据可视化比较好的一款软件,不过多介绍,官网上有具体使用方法和展示样例,这里我整理一下我用的最多的功能. ##1.如何 ...
- 位域-isa指针
一.isa指针结构 union isa_t { isa_t() { } isa_t(uintptr_t value) : bits(value) { } Class cls; uintptr_t bi ...
- Autofac 泛型依赖注入
using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...
- 面试连环炮系列(九):为什么ConcurrentHashMap是线程安全的
为什么ConcurrentHashMap是线程安全的 JDK1.7中,ConcurrentHashMap使用的锁分段技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一 ...