java中的object类
在Java中,任何一个类都扩展来自Object类。当没有为某一个类定义父类时,Java会自动定义Object类为其父类。
object类的一些常用方法:
(1)public String toString()
Object类定义了toString()方法,打印输出对象所属的类名和散列码。当需要字符串的地方,系统自动调用该对象的toString()方法。object定义了自己的toString()方法,但是建议自己重写:
//object定义的toString()方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
} //范例1:
Point p = new Point ( 10, 20 ) ;
String message = "The current position is " + p ; //调用p.toString //范例2:
classType a = new classType();
System.Out.println(a);//其实是自动调用了a对象的toString()方法
(2)public native int hashCode()
返回对象的Hash码。Hash码是标志对象的唯一值,Hash码相同的对象是同一对象。散列码(hash code)是由对象导出的一个整型值。散列码是没有规律的,如果x和y是两个不同的对象,那x.hashCode()与y.hashCode()一般是不相同的。
(3)三个函数用于控制线程
public final native void notify();
public final native void notifyAll();
public final native void wait();
native型方法指由C++语言编写的方法,Java解释器对其进行转义后才执行。
(4)“==”与equals()
"==" 一般用于基本数据类型比较。若用作两个引用对象比较,仅当引用变量引用同一个对象时,才返回true,否则false。object类的实现与“==”其实就是一个意思,建议重写。
//Object类方法定义: public boolean equals(Object obj)
{
return (this == obj);
} //范例1:
Dog d1 = new Dog(1,2);
Dog d2 = new Dog(1,2);
d1 == d2;//false,虽然两者的值相等,但是d1和d2分别指向的不同对象
d1.equals(d2);//false,object中的equals实现本质就是“==”,所以结果与上面一样 //范例2:
//如果我们一定要比较里面的内容是否相等,则我们必须重写equals
//假设我们在Dog重写了equals方法,则有如下答案:
Dog d1 = new Dog(1,2);
Dog d2 = new Dog(1,2);
d1 == d2;//false
d1.equals(d2);//true,比较的是内容 //范例3:
//String类中重写了equals方法
void EqualCompare()
{
String s1 = new String("Hello");
String s2 = new String("Hello"); //未使用new,s4引用既存的对象(编译器创建对象之前先进行检测"Hello"是否已经存 在,若存在,则返回原对象的引用)
String s3 = "Hello";
String s4 = "Hello"; System.out.println(s1.equals(s2)); // true x1行
System.out.println(s1 ==s2); // false 两变量引用不同对象
System.out.println(s3.equals(s4)); //true 两变量引用相同对象
System.out.println(s3 ==s4); // true 两变量引用相同对象
}
(5)finalize()
Object类中的finalize()一个对象被垃圾收集的时候,最后会由JVM调用这个对象的finalize方法。
object类的用方法:
这里面有个父类引用指向子类对象,函数参数为object保证所有类的对象都能过传进来,然后通过instanceof提取出引用的类型与需要的类型相比较。然后通过强制转换为相应的类型,进行下面的操作。
int func(Object o)
{
if(!(o instanceof Cat))return -1;
Cat c = (Cat)o;//强制转换为cat,再进行下面的操作
}
java中的object类的更多相关文章
- Java学习笔记二十四:Java中的Object类
Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...
- Java基础(43):Java中的Object类与其方法(转)
Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...
- java中的Object类和其clone()
1.Object是所有类的父类,任何类都默认继承Object,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. ...
- Java中的Object类的几个方法
Object类被称为上帝类,也被称为祖宗类.在定义Java类时,如果没有指定父类,那么默认都会去继承Object类.配合Java的向上类型转换,借助Object类就可以完成很多工作了. 在Object ...
- Java中的Object类介绍
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类. Object类中的所有方法适用于所有子类 Object中比较常见的方法: ...
- Java中的Object类的toString()方法,equals()方法
Object类是所有类的父类,若没有明确使用extends关键字明确表示该类继承哪个类,那么它就默认继承Object类,也就可以使用Object中的方法: 1.toString 如果输出一个对象的时候 ...
- Java中特殊的类——Object类
Java中特殊的类--Object类 1.Object类的概述 Object类是java默认提供的类.Java中除了Object类,所有的类都是有继承关系的.默认会继承Object类,即所有的对象都可 ...
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- java中基于TaskEngine类封装实现定时任务
主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...
随机推荐
- debian下samba配置
debian下samba配置 http://blog.chinaunix.net/uid-2282111-id-2113216.html 服务器端配置过程:1. apt-get install sa ...
- linux下操作gpio寄存器的方法
一. 在驱动中: 1. 用的时候映射端口:ioremap; #define GPIO_OFT(x) ((x) - 0x56000000) #define GPFCON (*(volatile unsi ...
- [iOS]超详细Apache服务器的配置(10.10系统)
配置目的:有一个自己专属的测试服务器 我们需要做以下事情: 1.新建一个目录,存放网页 2.修改Apache配置文件httpd.conf - 修改两个路径 - 增加一个属性 - 支持PHP脚本 3.拷 ...
- JUnit4的使用2
package com.imooc.test.aware; import org.junit.Test; import org.junit.runner.RunWith; import org.jun ...
- bootstrap基础知识点YI
<!DOCTYPE html> <html lang="en"> ... </html> bootstrap页面都应该包含html5声明. 框架 ...
- REF CURSOR和CURSOR
REF CURSOR DECLARE TYPE TY_EMP_CUR IS REF CURSOR; V_Emp_Cur TY_EMP_CUR; V_Id EMP.ID%TYPE; BEGIN OPEN ...
- jQuery tablesort插件推荐
搜索结果的第一条网址(似乎是Official Site)似乎有问题(也可能是我弄错了 总之chrome中有个叉叉) 所以还是用这个吧http://mottie.github.io/tablesort ...
- Linux内存分析
Linux命令----分析内存的瓶颈 为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cac ...
- Qt浅译:JSON Support in Qt(JSON只有六种数据类型)
JSON Support in Qt Qt5之后开始提供对处理JSON数据的支持,JSON是一种Interter数据交换的数据格式. JSON 用于存储结构化的数据,JSON有6种基本数据类型 ...
- BZOJ 2730: [HNOI2012]矿场搭建( tarjan )
先tarjan求出割点.. 割点把图分成了几个双连通分量..只需dfs找出即可. 然后一个bcc有>2个割点, 那么这个bcc就不用建了, 因为一定可以走到其他救援出口. 只有一个割点的bcc就 ...