一、关于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方法的更多相关文章

  1. 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 ...

  2. 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 ...

  3. java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重

    package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...

  4. 为什么要重写hashCode()方法和equals()方法及如何重写

    我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...

  5. hashCode()方法和equals方法的重要性。

    在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...

  6. java 中的set方法和get方法的理解

    get的意思是获取,set的意思是设置. get方法和set方法是实现类的封装访问的很好的工具. 当类中的变量设为private 时,他的意思就是说,只能通过自身和子类的访问,但是对于别的其他的类来说 ...

  7. Java 重写hashCode 方法和equals方法

    package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致) ...

  8. JAVA笔记7-Object类之toString方法和equals方法

    位于rt.jar\java\lang\Object.class Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个).如果在类声明中未使用extends关键字指明其基类, ...

  9. 为什么要重写hashcode方法和equals方法

    我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 /* * Copyright (c) 1994, 2 ...

随机推荐

  1. hdu 1052 Tian Ji -- The Horse Racing (田忌赛马)

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  2. es6 数组去重

    方法一: var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2]; var arr2 = arr.filter((x, index,se ...

  3. 字符串的扩展(ES6)

    文章目录 字符串的扩展 1. 字符的Unicode表示法 2. codePointAt() 3. String.fromCodePoint() 4. 字符串的遍历器接口 5. at()(提案) 6. ...

  4. Linux下搭建HttpRunnerManager接口测试平台

    前言 之前在学习HttpRunner时,我们都是把用例写在 YAML/JSON 中进行维护,使用起来也很方便.其实,现在有不少大佬都喜欢开发自动化测试平台,比如我们今天要搭建的HttpRunnerMa ...

  5. [NOIP模拟]文本编辑器 题解

    bsoj5089 文本编辑器 /* 题意描述 九发明了一个完美的文本编辑器.这个编辑器拥有两个光标(cursor),所以九能够同时在两处地方插入和删除文本.这个编辑器除了正常的编辑功能以外,还有一些只 ...

  6. android只设置部分控件随着软键盘的出现而腾出空间

    转载请标明出处:https://www.cnblogs.com/tangZH/p/12013685.html 在项目过程中,出现了一个需求,软键盘要顶起部分控件,而另一部分控件不动. 关于这种需求,我 ...

  7. Android 状态栏通知 Notification

    private NotificationManager manager; private Notification.Builder builder; @Override protected void ...

  8. zip,rar及linux下常用的压缩格式

    日常操作中我们经常使用到文件压缩操作,其使用一些特定的算法来减小文件的大小,可以提高传输数据时的速率和减少数据在一些存储机制上占有的空间大小,实现空间利用最大化. 比如:如果你想通过邮箱发送一个文件夹 ...

  9. centos7 nginx 配置

    1.下载nginx 官方下载1.6.2 2.编译安装 [root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx ...

  10. 2019年Java面试题基础系列228道(2)

    21.描述一下 JVM 加载 class 文件的原理机制? JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的 Java 运行时系统组件,它 ...