java中equals与hashCode还有tostring方法学习记录

package javas.fristdome01;

import org.testng.annotations.Test;

class Person {

private String name;

private int age;

Person() {

}

Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

/**

* 如果不从写tostring方法就会生成hascode

* toString();表示对象的字符串描述

*

*/

@Override

public String toString() {

// TODO Auto-generated method stub

return "姓名:"+this.getName() + ".年龄"+this.getAge();

}

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

if(obj instanceof Person)

{

Person p = (Person)obj;

if(this.getName().equals(p.getName())&&(this.getAge()==p.getAge()))

{

return true;

}else

{

return false;

}

}else

{

return false;

}

}

@Override

public int hashCode() {

// TODO Auto-generated method stub

return this.getName().hashCode()+this.getAge();

}

}

public class ObjcetDome {

@Test

public void tst()

{

Person p1 = new Person("张山",20);

System.out.println(p1);   //输出16进制

Person p2 = new Person("张山",20);

System.out.println("p1的对象的hasCode:"+p1.hashCode());//输出是十进制数据

System.out.println("p1的对象的hasCode:"+p2.hashCode());//输出是十进制数据

System.out.println("-----------------------");

System.out.println(p1 == p2);

System.out.println("两个对象是否相等:"+p1.equals(p2));

}

}

/**前置条件不重写toString()方法

* Person p1 = new Person("张山",20);

System.out.println(p1);

* [email protected] --这是hascode

* 如果两个对象equals相同,他们的hashcod是相同的

* [email protected]  --输出16进制

p1的对象的hasCode1585787493  --输出是十进制数据

*

* equals 判断内容是否相等  ..默认是判断hasCode是否想等

* 如果重写equals,必须还有重写hashCode方法

*

*

* */

=======================

姓名:张山.年龄20

p1的对象的hasCode:778597

p1的对象的hasCode:778597

-----------------------

false

两个对象是否相等:true

PASSED: tst

时间: 2024-10-31 20:37:14

java中equals与hashCode还有tostring方法学习记录的相关文章

Java:验证在类继承过程中equals()、 hashcode()、toString()方法的使用

以下通过实际例子对类创建过程汇中常用的equals().hashcode().toString()方法进行展示,三个方法的创建过程具有通用性,在项目中可直接改写. //通过超类Employee和其子类Manager ,验证在类继承过程中equals().hashcode().toString()方法的使用.package equals;public class EqualsTest{    public static void main(String[] args){        Employ

Java中equals和hashcode的区别?

Java中equals和hashcode方法是在Object对象中的,所以每个对象都有这两个方法,大多数时候我们为了实现特定需求需要重写这两个方法 equals和hashcode方法常用在同一个类中用于比较,尤其是在set集合中比较元素是否重复 equals方法返回true的两个对象,hashcode一定相同 hashcode相同的两个对象,equals方法不一定返回true 原文地址:https://www.cnblogs.com/qf123/p/8671141.html

Java记录 -57- Object的equals、hashcode和toString方法

Object的hashCode方法是最基础的,equals和toString方法都间接的使用了hashCode方法. 一般情况下,我们在重写一个类的equals方法时,都会连带重写hashCode方法.IDE工具eclipse给我们提供了快捷的重写equals和hashCode的方法,而不是其中一个,更说明了这个两个方法一般都会一块进行重写. Object的equals方法: public boolean equals(Object obj) {     return (this == obj)

java中equals,hashcode和==的区别

1.== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.引用类型(类.接口.数组) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. 对象是放在堆中的,栈中存放的是对象的引用(地址).由此可见'=='是对栈中

Java中equals,hashcode,==的区别

==  :比较java栈局部变量表中变量的地址或值是否相等. equals : 比较变量的地址在java堆中引用对象是否为同一个对象. hashcode : 通过对象在JVM内存中的存储地址通过特定算法返回一个hash值,主要是配合HashSet HashMap进行增加.删除等. public native int hashCode(); 原文地址:https://www.cnblogs.com/JimKing/p/9536878.html

【JAVA】Java 异常中e的getMessage()和toString()方法的异同

参考链接 CSDN: Java 异常中e的getMessage()和toString()方法的异同 示例代码1: public class TestInfo { ????private static String str =null; ????public static void main(String[] args) { ????????System.out.println("test exception"); ????????try { ????????????if(str.equ

java中常用的字符串的截取方法

java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3.getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target

java中获取日期和时间的方法总结

1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); date.getTime() ; 还有一种方式,使用 System.currentTimeMillis() ;都是得到一个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数 一.获取当前时间,   格式为:   yyyy-mm-dd   hh-mm

java中equals和==的区别 (转)

java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.  ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 一.String中