熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Java的關系運算符

2013-11-15 11:37:14  來源: JSP教程 

  關系運算符生成的是一個布爾(Boolean)結果它們評價的是運算對象值之間的關系若關系是真實的關系表達式會生成true(真)若關系不真實則生成false(假)關系運算符包括小於(<)、大於(>)小於或等於(<=)、大於或等於(>=)等於(==)以及不等於(!=)等於和不等於適用於所有內建的數據類型但其他比較不適用於boolean類型
   檢查對象是否相等
  關系運算符==和!=也適用於所有對象但它們的含義通常會使初涉Java領域的人找不到北下面是一個例子
  //: Equivalencejava
  public class Equivalence {
   public static void main(String[] args) {
    Integer n = new Integer();
    Integer n = new Integer();
    Systemoutprintln(n == n);
    Systemoutprintln(n != n);
   }
  } ///:~
  其中表達式Systemoutprintln(n == n)可打印出內部的布爾比較結果一般人都會認為輸出結果肯定先是true再是false因為兩個Integer對象都是相同的但盡管對象的內容相同句柄卻是不同的而==和!=比較的正好就是對象句柄所以輸出結果實際上先是false再是true這自然會使第一次接觸的人感到驚奇
  若想對比兩個對象的實際內容是否相同又該如何操作呢?此時必須使用所有對象都適用的特殊方法equals()但這個方法不適用於主類型那些類型直接使用==和!=即可下面舉例說明如何使用
  //: EqualsMethodjava
  public class EqualsMethod {
   public static void main(String[] args) {
    Integer n = new Integer();
    Integer n = new Integer();
    Systemoutprintln(nequals(n));
   }
  } ///:~
  正如我們預計的那樣此時得到的結果是true但事情並未到此結束!假設您創建了自己的類就象下面這樣
  //: EqualsMethodjava
  class Value {
   int i;
  }
  public class EqualsMethod {
   public static void main(String[] args) {
    Value v = new Value();
    Value v = new Value();
    vi = vi = ;
    Systemoutprintln(vequals(v));
   }
  } ///:~
  此時的結果又變回了false!這是由於equals()的默認行為是比較句柄所以除非在自己的新類中改變了equals()否則不可能表現出我們希望的行為不幸的是要到第章才會學習如何改變行為但要注意equals()的這種行為方式同時或許能夠避免一些災難性的事件
  大多數Java類庫都實現了equals()所以它實際比較的是對象的內容而非它們的句柄
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19311.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.