java学习中,object 对象的使用(toString、equals、hashCode)(java 学习中的小记录)

java学习中,object 对象的使用(java 学习中的小记录)作者:王可利(Star·星星)

object 对象(参考API学习

重点掌握三个方法:

1.toString 返回该对象的字符串表示。

2.equals(object obj)指示其他某个对象是否与这个对象相等。

3.hashCode() 返回对象的哈希码。

详见代码的注释分析(一个是Person类重写方法,一个是Star类使用方法)

Star类代码:

 1 package study;
 2
 3 public class star {
 4     public static void main(String[] args) {
 5
 6         //创建object对象
 7         Object o = new Object();
 8
 9         //1.toString
10         String str = o.toString();
11         System.out.println(str);//[email protected]  打印的是类的全名+地址
12         System.out.println(o);//[email protected]
13         //println(object o) 内部实现应该是 o.toString
14         //Ctrl + 鼠标左键看源码    ,源码的包是 src压缩包 jdk里面
15
16         //需求:有一个Person类   有两个属性name、age,现在想要在打印Person对象的时候直接输出name和age。
17         Person p = new Person("星星",12);
18         System.out.println(p);
19         //打印上面的类的全名+地址 没有什么意义
20         //一般在类中都会重写toString方法。
21
22         //2.equals :用来比较两个对象 是否是同一个对象,实际上是比较两个对象的地址值。
23         Object o1 = new Object();
24         Object o2 = new Object();
25         Object o3 = o1;
26         System.out.println(o1.equals(o2));//false
27         System.out.println(o1.equals(o3));//true
28
29         Person p1 = new Person("小星星", 15);
30         Person p2 = new Person("小星星", 15);
31         //描述的就是一个对象,但是内存中是两个对象。
32         //需求equals来比较,如果我描述的是同一个对象就打印true,否则false
33         //重写equals方法
34         System.out.println(p1.equals(p2));
35
36         //Api 里面当此方法被重写时,通常 有必要重写hashCode方法,以维护hashCode方法的常规协定,该协定声明相等的对象必须要有相等的哈希码
37         System.out.println(p1.hashCode());
38         System.out.println(p2.hashCode());
39    }
40 }

Person类代码:

 1 package study;
 2
 3 import javax.print.attribute.HashAttributeSet;
 4
 5 public class Person {
 6     String name;
 7     int age;
 8     public Person(String name,int age) {
 9         this.name = name;
10         this.age = age;
11     }
12
13     //重写toSting方法
14     @Override
15     public String toString() {
16         // TODO Auto-generated method stub
17
18         return "name  = "+name+" age = "+age;
19     }
20
21
22     //重写equals方法
23     @Override
24     public boolean equals(Object obj) {
25         // TODO Auto-generated method stub
26         Person p = null;
27         if (obj instanceof Person) {
28             //多态需要强转,父类不能访问子类特有的属性
29             p =(Person)obj;
30             if (p.name.equals(this.name)) {
31                 return true;//名字一样是对的
32             }else{
33                 return false;//名字不一样不是一个对象
34             }
35         }else{
36         return false;//不是这个类是错的
37     }
38 }
39   //重写哈希码 hashCode
40     @Override
41     public int hashCode() {
42
43         return this.name.hashCode();
44     }
45 }
46      
时间: 2024-08-02 02:50:57

java学习中,object 对象的使用(toString、equals、hashCode)(java 学习中的小记录)的相关文章

Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?

Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap.Hashtable哈希表存取对象的使用效率. 关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:"JVM根据某种策略生成的",那么这种策略到底是什么呢?我有一个毛病,遇到这种含糊其辞的东西,就想探个究竟,所以,本文就将hashCode()本

equals(),hashcode(),克隆学习心得

equals(),hashcode(),克隆学习心得 其实在开发时候,很少去重写equals(),hashCode()方法,但是有些时候业务需要还是要重写. 注意: 重写equals()方法一定要重写hashCode()方法. notes: java中两个对象的比较,首先查看的就是一个对象的hashCode,可以把hashCode理解为索引,通过索引可以找到其对应下的内容,可能会有多个. 如果说两个对象的hashCode都不相等,那可以肯定这个对象不同. equals() 相等的两个对象,其ha

js 中object对象的操作

n = object对象 for(var p in n){ console.log(p);// 取得是key值 console.log(n[p]);//取得是value值 } 继之前js中数组的常用方法之后,Object的常用方法和属性也是很常用的.故,总结之. 一.属性 Object自带一个prototype的属性,即Object.prototype,Object.prototype本身也是一个对象,也会有一些属性和方法.如下: 1.属性 Object.prototype.writable:默

JavaScript中Object对象

Object对象是提供所有JavaScript对象通用的功能.使用方法: obj = new Object([value]) 其中obj是必选项.要赋值为 Object 对象的变量名.www.82676666.com value是可选项.任意一种 JScript 基本数据类型.(Number.Boolean.或 String.)如果 value 为一个对象,返回不作改动的该对象.如果 value 为 null.undefined,或者没有给出,则产生没有内容的对象. Object 对象被包含在所

JSON 学习开发 object 对象

JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"value/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/

Object类中的toString(),equals(), hashCode()方法之间的关系

1.在没有重写之前: 1) toString()方法返回的是对象的:Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符"@"和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())  比如:[email protected] 2) equals():对于任何非空引用值 x 和 y

关于js中object对象的prototype

我们都有一个误区,就是认为形成 Javascript 对象的prototype chain 的 prototype 就是一个名字为 prototype 的属性,而且是可以访问的.其实,Javascript 的 prototype 和 名字为 prototype 的属性在一开始一点儿关系都没有,是两个不同的事物. var Richard = new Object(); alert(typeof(Richard.prototype));  //undefined var Richard = new

Java中Object对象有哪些方法

一,所有方法 1. getClass() 2. hashCode()3. equals()4. toString()5. clone()6. wait()...7. notify()8. notifyAll()9. finalize() 二,每个方法详解 protected Object clone()创建并返回此对象的一个副本.boolean equals(Object obj)指示其他某个对象是否与此对象“相等”.protected void finalize()当垃圾回收器确定不存在对该对

jquery中object对象循环遍历的方法

一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很熟练!在这里我简单介绍一下! 案例 我们看如下对象: ? 1 2 3 4 5 6 7 8 9 var data={   张三:69,   李四:72,   王五:90,   二麻子:88,   前端博客:100,   haorooms : 98,   王大壮:99 } 假如上面是后台返回的一个key

在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式

设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中.MySQL和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取.但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了 <insert id="add" parameterType="Stud