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

黑马童宇

中级黑马

  • 黑马币:81

  • 帖子:25

  • 精华:0

1,instanceof
2,equals
3,compare
4,compareTo
5,==
求大神指导下

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

6 个回复

倒序浏览
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:    String s = "I AM an Object!";   boolean isObject = s instanceof Object;    我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True                    object的 equals方法,只要你想比较的两个对象不愿是同一对象,你就应该实现equals方法,让对象用你认为相等的条件来进行比较.下面的内容只是API的规范,没有什么太高深的意义,但我之所以最先把它列在这儿,是因为这些规范在事实中并不是真正能保证得到实现.           1.对于任何引用类型, o.equals(o)==true 成立.   2.如果 o.equals(o1)==true 成立,那么o1.equals(o)==true也一定要成立.   3.如果 o.equals(o1)==true 成立且o.equals(o2)==true 成立,那么o1.equals(o2)==true 也成立.   4.如果第一次调用o.equals(o1)==true 成立再o和o1没有改变的情况下以后的任何次调用都成立.   5.o.equals(null)==true 任何时间都不成立.   以上几条规则并不是最完整的表述,详细的请参见API文档.对于Object类,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回true,也就是人们常说的引用比较而不是值比较.这个实现严密得已经没有什么实际的意义,所以在具体子类(相对于Object来说)中,如果我们要进行对象的值比较,就必须实现自己的equals方法.    java中compareTo和compare方法之比较 这两个方法经常搞混淆,现对其进行总结以加深记忆。  1.compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo(T o)方法,比如MapReduce中Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合; 2.compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
回复 使用道具 举报
fenzheng 发表于 2014-6-1 22:46
instanceof是Java的一个二元操作符,和==,>,

顶礼膜拜,谢谢,兄弟你handshake
回复 使用道具 举报
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:  Strings="I AM an Object!";  booleanisObject=sinstanceofObject;  我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为Trueobject的equals方法,
只要你想比较的两个对象不愿是同一对象,
你就应该实现equals方法,
让对象用你认为相等的条件来进行比较.下面的内容只是API的规范,
没有什么太高深的意义,
但我之所以最先把它列在这儿,
是因为这些规范在事实中并不是真正能保证得到实现.1.对于任何引用类型,
o.equals(o)==true成立.2.如果o.equals(o1)==true成立,
那么o1.equals(o)==true也一定要成立.3.如果o.equals(o1)==true成立且o.equals(o2)==true成立,
那么o1.equals(o2)==true也成立.4.如果第一次调用o.equals(o1)==true成立再o和o1没有改变的情况下以后的任何次调用都成立.5.o.equals(null)==true任何时间都不成立.以上几条规则并不是最完整的表述,
详细的请参见API文档.对于Object类,
它提供了一个最最严密的实现,
那就是只有是同一对象是,
equals方法才返回true,
也就是人们常说的引用比较而不是值比较.这个实现严密得已经没有什么实际的意义,
所以在具体子类(相对于Object来说)中,
如果我们要进行对象的值比较,
就必须实现自己的equals方法.

compareTo和compare方法之比较这两个方法经常搞混淆,现对其进行总结以加深记忆。1.compareTo(Objecto)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写publicintcompareTo(To)方法,比如MapReduce中Map函数和Reduce函数处理的<key,
value>,
其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合;2.compare(Objecto1,
Objecto2)方法是java.util.Comparator<T>接口的方法,它实际上用的是待比较对象的compareTo(Objecto)方法。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
compareTo和compare 这两个方法的代码一定要多敲几遍,这直接反应我们的java基本功的,排序,两个对象排序就会用到.!加油
回复 使用道具 举报
还想分享一个三元运算符,我觉得不错,不if else 判断简单,就是  a xx b ? a :b
三元运算符,是软件编程中的一个固定格式,即( ?: )(注:括号里面的内容才是正确的格式)
语法:条件 ? 结果1 : 结果2
说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。
回复 使用道具 举报 1 0
学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马