A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程立彬 黑马帝   /  2011-11-21 17:24  /  4696 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 程立彬 于 2011-11-23 13:26 编辑

视频上面 if(obj instanceof Person){}  Person 是一个类 obj是object类对象

11 个回复

倒序浏览
本帖最后由 袁世宇 于 2011-11-21 17:31 编辑

个人是这么理解:

obj instanceof Person ,返回值为boolean类型,用来判断obj是否是Person的实例对象或者B子类的实例对象。如果是则返回true,否则返回false。
回复 使用道具 举报
if(obj instanceof Person){}  Person 是一个类 obj是object类对象:  判断obj是否为Person类或Person子类的对象
回复 使用道具 举报
崔浩 黑马帝 2011-11-21 17:42:25
板凳
instanceof一般和强制运算一起使用的,instanceof 用于判断前面的操作数的编译时类型时候是后面类,或者其子类实现类的实例,一般返回true,或false,如果操作的两个数没有一点关系(也就是说instanceof前面操作数的编译类型要么与后面的类相同,要么是后面类的父类)否则会引起编译错误
回复 使用道具 举报
冯敏 黑马帝 2011-11-21 19:56:22
报纸
测试左边的对象是否是右边对象的实例,如果是返回true,不是返回false
回复 使用道具 举报
再补充一点:你可以理解成一个特殊的操作符
回复 使用道具 举报
常文艺 黑马帝 2011-11-21 20:08:41
7#
它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。可以用在继承中的子类的实例是否为父类的实现。
  举个例子:
  String s = "I AM an Object!";
  boolean isObject = s instanceof Object;
  我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true。
回复 使用道具 举报
张冬冬 黑马帝 2011-11-21 23:15:10
8#
意思就是看obj这个对象是不是person类型的,
一般在多态的时候多用instanceof判断,看创建的这个类是不是父类类型的,是的话在把子类类型转回父类类型来用。
回复 使用道具 举报
instanceof 一般是用在具有继承关系的两个类型之间
下面声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类或本类的一个实例。也就是测试它左边的对象是否是它右边的类的实例
String str1 = "abc";
System.out.println(str1 instanceof String);//返回true
System.out.println(str1 instanceof Object);//返回true
System.out.println(str instanceof Integer);//此句错误,不可以这么用。String类型和Integer类型根本就没有关系,更不用说谁是谁的实例了

如果对象引用为null时,又会怎样呢?
String str2 = null;
System.out.println(str2 instanceof Object);//返回false

instanceof在多态中的应用是很广的。
instanceof 通常是用于判断父类或者接口的引用是否是某个子类的实例

下面以继承说明:
class Person{
        private String name;

        public Person(String name) {
                super();
                this.name = name;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
       
}
class Student extends Person{
        public Student(String name) {
                super(name);
        }
}

测试代码如下
Person stu = new Student("zhangsan");
Student stu2 = new Student("lisi");
if(stu instanceof Person){
        Student s1 = (Student) stu;//向下转型
        System.out.println(s1.getName());
}
if(stu2 instanceof Student){
        Student s2 = stu2;//stu2本来就是Student的一个实例,无需向下转型
        System.out.println(s2.getName());
}
总结:
instanceof操作符的作用是判断一个变量是否是右操作符指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。在接口中的应用也是如此。
回复 使用道具 举报
moonlight 黑马帝 2011-11-22 10:15:00
10#
简单的说是:
判断对象属于哪种类型的
if(obj instanceof class)
{
}
其返回true情况如下
1.obj是class类的对象
2.obj是class类子类的对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
唐柏平 黑马帝 2011-11-22 11:02:31
11#
判断某一对象是否是某个类的实例
(1)、instance of 运算符
对象名  instance of 类名(接口名) 返回布尔值
(2)、将强制类型转换和instance of 混合使用

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
instanceof 运算符
返回一个 Boolean 值,指出对象是否是特定类的一个实例。
result = object instanceof class
参数
result
必选项。任意变量。
object
必选项。任意对象表达式。
class
必选项。任意已定义的对象类。
说明
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

示例
下面的例子举例说明了 instanceof 运算符的用法。

function objTest(obj){
   var i, t, s = "";   // 创建变量。
   t = new Array();   // 创建一个数组。
   t["Date"] = Date;   // 填充数组。
   t["Object"] = Object;
   t["Array"] = Array;
      for (i in t)
      {
         if (obj instanceof t[i])   // 检查 obj 的类。
         {
            s += "obj is an instance of " + i + "\n";
         }
         else
         {
            s += "obj is not an instance of " + i + "\n";
         }
   }
   return(s);   // 返回字符串。
}

var obj = new Date();
response.write(objTest(obj));




评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马