黑马程序员技术交流社区
标题:
instanceof运算符和Object的getClass()方法有什么区别
[打印本页]
作者:
必须进黑马
时间:
2013-11-7 20:57
标题:
instanceof运算符和Object的getClass()方法有什么区别
instanceof运算符的运算效果和Object的getClass()方法的调用效果的有什么区别吗,效果是不是一样的?
作者:
秦桂胜
时间:
2013-11-7 22:27
Object的getClass()方法返回此 Object 的运行时类,instanceof运算符如果使用 返回的应该是true或flase;所以说效果肯定不一样
作者:
硬件之家
时间:
2013-11-7 22:57
instanceof运算符是用来在运行时指出对象是否是特定类的一个实例,它返回的是ture或者false,而Object的getClass()是返回此Object的运行时类
作者:
青年黨衛軍
时间:
2013-11-8 13:13
1.instanceof:比较的是继承关系或者实现关系的类类型,子类对象或者实现类对象放在前面,用来判断该对象是否属于父类对象。比如以下代码:
class Fu{......}
class Zi extends Fu{}
Zi zi = new Zi();
if(Zi instanceof Fu){......}
复制代码
2.getClass():则是可以通过获取任何类的类型来进行比较,概念上比较泛泛,即使两个毫不相干的类型,不需要有继承关系的,也可以获取比较,API中是这样描述的:判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true;否则返回 false。如果该 Class 表示一个基本类型,且指定的 Class 参数正是该Class 对象,则该方法返回 true;否则返回 false。比如:
class A{......}
class B{......}
system.out.println(A.getClass() == B.getClass);
复制代码
作者:
cuilitang
时间:
2013-11-8 23:08
package cn.itheima.instanceofAndGetClass;
class Person{};
class Teacher extends Person{};
public class ClassRelationship {
public static void main(String[] args) {
Person p = new Person();
Teacher t = new Teacher();
Class pcls = p.getClass();
Class tcls = t.getClass();
System.out.println("Person类别的getClass结果:" + pcls);
System.out.println("Teacher类别的getClass结果:" + tcls);
System.out.println("Person类与Teacher类的getClass结果比较:" + pcls.equals(tcls));
System.out.println("p对象与Person类的instance结果比较:" + (p instanceof Person));
System.out.println("t对象与Person类的instance结果比较:" + (t instanceof Person));
}
}
/**
* 综上所述:
* 1.getClass是Object类的一个方法,可以得到本类的类(Class)对象。在反射部分还有应用。
* 2.instanceof属于基本运算符,运算对象是否属于该类或者该类的父类。两者条件满足一个即可返回true。
* 3.从理论上来说,任何对象instanceof Object类都返回true,这个你可以实验一下。因为Object是所有类的超类。
*
*/
复制代码
作者:
Rockray
时间:
2013-11-9 08:18
getClass()返回当前对象的运行时类,instanceof就是判断此对象是不是某一类型的对象,即是不是某一个类的引用,是返回true,否返回false。
完全不一样的啊
作者:
zhanghuxin
时间:
2013-11-9 09:00
intanceof()方法主要用来判断变量的类型。instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
object instanceof class 返回的是boolean 值。如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
例子:
String s=null;
//null值不是任何对象的实例,无论这个变量声明的是什么类型,皆返回false
System.out.println(s instanceof String);
//因为二者不存在继承的关系,所以编译会出错
System.out.println(new Test() instanceof String);
//编译没错误,但运行会出错
Test test = (Test)new Object();
废话少说,还是举几个例子:
public interface A{}
public class B implements A{
public static void main(String[] args){
A a=null;
B b=null;
if(a instanceof A){
System.out.println("true 1");
}
else{
System.out.println("false 1");
}
if(b instanceof B){
System.out.println("true 2");
}
else{
System.out.println("false 2");
}
a=new B();
if(a instanceof A){
System.out.println("true 3");
}
else{
System.out.println("false 3");
}
if(a instanceof B){
System.out.println("true 4");
}
else{
System.out.println("false 4");
}
b=new B();
if(b instanceof A){
System.out.println("true 5");
}
else{
System.out.println("false 5");
}
if(b instanceof B){
System.out.println("true 6");
}
else{
System.out.println("false 6");
}
}
}
输出结果是:
false 1
false 2
true 3
true 4
true 5
true 6
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2