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 ...
随机推荐
- 垂直方向margin重叠原因与解决方法
参考博客:https://blog.csdn.net/weixin_33743661/article/details/88755435
- 14个Java并发容器,你用过几个?
作者:acupt 前言 不考虑多线程并发的情况下,容器类一般使用ArrayList.HashMap等线程不安全的类,效率更高.在并发场景下,常会用到ConcurrentHashMap.ArrayBlo ...
- 1、采用SD启动盘bootingLinux
一.准备条件 1.Arrow Sockit 开发板: 2.主机:可以是Linux系统,也可以是windows系统: 3.可以让主机识别的SD卡,不管是用读卡器还是用主机上的卡槽,内存4G以上 二.创建 ...
- 2016/10/13 oracle中的round()
语法: ROUND(number,num_digits) 其中Number是需要进行四舍五入的数字:Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍 ...
- 【SHOI 2007】善意的投票
Problem Description 幼儿园里有 \(n\) 个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾 ...
- .NET Core的JWT认证的学习
今天学习下JWT,遇到了两个坑爹问题,这里记录下.在 ASP.NET Core 中,授权的设置方式有两种,可以使用角色,也可以使用策略,这里也将简单举例角色.策略的使用. JWT这里不做介绍,如果想了 ...
- vue & nodejs jwt 的基于token身份验证
现在比较流行的验证方式,是带着token的登录验证 原理 1. 登陆时,客户端发送用户名密码 2. 服务端验证用户名密码是否正确,校验通过就会生成一个有时效的token串,发送给客户端 3. 客户端储 ...
- 林克的小本本之——记一些基础的linux命令
查看shell cat /etc/shells 查看系统支持的shell echo $SHELL 查看目前正在使用的shell 快捷键 Ctrl+a 跳到行首 Ctrl+e 跳到行尾 Ctrl+u 删 ...
- 一文解读Docker (转)
最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料.本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学 ...
- 【杭研大咖说】温正湖:6年,从不会写SQL到数据库专家
他是业界主流数据库技术会议的明星讲师,开源社区各种分享活动的活跃分子:他累计申请了10多个技术发明专利,已授权8个:他近一年发布60多篇高质量技术博客文章,阅读量数十万:他和团队对MyRocks的优化 ...