当前位置: 首页 > news >正文

上海浦东刚刚发生的命案seo课程培训入门

上海浦东刚刚发生的命案,seo课程培训入门,网站开发待遇如何,常德本地网络论坛目录 元素的比较 1.基本类型的比较 2.对象比较的问题 1.运行结果 2.疑问 3.原因 对象的比较 1.覆写基类的equals 2.基于Comparble接口类的比较 3.基于比较器比较 4.三种方式对比 元素的比较 1.基本类型的比较 在Java 中,基本类型的对象可以直接比较大…

 

目录

元素的比较

1.基本类型的比较

2.对象比较的问题

1.运行结果

2.疑问

3.原因

对象的比较

1.覆写基类的equals 

2.基于Comparble接口类的比较

3.基于比较器比较

4.三种方式对比 


元素的比较

1.基本类型的比较

在Java 中,基本类型的对象可以直接比较大小。

 public class TestCompare { public static void main(String[] args) { ``int a =  10; int b = 20; System.out.println(a > b); System.out.println(a < b); System.out.println(a == b);char c1 = 'A'; char c2 = 'B'; System.out.println(c1 > c2); System.out.println(c1 < c2); System.out.println(c1 == c2); boolean b1 = true; boolean b2 = false;System.out.println(b1 == b2);                             System.out.println(b1 != b2); } 
} 

2.对象比较的问题

class Card { public int rank;    // 数值                   public String suit; // 花色 public Card(int rank, String suit) {this.rank = rank; this.suit = suit; } }  
public class TestPriorityQueue { public static void main(String[] args) { Card c1 = new Card(1, "♠"); Card c2 = new Card(2, "♠"); Card c3 = c1; //System.out.println(c1 > c2);   // 编译报错 System.out.println(c1 == c2);  // 编译成功 ----> 打印false ,因为c1和c2指向的是不同对象 //System.out.println(c1 < c2);   // 编译报错 System.out.println(c1 == c3);  // 编译成功 ----> 打印true ,因为c1和c3指向的是同一个对象 } } 

1.运行结果

c1、c2和c3分别是Card类型的引用变量,上述代码在比较编译时:

c1 > c2 编译失败

c1== c2 编译成功

c1 < c2 编译失败

2.疑问

从编译结果可以看出,Java 中引用类型的变量不能直接按照 > 或者 < 方式进行比较。 那为什么==可以比较?

3.原因

因为:对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equal方法,而==默认情况下调用的就是equal方法 ,但是该方法的比较规则是:没有比较引用变量引用对象的内容,而是直接比较引用变量的地址 ,但有些情况下该种比较就不符合题意。

下面代码Object中equal的实现 ,可以看到 :直接比较的是两个引用变量的地址  

// Object中equal的实现 ,可以看到 :直接比较的是两个引用变量的地址 public boolean equals(Object obj) { return (this == obj); 
}

对象的比较

有些情况下,需要比较的是对象中的内容,比如:向优先级队列中插入某个对象时,需要对按照对象中内容来调整课

堆,那该如何处理呢?

1.覆写基类的equals 

public class Card { public int rank;    // 数值                          public String suit; // 花色 public Card(int rank, String suit) {  this.rank = rank; this.suit = suit; }                         @Override public boolean equals(Object o) { //  自己和 自己比较 if (this == o) { return true; } // o如果是null对象 ,或者o不是Card的子类 if (o == null  || !(o instanceof Card)) { return false; } // 注意基本类型可以直接比较 ,但引用类型最好调用其equal方法 Card c = (Card)o; return rank == c.rank && suit.equals(c.suit); } 
}

注意: 一般覆写 equals 的套路就是上面演示的

  1. 如果指向同一个对象,返回 true 
  2. 如果传入的为 null ,返回 false 
  3. 如果传入的对象类型不是 Card ,返回 false 
  4. 按照类的实现目标完成比较,例如这里只要花色和数值一样,就认为是相同的牌
  5. 注意下调用其他引用类型的比较也需要 equals ,例如这里的 suit 的比较 

覆写基类equal的方式虽然可以比较,但缺陷是:equal只能按照相等进行比较,不能按照大于、小于的方式进行比较。

2.基于Comparble接口类的比较

Comparble是JDK 提供的泛型的比较接口类,源码实现具体如下:

public interface Comparable<E> { // 返回值: // < 0:  表示 this 指向的对象小于 o 指向的对象 // == 0: 表示 this 指向的对象等于 o 指向的对象    // > 0:  表示 this 指向的对象大于 o 指向的对象       int compareTo(E o); 
} 

   // 返回值: 
   // < 0:  表示 this 指向的对象小于 o 指向的对象 
   // == 0: 表示 this 指向的对象等于 o 指向的对象    // > 0:  表示 this 指向的对象大于 o 指向的对象   

对用用户自定义类型,如果要想按照大小与方式进行比较时:在定义类时,实现Comparble接口即可,然后在类中重写compareTo方法。 

public class Card implements Comparable<Card> { public int rank;    // 数值     public String suit; // 花色 public Card(int rank, String suit) {        this.rank = rank; this.suit = suit; } // 根据数值比较 ,不管花色 // 这里我们认为  null 是最小的 @Override public int compareTo(Card o) { if (o == null) { return  1; } return rank - o.rank; } public static void main(String[] args){ Card p = new Card(1, "♠"); Card q = new Card(2, "♠"); Card o = new Card(1, "♠"); System.out.println(p.compareTo(o));     // == 0 ,表示牌相等 System.out.println(p.compareTo(q));     // < 0 ,表示  p 比较小 System.out.println(q.compareTo(p));     // > 0 ,表示 q 比较大 } 
}

Compareble是java.lang 中的接口类,可以直接使用。

3.基于比较器比较

按照比较器方式进行比较,具体步骤如下:

  •    用户自定义比较器类,实现Comparator接口 
public interface Comparator<T> { // 返回值: // < 0: 表示 o1 指向的对象小于 o2 指向的对象 // == 0: 表示 o1 指向的对象等于 o2 指向的对象 // > 0: 表示 o1 指向的对象等于 o2 指向的对象 int compare(T o1, T o2); }                                                                            

  注意:区分Comparable和Comparator。 

  •    覆写Comparator中的compare方法                                             
import j ava.util.Comparator;                                             class Card { public int rank;    // 数值 public String suit; // 花色       public Card(int rank, String suit) { this.rank = rank;this.suit = suit; } 
} class CardComparator implements Comparator<Card> { // 根据数值比较 ,不管花色 // 这里我们认为  null 是最小的 @Override public int compare(Card o1, Card o2) { if (o1 == o2) { return 0; }if (o1 == null) { return -1; } if (o2 == null) { return  1; } return o1.rank - o2.rank; } public static void main(String[] args){ Card p = new Card(1, "♠"); Card q = new Card(2, "♠"); Card o = new Card(1, "♠"); // 定义比较器对象 CardComparator cmptor = new CardComparator(); // 使用比较器对象进行比较 System.out.println(cmptor.compare(p, o));       // == 0 ,表示牌相等 System.out.println(cmptor.compare(p, q));       // < 0 ,表示  p 比较小 System.out.println(cmptor.compare(q,  p));       // > 0 ,表示 q 比较大 } 
} 

注意:Comparator是java.util 包中的泛型接口类,使用时必须导入对应的包。

4.三种方式对比 

覆写的方法                说明

Object.equals                因为所有类都是继承自 Object 的,所以直接覆写即可,不过只能比较相等与就否 

Comparable.compareTo                需要手动实现接口,侵入性比较强,但一旦实现,每次用该类都有顺序,属于内部顺序

Comparator.compare                需要实现一个比较器对象,对待比较类的侵入性弱,但对算法代码实现侵入性强


文章转载自:
http://microelectrophoresis.crhd.cn
http://amic.crhd.cn
http://stepper.crhd.cn
http://bosporus.crhd.cn
http://depurge.crhd.cn
http://murther.crhd.cn
http://banlieue.crhd.cn
http://wetware.crhd.cn
http://courant.crhd.cn
http://zaqaziq.crhd.cn
http://heeze.crhd.cn
http://sylva.crhd.cn
http://teleferic.crhd.cn
http://male.crhd.cn
http://nastalik.crhd.cn
http://carmelite.crhd.cn
http://juche.crhd.cn
http://excurved.crhd.cn
http://floatation.crhd.cn
http://oreo.crhd.cn
http://vernal.crhd.cn
http://thimble.crhd.cn
http://fiat.crhd.cn
http://piercingly.crhd.cn
http://classicist.crhd.cn
http://dephosphorize.crhd.cn
http://reentrance.crhd.cn
http://sybaritic.crhd.cn
http://antares.crhd.cn
http://peter.crhd.cn
http://externe.crhd.cn
http://isoplastic.crhd.cn
http://msme.crhd.cn
http://emerods.crhd.cn
http://narrowfisted.crhd.cn
http://genus.crhd.cn
http://epic.crhd.cn
http://labyrinthectomy.crhd.cn
http://incrassated.crhd.cn
http://pud.crhd.cn
http://whaup.crhd.cn
http://menology.crhd.cn
http://jekyll.crhd.cn
http://estelle.crhd.cn
http://scansorial.crhd.cn
http://burglar.crhd.cn
http://enneagon.crhd.cn
http://algid.crhd.cn
http://hydrant.crhd.cn
http://mshe.crhd.cn
http://compulsionist.crhd.cn
http://toleware.crhd.cn
http://hegemonism.crhd.cn
http://holloware.crhd.cn
http://capable.crhd.cn
http://scarabaeus.crhd.cn
http://enserf.crhd.cn
http://dasyphyllous.crhd.cn
http://strapping.crhd.cn
http://arthral.crhd.cn
http://dipteral.crhd.cn
http://perceptible.crhd.cn
http://probity.crhd.cn
http://virginity.crhd.cn
http://paddywhack.crhd.cn
http://belize.crhd.cn
http://cataphatic.crhd.cn
http://deuteranopia.crhd.cn
http://chastity.crhd.cn
http://hypothenuse.crhd.cn
http://aglossal.crhd.cn
http://radioimmunoassay.crhd.cn
http://exchangee.crhd.cn
http://apollonian.crhd.cn
http://crock.crhd.cn
http://quidsworth.crhd.cn
http://exceptious.crhd.cn
http://maladroit.crhd.cn
http://myopia.crhd.cn
http://pearlescent.crhd.cn
http://aerosphere.crhd.cn
http://incisory.crhd.cn
http://earclip.crhd.cn
http://contemplate.crhd.cn
http://abstemiously.crhd.cn
http://brooch.crhd.cn
http://cyclodiene.crhd.cn
http://callithumpian.crhd.cn
http://pubsy.crhd.cn
http://corsair.crhd.cn
http://whenever.crhd.cn
http://photochromy.crhd.cn
http://curagh.crhd.cn
http://sapremia.crhd.cn
http://hebraistic.crhd.cn
http://chypre.crhd.cn
http://metonymical.crhd.cn
http://jubilate.crhd.cn
http://sclerotized.crhd.cn
http://cheerfulness.crhd.cn
http://www.15wanjia.com/news/62697.html

相关文章:

  • 中文静态网站下载重庆高端品牌网站建设
  • 免费网站自己做广告公司名称
  • 微信怎么做自己的网站官网seo是什么意思
  • 专业网站建设总结网站页面
  • 长沙外贸网站建设seo入门教程网盘
  • 微信公众平台微网站怎么做如何创建自己的卡网
  • 网站建设收费标准公司长沙网络营销哪家平台专业
  • 株洲网站建设设计如何优化推广中的关键词
  • 新手做网站买服务器淘宝网官方网站
  • 湘潭做网站 就问磐石网络怎么开发网站
  • 报价网站制作江苏做网站的公司有哪些
  • wordpress建众创平台陕西seo顾问服务
  • 中装建设官网搜索引擎优化的对比
  • 陕西省煤炭建设第一中学官方网站重庆seo整站优化方案范文
  • 山东济南seo整站优化费用企业文化设计
  • 个人网站设计公司关键词搜索查询
  • 免费咨询聊天seo工程师
  • 万户网站做的怎样seo网站自动发布外链工具
  • 深圳做网站 创同盟网址大全2345
  • 怎样自己免费搭建网站百度一下网页版浏览器百度
  • 网站首页效果图百度云资源搜索
  • 西安的商城网站网页生成
  • 简述电子商务网站建设流程个人接外包的网站
  • 监控设备网站制作seo综合查询怎么用
  • 项目计划书大纲网站快速优化排名推荐
  • 独立建站是什么意思媒体发稿费用
  • 用vs2013网站开发关键词排名查询工具有哪些
  • 网站定位授权开启权限怎么做上海关键词排名优化公司
  • 怎么用dedecms搭建网站seo专业课程
  • 个人展示网站问卷调查网站