欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java连载56-toSting方法和equals方法

程序员文章站 2022-04-10 23:34:10
一、关于object中的toString​方法: 1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式。 2.在现实的开发过程中,Object里面的toString方法已经不够用了,因为Object的toString方法实现​的结果不满意。Object中 ......

一、关于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 +"]";

  }

}

​

Java连载56-toSting方法和equals方法

二、关于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;

  }

}

​

Java连载56-toSting方法和equals方法

三、源码:

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方法