Java equals和toString用法

1、代码

User.java

public class User{
	String name;
	int age;

        public User(String name,int age){
		this.name = name;
		this.age = age;
	}

	public boolean equals(Object obj){
		if(this == obj)
			return true;

		boolean b = obj instanceof User;
		if(b){
			User u = (User)obj;
			if(this.age == u.age && this.name.equals(u.name)){//int型可以直接用==判断是否相等,String型复写了equals,所以要用equals去比较是否相等
				return  true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}

	public String toString(){
		return "age="+age+",name="+name;
	}
}

Main.java

public class Main{

	public static void main(String args[]){

		User u1 = new User("lisi",21);
		User u2 = new User("lisi",21);
		User u3 = u2;
		System.out.println(u1.equals(u2));//会调用equals函数来判断,如果没有复写equals函数,默认的equals函数其实就是==
		System.out.println(u1==u2);//只会判断两者指向对象的地址是否相同,此时不同
		System.out.println(u3==u2);//只会判断两个指向对象的地址是否相同,此时相同
		System.out.println(u1);//调用toString
	}
}

2、结果

3、解释

判断非引用类型,比如int型,我们可以直接用==。

判断引用类型,==判断是它们所指向对象的地址是不是相同。

判断引用类型,要复写object类的equals方法。

Java equals和toString用法

时间: 2024-10-13 08:26:24

Java equals和toString用法的相关文章

【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 System.out.println(str1==str2); 4 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一

JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Object是什么呢?我们可以翻阅JAVA API文档看他的介绍 上面介绍说,object是类层次结构的根类,也就是超类 Object:是所有对象的直接后者间继承关系,传说中的老祖宗,你父亲还有父亲,你父亲的父亲还有父亲是爷爷,这是继承关系,但是你的祖宗却只有一位,该类中定义的肯定是所有对象都具备的功能

关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("如今时间

java成神之——java中string的用法

java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取指定位置字符和replace的使用 StringBuffer的使用 字符串转换 基本类型的转换 添加字符编码 Base64的编码和解码 结语 java中String的用法 String基本用法 字符串一旦创建在堆中就不可变 字符串声明 String str = "你好"; String s

大数运算之 Java BigInteger 的基本用法

大数运算之 Java BigInteger 的基本用法 在程序设计竞赛中会遇到高精度运算的问题,C++没有高精度运算,只能手动模拟人工运算,手动实现高精度,而 java.math 包中的 BigInteger 提供了高精度的基本运算,因此竞赛中常用 Java 解决高精度运算问题. 当然如果比赛支持 python 就当我没说. BigInteger 对象的创建 BigInteger 类在 java.math.BigInteger 包中,首先引用该包. import java.math.BigInt

Java enum(枚举)的用法详解(转)

用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. enum Signal { GREEN, YELLOW, RED } pu

java中stringBuilder的用法

java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的

equals hashcode toString 方法的使用

package com.wu.toString; import java.util.Date; import java.util.GregorianCalendar; /** * * @author wuyong * @email [email protected] * @date2016年9月1日下午4:39:09 * 雇员类 */ class Employee { private String name; private double salary;//薪水 private Date hir

Java equals的一个坑

public class StringEqualsObject { public static void main(String[] args) { String name="Tom"; Person p=new Person(name); System.out.println(name.equals(p)); System.out.println("p.toString():"+name.equals(p.toString())); System.out.prin