Java Object类详解 - C语言中文网
文章推薦指數: 80 %
Object 是Java 类库中的一个特殊类,也是所有类的父类。
也就是说,Java 允许把任何类型的对象赋给Object 类型的变量。
当一个类被定义后,如果没有指定继承的父类, ...
首页
教程
VIP会员
一对一答疑
辅导班
公众号
首页
C语言教程
C++教程
Python教程
Java教程
Linux入门
更多>>
目录
Java教程
1
Java入门基础及环境搭建
2
Java程序设计基础
3
Java流程控制语句
4
Java字符串处理
5
Java数字和日期处理
6Java内置包装类6.1Java包装类、装箱和拆箱6.2JavaObject类详解6.3JavaInteger类6.4JavaFloat类6.5JavaDouble类6.6JavaNumber类6.7JavaCharacter类6.8JavaBoolean类6.9JavaByte类6.10JavaSystem类
7
Java数组处理
8
Java类和对象
9
Java继承和多态
10
Java异常处理
11
Java集合、泛型和枚举
12
Java反射机制
13
Java输入/输出流
14
Java注解
首页>Java教程>Java内置包装类
JavaObject类详解
Object是Java类库中的一个特殊类,也是所有类的父类。
也就是说,Java允许把任何类型的对象赋给Object类型的变量。
当一个类被定义后,如果没有指定继承的父类,那么默认父类就是Object类。
因此,以下两个类表示的含义是一样的。
publicclassMyClass{…}
等价于
publicclassMyClassextendsObject{…}
由于Java所有的类都是Object类的子类,所以任何Java对象都可以调用Object类的方法。
常见的方法如表1所示。
表1Object类的常用方法
方法
说明
Objectclone()
创建与该对象的类相同的新对象
booleanequals(Object)
比较两对象是否相等
voidfinalize()
当垃圾回收器确定不存在对该对象的更多引用时,对象垃圾回收器调用该方法
ClassgetClass()
返回一个对象运行时的实例类
inthashCode()
返回该对象的散列码值
voidnotify()
激活等待在该对象的监视器上的一个线程
voidnotifyAll()
激活等待在该对象的监视器上的全部线程
StringtoString()
返回该对象的字符串表示
voidwait()
在其他线程调用此对象的notify() 方法或notifyAll() 方法前,导致当前线程等待
其中,toString()、equals()方法和getClass()方法在Java程序中比较常用。
toString()方法
toString()方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法返回该对象的字符串表示。
Object类的toString()方法返回“运行时类名@十六进制哈希码”格式的字符串,但很多类都重写了Object类的toString()方法,用于返回可以表述该对象信息的字符串。
哈希码(hashCode),每个Java对象都有哈希码属性,哈希码可以用来标识对象,提高对象在集合操作中的执行效率。
先看以下代码:
//定义Demo类,实际上继承Object类
classDemo{
}
publicclassObjectDemo01{
publicstaticvoidmain(String[]args){
Demod=newDemo();//实例化Demo对象
System.out.println("不加toString()输出:"+d);
System.out.println("加上toString()输出:"+d.toString());
}
}
输出结果为:
不加toString()输出:Demo@15db9742
加上toString()输出:Demo@15db9742
以上的程序是随机输出了一些地址信息,从程序的运行结果可以清楚的发现,加和不加toString()的最终输出结果是一样的,也就是说对象输出时一定会调用Object类中的toString()方法打印内容。
所以利用此特性就可以通过toString()取得一些对象的信息,如下面代码。
publicclassPerson{
privateStringname;
privateintage;
publicPerson(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringtoString(){
return"姓名:"+this.name+":年龄"+this.age;
}
publicstaticvoidmain(String[]args){
Personper=newPerson("C语言中文网",30);//实例化Person对象
System.out.println("对象信息:"+per);//打印对象调用toString()方法
}
}
输出结果为:
对象信息:姓名:C语言中文网:年龄30
程序中的Person类中重写了Object类中的toString()方法,这样直接输出对象时调用的是被子类重写过的toString()方法。
equals()方法
在前面学习字符串比较时,曾经介绍过两种比较方法,分别是==运算符和equals()方法,==运算符是比较两个引用变量是否指向同一个实例,equals()方法是比较两个对象的内容是否相等,通常字符串的比较只是关心内容是否相等。
其使用格式如下:
booleanresult=obj.equals(Objecto);
其中,obj表示要进行比较的一个对象,o表示另一个对象。
例1
编写一个Java程序,实现用户登录的验证功能。
要求用户从键盘输入登录用户名和密码,当用户输入的用户名等于admin并且密码也等于admin时,则表示该用户为合法用户,提示登录成功,否则提示用户名或者密码错误信息。
在这里使用equals()方法将用户输入的字符串与保存admin的字符串对象进行比较,具体的代码如下:
importjava.util.Scanner;
publicclassTest01{
//验证用户名和密码
publicstaticbooleanvalidateLogin(Stringuname,Stringupwd){
booleancon=false;
if(uname.equals("admin")&&upwd.equals("admin")){//比较两个String对象
con=true;
}else{
con=false;
}
returncon;
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("------欢迎使用大数据管理平台------");
System.out.println("用户名:");
Stringusername=input.next();//获取用户输入的用户名
System.out.println("密码:");
Stringpwd=input.next();//获取用户输入的密码
booleancon=validateLogin(username,pwd);
if(con){
System.out.println("登录成功!");
}else{
System.out.println("用户名或密码有误!");
}
}
}
上述代码在validateLogin()方法中又使用equals()方法将两个String类型的对象进行了比较,当uname对象与保存admin的String对象相同时,uname.equals("admin")为true;与此相同,当upwd对象与保存admin的String对象相同时,upwd.equals("admin")为true。
当用户输入的用户名和密码都为admin时,表示该用户为合法用户,提示登录成功信息,否则提示用户名或密码有误的错误信息。
该程序的运行结果下所示:
------欢迎使用大数据管理平台------
用户名:
adinm
密码:
admin
用户名或密码有误!
------欢迎使用大数据管理平台------
用户名:
admin
密码:
admin
登录成功!
getClass()方法
getClass()方法返回对象所属的类,是一个Class对象。
通过Class对象可以获取该类的各种信息,包括类名、父类以及它所实现接口的名字等。
例2
编写一个实例,演示如何对String类型调用getClass()方法,然后输出其父类及实现的接口信息。
具体实现代码如下:
publicclassTest02{
publicstaticvoidprintClassInfo(Objectobj){
//获取类名
System.out.println("类名:"+obj.getClass().getName());
//获取父类名
System.out.println("父类:"+obj.getClass().getSuperclass().getName());
System.out.println("实现的接口有:");
//获取实现的接口并输出
for(inti=0;i
延伸文章資訊
- 1Java :: final/Object/instanceof - OpenHome.cc
在Java SE API 會宣告為 final 的類別或方法,通常與JVM 物件或作業系統資源管理有密切相關,因此不希望API 使用者繼承或重新定義。 java.lang.Object. 在 ...
- 2定義類別(Class) | Java SE 6 技術手冊 - caterpillar
如何為這些物件實例設計交互行為,依應用的領域不同而有所差異,就Java 程式設計 ... 在Java 中使用"class" 關鍵字來定義類別,使用類別來定義一個物件(Object)時, ...
- 3Objects and Classes in Java - Javatpoint
What is an object in Java · State: represents the data (value) of an object. · Behavior: represen...
- 4Java Object 类 - 菜鸟教程
Java Object 类Java Object 类是所有类的父类,也就是说Java 的所有类都继承了Object,子类可以使用Object 的所有方法。 Object 类位于java.lang...
- 5Object (Java Platform SE 7 ) - Oracle Help Center
Class Object is the root of the class hierarchy. Every class has Object as a superclass. All obje...