Java4Android(第44~45集)equals、hashCode、toString
来源:互联网 发布:nodejs php 性能对比 编辑:程序博客网 时间:2024/05/21 10:57
第44集 equals函数的作用
本集主要内容.
1. equals函数在什么地方.
2. equals函数的作用.
3. 复写equals函数的方法.
a. equals被包含在object中,object是所有类的父类. 所以所有类都继承了equals方法.
b. 双等号的作用,判断两个引用是否指向堆内存中的同一块地址.或者 是同一个对象.
equals函数的作用.是来比较两个对象的内容是否相等.
在通常情况下两个对象内容是否相等.要符合两个条件
a. 对象类型相同(可以使用instanceof操作符进行比较).
b. 两个对象成员变量的值完全相同.
所以,比较基本数据类型的成员变量用‘==’,比较引用类型的成员变量用equals .
第45集 java当中的hashCode()与toString()
hashCode() 与 toString() 同equals 方法一样,都被包含在object中.
1. 什么是hash算法.
任意长度数据 =====>(hash算法)====>散列值(固定长度)
简单说就是:输入一个任意长度的二进制数据,经过hash算法之后,得到一个固定长度唯一的散列。
哪怕是输入就变一个字节,得到的散列也大相径庭。而同一个输入,无论算多少遍,得到的都是相同的。
2. hash算法的特点
输入1 ===============>>散列值1
输入2 ===============>>散列值2
输入3 ===============>>散列值3
可以在输入值与散列值建立起一个对应关系,用于存贮数据。
可以把它理解为住宅的门牌号,这样通过散列值可以方便的找到输入值。
如果两个对象用 equals 方法比较为true,那么这两个对象分别调用 hashCode 方法,得到的值应该也是一样的。
所有的类都拥有hashCode()方法.都是object里面的.
hascCode()广泛用于类型框架.
代码:
System.out.println(u); 它会去执行user的toString方法。
本集主要内容.
1. equals函数在什么地方.
2. equals函数的作用.
3. 复写equals函数的方法.
a. equals被包含在object中,object是所有类的父类. 所以所有类都继承了equals方法.
b. 双等号的作用,判断两个引用是否指向堆内存中的同一块地址.或者 是同一个对象.
equals函数的作用.是来比较两个对象的内容是否相等.
在通常情况下两个对象内容是否相等.要符合两个条件
a. 对象类型相同(可以使用instanceof操作符进行比较).
b. 两个对象成员变量的值完全相同.
class User{ String name; int age; public boolean equals(Object obj){ if(this == obj){ return true; } boolean b = obj instanceof User; //判断obj是不是User类型 if(b){ User u = (User)obj; //obj向下转型为User类型 if(this.age == u.age && this.name.equals(u.name)){ return true; } else{ return false; } } else{ return false; } }}//*********************************************************************************************//class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = new User();u1.name = "zhangsan";u1.age = 12;u2.name = "lisi";u2.age = 12;u3.name = "zhangsan";u3.age = 12;System.out.println(u1.equals(u2));System.out.println(u1.equals(u3));//User u3 = u1;//boolean b1 = u1 == u2;//boolean b2 = u1 == u3;//System.out.println(b1);//System.out.println(b2); //boolean b1 = u1.equals(u2); //System.out.println(b1);}}this.name.equals(u.name) 这里的equals 是用name来调用的,name是String类型的。这里不再用‘==’ 是因为String是引用数据类型,而‘==’的作用是判断两个引用是否指向堆内存中的同一块地址,不是不需要指向同一块地址,只要内容是相同就可以。
所以,比较基本数据类型的成员变量用‘==’,比较引用类型的成员变量用equals .
第45集 java当中的hashCode()与toString()
hashCode() 与 toString() 同equals 方法一样,都被包含在object中.
1. 什么是hash算法.
任意长度数据 =====>(hash算法)====>散列值(固定长度)
简单说就是:输入一个任意长度的二进制数据,经过hash算法之后,得到一个固定长度唯一的散列。
哪怕是输入就变一个字节,得到的散列也大相径庭。而同一个输入,无论算多少遍,得到的都是相同的。
2. hash算法的特点
输入1 ===============>>散列值1
输入2 ===============>>散列值2
输入3 ===============>>散列值3
可以在输入值与散列值建立起一个对应关系,用于存贮数据。
可以把它理解为住宅的门牌号,这样通过散列值可以方便的找到输入值。
如果两个对象用 equals 方法比较为true,那么这两个对象分别调用 hashCode 方法,得到的值应该也是一样的。
所有的类都拥有hashCode()方法.都是object里面的.
hascCode()广泛用于类型框架.
代码:
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)){ return true; } else{ return false; } } else{ return false; } } public int hashCode(){ int result = 17; result = 31*result + age; result = 31*result + name.hashCode(); return result; } public String toString(){ String result = ""; result = result + "age:" +age +"," +"name:"+name; return result; } }//***************************************************************************//import java.util.*;class Test{ public static void main(String args[]){ User u = new User("zhangsan",20); //HashMap<User,String> map = new HashMap<User,String>(); //map.put(u,"abc"); //String s = map.get(new User("zhangsan",12)); //System.out.println(s); System.out.println(u); } }User u = new User("zhangsan",20);
System.out.println(u); 它会去执行user的toString方法。
0 0
- Java4Android(第44~45集)equals、hashCode、toString
- Java4Android学习十六 - equals()、hashCode()、toString()
- java4android第四十五集hashcode()与tostring()
- java4Android(24)hashCode()/toString()
- JAVA笔记十一(44-45 equals函数、hashcode()与toString())
- equals, hashCode,toString
- equals() 、 toString() 、 getClass() 、 hashCode()
- equals&&hashCode&&toString函数
- equals()、hashCode()、toString()
- equals hashcode toString
- java当中 hashCode()与 toString()两个函数(第45集)
- Object 类 equals toString hashCode
- equals、hashCode、toString 方法重写
- 《Java核心技术》第10版读书笔记之Chap5(3)——Object类及其equals、hashCode与toString方法
- Overriding toString(), hashCode() and equals() Methods
- 接口、Object类(toString(), equals(), hashCode())
- Java toString equals hashCode 方法的重写
- java继承中的 equals + hashCode+toString
- 北京邮电大学_2010计算机___考研计算机_复试上机
- ImageSwitcher的使用
- 拓展题 系列I之科普系列
- 快捷键
- MapReduce:超大机群上的简单数据处理
- Java4Android(第44~45集)equals、hashCode、toString
- 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题
- 浅谈Facebook的服务器架构(组图)
- 安卓用Intent在不同的Activity传递数据
- Google File System(中文翻译)
- 黑马程序员-黑马程序员训练营基础测试
- 分析算术表达式是否有效(间接递归的例子)
- Google's BigTable 原理 (翻译)
- Cocos2dx 3.0 正式版本开发环境搭建