Object类及其常用方法简介
https://www.cnblogs.com/wxywxy/p/6740277.html
Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。这里主要总结Object类中的三个常用方法:toString()、equals()、hashCode()。
1.取得对象信息的方法:toString()
该方法在打印对象时被调用,将对象信息变为字符串返回,默认输出对象地址。

1 class Student
2 {
3 String name = "Mary";
4 int age = 21;
5 }
6
7 public class Text{
8 public static void main(String[] args)
9 {
10 Student s = new Student();
11 System.out.println("姓名:"+s.name+",年龄:"+s.age);//输出对象属性
12 System.out.println(s);//直接输出对象信息
13 System.out.println(s.toString());//调用父类方法输出对象信息
14 }
15 }

输出结果:
姓名:Mary,年龄:21
ClassNotes.Student@15db9742
ClassNotes.Student@15db9742
上述结果看出编译器默认调用toString()方法输出对象,但输出的是对象的地址,我们并不能看懂它的意思。那么就要通过重写Object类的toString()方法来输出对象属性信息。

1 class Student
2 {
3 String name = "Mary";
4 int age = 21;
5 public String toString()
6 {
7 return "姓名:"+name+",年龄:"+age;
8 }
9 }

输出结果:姓名:Mary,年龄:21。这样对象信息就更加清晰了。
2.对象相等判断方法:equals()
该方法用于比较对象是否相等,而且此方法必须被重写。

1 class Student
2 {
3 String name;
4 int age;
5 public Student(String name,int age)
6 {
7 this.name=name;
8 this.age=age;
9 }
10 }
11
12 public class Text{
13 public static void main(String[] args)
14 {
15 Student s1 = new Student("Mary",21);
16 Student s2 = new Student("Mary",21);
17 System.out.println(s1.equals(s2));//输出一个boolean值
18 System.out.println(s1.equals(s2)?"s1和s2是同一个人":"s1和s2不是同一个人");//?:条件运算符
19 }
20 }

输出结果:s1和s2不是同一个人。
很明显输出的结果是错误的,因为equals()方法比较的是两个对象的地址,所以必须重写方法才能到达目的。

1 //重写父类(Object类)中的equals方法
2 public boolean equals(Object o)
3 {
4 boolean temp = true;
5 Student s1 = this;
6 if(o instanceof Object)
7 {
8 Student s2 = (Student)o;
9 if(!(s1.name.equals(s2.name)&&s1.age==s2.age))
10 {
11 temp = false;
12 }
13 }
14 else
15 {
16 temp = false;
17 }
18 return temp;//返回一个布尔值
19 }

上面的是书上的例子,不太好理解,我自己编了一个equals()方法,简单但不知道对不对:
***在Eclipse偶然发现一个快捷键,按住ctrl+/会注释当前行
3.对象签名:hashCode()
该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的.hashCode。

1 class Student
2 {
3 String name;
4 int age;
5 //重写父类(Object类)中的equals方法
6 public boolean equals()
7 {
8 boolean temp;
9 Student s1 = new Student();
10 s1.name="张三";s1.age=12;
11 Student s2 = new Student();
12 s2.name="张三";s2.age=12;
13 System.out.println("s1的哈希码:"+s1.hashCode());
14 System.out.println("s2的哈希码:"+s2.hashCode());
15 if((s1.name.equals(s2.name))&&(s1.age==s2.age))
16 {
17 temp = true;
18 }
19 else
20 {
21 temp = false;
22 }
23 return temp;
24 }
25 //重写hashCode()方法
26 public int hashCode()
27 {
28 return age*(name.hashCode());
29 }
30 }
31
32 public class Text{
33 public static void main(String[] args)
34 {
35 Student s3 = new Student();
36 System.out.println(s3.equals()?"s1和s2是同一人":"s1和s2不是同一人");
37 }
38 }

输出结果:
s1的哈希码:9298668
s2的哈希码:9298668
s1和s2是同一人
Object类及其常用方法简介的更多相关文章
- 【转载】JAVA基础复习与总结<三> Object类的常用方法
Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类.这里主要总结Object类中的三个常用方法:toString().equ ...
- Object类和常用方法
Object类是java语言的根类,要么是一个类的直接父类,要么就是一个类的间接父类.所有对象(包括数组)都实现这个类的方法. 引用数据类型:类/接口/数组,引用数据类型又称之位对象类,所谓的数组变量 ...
- Object类的常用方法
Object类是Java中所有类的始祖.如果没有明确的指定继承,则默认继承Object类.在Java中除了基本类型外都是Object类型的对象,包括数组. 1)equals方法 Object: pub ...
- Eclipse的使用与Oblect类的常用方法_DAY11
一.Java开发工具的使用 A:notepad windows自带的记事本. B:高级记事本 Editplus Notepad++ UE sublime2 C:集成开发工具(IDE) 开发和运行. E ...
- Java 常用对象-Object类
2017-10-31 23:42:08 Object类:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 或者说,每个类都直接或者间 ...
- 菜鸡的Java笔记 Object 类
Object 类 Object类 的主要作用 Object 类的常用方法 内容 虽然有了对象的向上转型,可以解决了参数的统一问题,但是 ...
- 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类
1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...
- object类的equals方法简介 & String类重写equals方法
object类中equals方法源码如下所示 public boolean equals(Object obj) { return this == obj; } Object中的equals方法是直接 ...
- AJPFX关于Java Object类常用方法小总结
java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...
随机推荐
- JavaScript 逗号操作符
让我们从一个有趣的微博开始吧. 末尾的c是优先级最低的逗号操作符.逗号操作符是操作符优先级的最后一行,并且很少有文章记录,它隐藏着它的锋芒.它可能不是JavaScript强势操作符,但是我喜欢它.它简 ...
- hdu2063 二分图匹配,匈牙利算法
#include <stdio.h> #include <string.h> int n1,n2,m,ans; ]; //记录V2中的点匹配的点的编号 ]; //记录V2中的每 ...
- EasyUI 加载Tree
function LoadTree(result) { mainMenu = $('#mainMenu').tree({ url: "/ajax/GetTreeJson.ashx" ...
- tab栏切换效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- xtrabackup实现全量备份和增量备份
mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/i ...
- SPOJ GSS6 Can you answer these queries VI ——Splay
[题目分析] 增加了插入和删除. 直接用Splay维护就好辣! 写了一个晚上,(码力不精),最后发现更新写挂了 [代码] #include <cstdio> #include <cs ...
- POJ 1860: Currency Exchange 【SPFA】
套汇问题,从源点做SPFA,如果有一个点入队次数大于v次(v表示点的个数)则图中存在负权回路,能够套汇,如果不存在负权回路,则判断下源点到自身的最长路是否大于自身,使用SPFA时松弛操作需要做调整 # ...
- 常州模拟赛d5t2 mogician
分析:一个暴力的思想是枚举g,然后枚举每个数ai,看能不能符合要求,这样复杂度是O(nA)的,直接T掉了.也没什么其他的办法了,在暴力的基础上优化一下,优化的关键是要如何快速统计出不满足要求的数的个数 ...
- AC日记——接苹果 洛谷 P2690
题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵树上都长满了苹果.奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果 从树上落下.但是,由于 ...
- AC日记——[USACO1.5]数字三角形 Number Triangles 洛谷 P1216
题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...