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

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://www.cnblogs.com/zhuxiaopijingjing/p/12394050.html

时间: 2024-10-16 16:53:17

Java连载56-toSting方法和equals方法的相关文章

java 数组的 toString 方法和 equals 方法以及 java.lang.Object 对象的 toString 方法和 equals 方法

1 public class Test { 2 public static void main(String[] args) { 3 int[] a = {1, 2, 4, 6}; 4 int[] b = a; 5 int[] c = {1, 2, 4, 6}; 6 7 //下面这个方法打印的是a数组的引用地址 8 System.out.println(a.toString()); 9 //下面这个方法比较的是两个数组的引用是否相等 10 System.out.println("a.equals

JAVA 面向对象补充[toString方法和equals方法]

一.toString  方法 这里的toString  和 C#的To string 是两回事. JAVA中to string : Object类中都有一个to string() 方法,创建的每一个类都会继承这个方法,返回一个对象的String 表示. 代码: 注释代码后结果: 取消注释后结果: 二.equals方法

java课堂笔记------toString方法和equals方法

* 重写toString方法 * 当我们需要使用当前类的toString方法时,通常我们 * 就需要重写该方法.具体返回字符串的格式没有严格 * 要求,可根据将来实际开发中的需求而定.但通常反 * 回的字符串中应当包含当前类的属性值,以便了解当前 * 对象的信息. * 格式:(x,y) public String toString(){ return "(" + x + "," + y + ")"; } * 通常我们会重写一个类的equals方法

java为什么要重写hashCode方法和equals方法?

之前发布过一篇文章说的是关于 equals方法重写 http://www.cnblogs.com/aL0n4k/p/4777333.html 下面就hashCode方法发表一下本人的理解,仅供参考,交流. 在 关于java重写equals方法 已经提及说,比较2个对象的时候,要比较他们各自的属性. 那么重写hashCode方法是因为我们在接触到集合的时候,里面有个Set接口,他只能添加无序以及不重复的对象元素. 那有人会问,既然是这样我们直接用equals判断不就完了么? 实际上对Set集合而言

集合类hashCode()方法和equals()方法

1.散列码: Object中的HashCode方法会返回该对象的的内存真实地址的整数化表示,这个形象的不是真正抵制的整数值就是哈希码. 2.利用哈希码向集合中插入数据的顺序? 向HashSet中添加对象时,HashSet先通过该对象的HashCode()计算出相应的桶,然后再根据equals()方法找到相应的对象,如果容器中已存在该对象则不再添加,如果不存在,则添加进去. 3.什么时候重写hashCode()方法?         String和Integer这些Java自带的类都重写了hash

Java 重写hashCode 方法和equals方法

package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致),元素不可以重复 |---HashSet:底层数据结构是哈希表 | HashSet是如何保证元素唯一性呢? | 是通过两个方法来完成的 hashCode 和 equals来完成的 | 如果元素的hashCode值相同,才会判断 equals 是否为true | 如果hashCode值不相同,不会调用

Java 中正确使用 hashCode 和 equals 方法

在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hashCode()和equals()的用法 重写默认实现 使用Apache Commons Lang包重写hashCode()和equals() 需要注意记住的事情 当使用ORM的时候特别要注意的 hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的jav

详解equals()方法和hashCode()方法

前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.equals()和hashCode()都不是final方法,都可以被重写(overwrite). 本文介绍了2种方法在使用和重写时,一些需要注意的问题. 一.equal()方法 Object类中equals()方法实现如下: public boolean equals(Object obj) { return (this == obj); } 通过该实现

HashSet中存方用户自定义数据类型数据,重写equals方法和hashCode方法

import java.util.Set; import java.util.HashSet; public class SetTest { public static void main(String[] args) { /* *对于用户自定义类型的数据放在容器(Set)中 *务必重写equals和hashCode方法 *要不然stu1和stu2放在容器中,和认为是两个不同的元素 **/ //set中存放的元素是无序的 //set中存储的元素是不可以重复的(根据equals方法和hashCod