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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张扬123 中级黑马   /  2012-8-14 19:43  /  2048 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张扬123 于 2012-8-14 20:59 编辑

复习时看到instanceof,就联想到了contains。
这两个的意思貌似都差不多啊。
if(!newAl.contains(obj))
if(!obj instanceof Person)
这两处的使用感觉都差不多啊。
他们有哪些不同呢?
求解。


5 个回复

倒序浏览
contains是是否包含的意思,那肯定.左边的对象是一个容器了(String现在也有一个contains,那是因为String是一个字符的容器).
而instanceof的作用是测试它左边的对象是否是它右边的类的实例.
即 容器 contains 元素
   对象 instanceof 类

回复 使用道具 举报
本帖最后由 杨健yj 于 2012-8-14 20:26 编辑

instanceof 用于判断一个变量是否某个对象的实例,而且他是一个关键字,如Person p = new Person(),p instanceof Person 这个表达式返回值是boolean型的,结果为true。
这个我们在做转型的时候会用到。举个例子,我们举得的子父类的例子。
  1. class  
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Fu f = new Zi();//这里是多态父类引用指向子类对象也是向上转型

  6.                 if (f instanceof Zi)//判断f是否为Zi类对象
  7.                 {
  8.                         Zi z = (Zi)f;//向下转型
  9.                 }
  10.         }
  11. }


  12. class Fu
  13. {
  14. }
  15. class Zi extends Fu
  16. {
  17. }
复制代码
contains是用来确认是否包含某对象的方法(他是一个方法),经常在集合中用到。

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
是否包含指定的字符串:boolean contains(string);是用于String类。
在多态转型中,至始至终只有子类对象在做着类型的变化。
向上转型:当只想使用体系基本功能时,可以向上转型操作。当是一旦向上转型后,就无法使用子类特有的方法了。
向下转型:当使用子类对象中特有内容时,才做向下转型的操作。向下转型的时候必须进行判断。
判断的方法:对象 instanceof 类型 判断具体对象是否是指定的类型。instanceof 是一个关键字用于判断对象的类型。当进行向下转型时,先判断该对象是否符合被转成的类型。
总结:contains是String类的方法,而instanceof 是用于多态的类型转换。
回复 使用道具 举报
contains是用来确认是否包含某对象的方法(他是一个方法),经常在集合中用到
instanceof 是一个关键字用于判断对象的类型。当进行向下转型时,先判断该对象是否符合被转成的类型。
回复 使用道具 举报
谢谢各位。问题已解决。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马