JAVA笔记十一(44-45 equals函数、hashcode()与toString())

四十四、equals函数的作用

1.equals函数在什么地方

包含在Object类中,Object是所有函数的父类,所以所有的类都包含equals函数。

2.equals函数的作用

“==”操作符的作用:对于对象,==表示两个引用指向同一个对象。

equals的作用,是比较两个对象是否相同。

在通常情况下,对象内容相同的条件:1)对象的类型相同(可以使用instanceof操作符进行比较); 2)两个对象的成员变量的值完全相同;

3.复写equals函数的方法

class User{
	String name;
	int age;
	
	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.name.equals(u.name) && this.age == u.age){
				return true;
				}
			else{
			return false;
			}
		}
		else {
			return false;
		}
	}
}

class Test{
	public static void main(String[] args){
		User a = new User("zhangsan",20);
		User b = new User("lisi",20);
		User c = a;
		User d = new User("zhangsan",20);
		
		//比较两个引用是否指向同一个对象。
		System.out.println(a == c);
		System.out.println(a == d);
		
		//比较两个引用指向的对象的内容是否相等。
		System.out.println(a.equals(c));
		System.out.println(a.equals(d));
		System.out.println(a.equals(b));
	}
}
运行结果:

实际开发过程中,通常利用开发工具直接生成复写equals方法的代码。

四十五、hashcode()与toString()

1、hashCode()的作用

什么是Hash算法:任意长度的数据,通过hash算法,得到一个唯一的散列值。(应用:加密/数据加密)

用于存储数据,用散列值与数据存储位置建立关联,寻找数据时,可以根据散列值找到数据。提高查找效率。

深入了解,多读一些资料。算法与数据结构。

2.hashCode()的实现方法

hashCode是Object中的函数,所有类都有hashCode()方法。放回值为整型,叫做哈希码。

在sun公司的规定中,如果两个对象用equals相比,是相等的,那么它们用hashCode()计算出来的哈希码也是一样的。

如果

返回值为一个整型。


3.toString()的作用

toString()是Object中的函数,所有类都有toString函数。

作用:把一个无论什么类型的对象,转换成一个String字符串,使程序有更好的可读性。便于开发者调试。

4.toString()的实现方法

class User{
	String name;
	int age;
	
	User(){
	}
	
	User(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String toString(){
		String result ="age:"+ age + ",name:" + name;//把成员函数的值打印出来。
		return result;
		
	}
}

import java.util.*;

class Test{
	public static void main(String[] args){
	User u = new User("zhangsan",20);
	
	System.out.println(u);//  打印对象时,先调用toString方法,然后把返回的值打印出来。
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值