Object类

  Object类是所有Java类的父类,其位于java.lang包中。任何Java对象,如果没有显示定义父类则它默认Object类作为父类。

  方法如下:

其中与线程相关的有5个方法: notify()、notifyAll()、wait()、wait(long timeout)、wait(long timeout,int nanos),  这些方法等介绍线程时在做解释。

下面来看看其他方法:

(1)equals(Object obj)方法
功能:
  Object类定义的equals方法用于判断某个指定的对象(调用equals方法的对象)与当前对象是否等价。
equals方法在非空对象引用上实现相等关系:
  自反性:对于任何非空引用值x, x.equals(x)都应返回true
  对称性:对于任何非空引用值x和y, 当且仅当y.equals(x)返回true时,x.equals(y)才返回true
  传递性:对于任何非空引用值x、y、z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)应返回true
  一致性:对于任何非空引用值x和y,多次调用x.equals(y)始终返回true或始终返回false.
  对于任何非空引用值x, x.equlas(null)都返回false
源代码:

 public boolean equals(Object obj) {
return (this == obj);
}

equals方法与"=="运算符的关系:
  (a)equals()方法只能比较引用类型; "=="可以比较引用类型及基本类型。
  (b)默认的equals()方法比较的是内存地址,基本等同于"==",但是对类File、String、Date及包装类来说 是比较的值而不是内存地址。
  (c)"=="进行比较的时候,引用类型数据比较的是引用,及内存地址;基本数据类型比较的是值。
覆盖equals方法:
  覆盖equals方法的一般步骤如下:
  (a)用==检查是否参数就是这个对象的引用
  (b)判断要比较的对象是否为null,如果是null,则返回false
  (c)用if(getClass() != obj.getClass())判断参数的类型是否正确
  (d)把参数转换成合适的类型
  (f)比较对象属性值是不是匹配
  下面是Student类重写equals方法来比较对象是否相等,一般euqals方法可以通过eclipse工具自动生成。

 public class Student {
private String id;
private String name;
private String age;
private String home;
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (home == null) {
if (other.home != null)
return false;
} else if (!home.equals(other.home))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}

一般来说,覆盖equals方法应该连带覆盖hashCode方法

(2)hashCode()方法
hashCode是按照一定的算法得到一个数值,是对象的散列码值。主要用在集合中实现快速查找等操作。
在java中对hashCode的规定如下:
  (a)在Java应用程序执行期间,在对同一个对象多次调用hashCode方法时,必须一致地返回相同的整数,前提是将对象进行equals比较时所用的信息没有被修改。
  (b)如果根据equals(object)方法,两个对象是相等的,那么对这两个对象中的每个对象调用hashCode方法都必须生成相同的整数结果。
  (c)如果根据equals(object)方法,两个对象不相等,那么对这两个对象中的仁一对象上调用hashCode方法不要求一定生成不同的整数结果。
  简单地说:如果两个对象equals为true,那么它们的hashCode值一定要相同;如果两个对象的hashCode相同,它们equals不一定为true.

下面是Student类重写hashCode方法,可以通过eclipse工具自动生成。

     @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((home == null) ? 0 : home.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

(3)toString()方法
  toString()方法是Object类中定义的另一个重要方法,其源码为:

 public String toString() {
  return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

方法的返回值是String类型,用于描述当前对象的有关信息。Object类中实现的toString()方法是返回当前对象的类型和内存地址信息,但在一些子类(如String,Date)中进行了重写,也可以根据需要在用户自定义类型中重写toString()方法,以返回需要的信息。

下面是Student类重写toString方法,可以通过eclipse工具自动生成。

     @Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", home=" + home + "]";
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

java常用类 --- Object的更多相关文章

  1. Java常用类object详解

    1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...

  2. Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...

  3. Java常用类-Object类

    一.java.lang.Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Obj ...

  4. java的eclipse操作和常用类Object的使用

    1.eclipse的快捷键: (1)alt + /   内容辅助. 如:main+alt + / 会出现完整的main方法. syso+alt+ / 会输出. 如编写某个方法时,只需写入方法名 + a ...

  5. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  6. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  7. Java常用类笔记(学习尚硅谷java基础教程)

    一.Java根类Object类1.toString()方法 1)以文本对象返回,故toString()的定义为public String toString() {} 2)默认的字符串输出是:包.类名@ ...

  8. Java常用类的使用

    Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...

  9. Java常用类之要点总结

    Java常用类之要点总结

随机推荐

  1. codeforces 723F : st-Spanning Tree

    Description There are n cities and m two-way roads in Berland, each road connects two cities. It is ...

  2. jQuery 效果 - 隐藏和显示

    $('...').hide();//隐藏 $('...').show();//显示 以上使用需要针对特定的功能单独使用,如果是混用,那么就要有标志位去实现,而通常两者更高级的一步到位实现: $('.. ...

  3. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  4. .Net和C#的理解

    .Net是一个微软出品的开发平台,不仅仅是适用于Windows操作系统,还适用于mono,Linux等等, .Net库包括两部分:部分库定义了一些基本类型.CTS(common Type System ...

  5. POJ 1330 Nearest Common Ancestors(Targin求LCA)

    传送门 Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26612   Ac ...

  6. 执行查询报: Incorrect key file for table ‘test’; try to repair it

    报错信息如下:程序没有错误,但执行会报错,错误定在执行语句上 查了一下资料 网上的解决办法,亲试可用: mysql> use news;Database changedmysql> rep ...

  7. 【Alpha版本】冲刺-Day3

    队伍:606notconnected 会议时间:11月11日 会议总结 张斯巍(433) 今天安排:个人信息界面设计 完成度:100% 明天计划:个人信息界面设计 遇到的问题:ps掌握的还不够熟练,导 ...

  8. UVA12034Race(DP)

    题目链接 题意:A.B两人赛马,最终名次有三种可能:并列第一:A第一,B第二:B第一,A第二.输入n,求 n 人赛马时最终名次的可能,结果对10056取余 分析:对于 i 匹马来说,有 i 中可能,设 ...

  9. 添加css的方式:link与@import区别

    如何在html中添加css? 在html中设置css共有三种方式,分别是: 行内式 内嵌式 导入式-link 导入式-@import 1.行内式.即在html标签中的style属性中设置css,值得注 ...

  10. C#编写滤镜 图片色调取反效果(Invert)

    转自:http://www.it165.net/pro/html/201208/3469.html Invert 英文叫做颠倒.. 原理很简单也就是 将 255- 原本的值.. 这样 0(黑) 就会变 ...