Java学习笔记之Object常用方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java学习笔记之Object常用方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2636字,纯文字阅读大概需要4分钟。
内容图文
![Java学习笔记之Object常用方法](/upload/InfoBanner/zyjiaocheng/689/c6d0abb9a0704acab0e49d9c17291083.jpg)
Object:万类之祖
== : 比较的是是否是同一个对象,比较的是地址
equals: 是Object里面的方法,默认的是==,比较的是地址,但在String类型里重写为比较内容
一般我们在设计一个类中,需要重写父类的equals方法,需要遵照以下几个规则设计:
- 自反性(x.equals(x)必须返回true);
- 对称性(x.equals(y)返回true时,y.equals(x)也必须返回true);
- 传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true);
- 一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值);
- 非空性(对于任何非null值的引用x,x.equals(null)必须返回false)。
1 String s = "seven" ; 2 String s1 = "seven"; 3 System.out.println(s == s1); //返回false 4 System.out.println(s.equals(s2));//返回true
hashcode : 哈希码。 native本地方法(C、C++实现),操作系统实现逻辑,把结果返还给我们。把对象的内存地址经过算法得出的一个int。
为什么重写equals必须重写hashcode?
以下为重写equals和hashcode方法的源码,建议自动生成
1 @Override 2 public int hashCode() { 3 final int prime = 31; 4 int result = 1; 5 result = prime * result + ((name == null) ? 0 : name.hashCode()); 6 return result; 7 } 8 @Override 9 public boolean equals(Object obj) { 10 if (this == obj) 11 return true; 12 if (obj == null) 13 return false; 14 if (getClass() != obj.getClass()) 15 return false; 16 Person other = (Person) obj; 17 if (name == null) { 18 if (other.name != null) 19 return false; 20 } else if (!name.equals(other.name)) 21 return false; 22 return true; 23 }
现有两个对象
1 Student s1=new Student("小明",18); 2 3 Student s2=new Student("小明",18);
此时s1.equals(s2)返回true,但如果不重写hashcode,Object默认的hashcode将对象的内存地址经过哈希算法返回给我们一个int,就违反了两个对象相等,hashcode一定相等的规定
关于hashcode的规定:
- 两个对象相等,hashcode一定相等
- 两个对象不等,hashcode不一定不等
- hashcode相等,两个对象不一定相等("Aa"、"BB")
- hashcode不等,两个对象一定不等
toString : 把引用数据类型转换成字符串。直接打印一个引用数据类型的对象则默认调用这个对象动态toString方法。
finalize : 里面的逻辑会在当前对象被垃圾回收器回收的时候执行。
clone:Object默认的方法clone()实现的是浅拷贝
下面实现一个浅拷贝的实例,首先实现接口Cloneable并覆写方法
1 public class Person implements Cloneable{ 2 3 @Override 4 public Object clone() throws CloneNotSupportedException 5 { 6 Object object = super.clone(); 7 return object; 8 } 9 }
然后可以调用clone()方法,下面代码也展示了两种创建对象的方法1,new 2,clone()
1 Person p1=new Person("张三",11); 2 Person p2=(Person)p1.clone();
内容总结
以上是互联网集市为您收集整理的Java学习笔记之Object常用方法全部内容,希望文章能够帮你解决Java学习笔记之Object常用方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。