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 ...
随机推荐
- Day 03 Python 基础
目录 Pycharm 的使用 设置 快捷键 变量 什么是变量 定义变量 变量名的命名规则 变量名的两种命名方式 注释 快捷键(快速注释) 单行注释 多行注释 注释的作用 Turtle库的使用 Pych ...
- 【JS】328- 8个你不知道的DOM功能
最近一直在关注工具,从 React 和 npm-install-everything 中休息一下,看看一些原生的 DOM 和 Web API 的功能,他们可以在没有任何依赖库的浏览器中直接运行. 这篇 ...
- Java_计算1-100的和,奇数和
public class Work1{ public static void main(String[] args){ // 定义和并赋值 int sum = 0; for(int i = 1;i & ...
- Vue中slot插槽的使用
- 3个Spring Boot核心注解,你知道几个?
Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...
- Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?
Spring Boot 打成的 jar 和普通的 jar 有什么区别 ? Spring Boot 打成的 jar Spring Boot的项目终止以jar包的形式进行打包,这种jar包可以通过可以通过 ...
- springmvc源码学习
1.springmvc运行流程 流程图是直接在百度图片中找的一张 >.前台发送请求,请求会首先通过DispatcherServlet进行url的匹配;如果匹配不到,看是否配置<mvc: ...
- vue路由基础总结
1.创建项目 为了练习路由 这里没有选择路由 就选了Bable 自己一步一步的配置 加深印象. 然后下载路由 npm install vue-router --save 2.基础配置 src文件下新建 ...
- WPF特点
前言:为什么要学习WPF呢?因为随着现阶段硬件技术的升级以及客户对体验的要求越来越高,传统的GDI和USERS(或者是GDI+.USERS)已经不能满足这个需求,因此,WPF技术应运而生. WPF的特 ...
- Xamarin.Forms 界面布局
<!--margin表示控件相对StackLayout的位置是设置组件之间的距离,或者距离父组件边缘的距离, 他的四个值是左边距,上边距,右边距,下边距 --> <!- ...