JAVA學習-第三個代碼模型

來源:互聯網
上載者:User

標籤:

第三個代碼模型:對象比較

在講解具體的概念之前,再來觀察一種引用傳遞的形式,本類接收本類對象。

範例:觀察程式碼(暫時不要去思考代碼意義)

class Person {

         private String name ;

         public Person(String name) {

                   this.name = name ;

         }       // 接收本類對象

         public void change(Person temp) {

                   temp.name = "李四" ;        // 直接通過“對象.屬性”調用

         }

         public String getName() {

                   return this.name ;

         }

}

public class TestDemo {

         public static void main(String args[]) {

                   Person per = new Person("張三") ;

                   System.out.println(per.getName()) ;

                   per.change(per) ;        // 接收本類,不關心意義,只關心文法

                   System.out.println(per.getName()) ;

         }

}

         正常情況下如果使用了private封裝,那麼外部是無法通過“對象.屬性”的形式進行操作的,但是如果說現在把對象傳遞迴了類之中。

         那麼如果說現在有兩個Person類對象(name、age屬性),那麼如果要比較兩個對象是否相等,該怎麼做?將每一個屬性分別進行比較,如果全都相同,則表示相等,於是現在就得出了以下的一段代碼。

class Person {

         private String name ;

         private int age ;

         public Person() {}

         public Person(String name,int age) {

                   this.name = name ;

                   this.age = age ;

         }

         public String getName() {

                   return this.name ;

         }

         public int getAge() {

                   return this.age ;

         }

}

public class TestDemo {

         public static void main(String args[]) {

                   Person perA = new Person("張三",20) ;

                   Person perB = new Person("張三",20) ;

                   if (perA.getName().equals(perB.getName()) &&

                            perA.getAge() == perB.getAge()) {

                            System.out.println("兩個對象相等。") ;

                   } else {

                            System.out.println("兩個對象不等。") ;

                   }

         }

}

         此時已經可以成功的進行了對象比較操作,但是這種代碼有問題。

         此時的代碼所有的驗證功能都交給主方法去完成,實際上主方法就是一個用戶端,在主方法之中不應該牽扯到過多的商務邏輯,只需要進行簡單的操作即可。另外,資訊的比較過程,應該是每個對象都具備的功能。應該是在類之中定義好的。

class Person {

         private String name ;

         private int age ;

         public Person() {}

         public Person(String name,int age) {

                   this.name = name ;

                   this.age = age ;

         }

         public String getName() {

                   return this.name ;

         }

         public int getAge() {

                   return this.age ;

         }

         // 暫訂此方法名稱為compare()

         // 此方法會具備兩個對象:當前對象this、傳入的person

         public boolean compare(Person person) {

                   if (this == person) {    // 地址相同

                            return true ;

                   }

                   if (person == null) {

                            return false ;

                   }

                   // 當對象傳回到類之中的時候可以直接利用“對象.屬性”訪問

                   if (this.name.equals(person.name) && this.age == person.age) {

                            return true ;

                   }

                   return false ;

         }

}

public class TestDemo {

         public static void main(String args[]) {

                   Person perA = new Person("張三",20) ;

                   Person perB = new Person("張三",20) ;

                   if (perA.compare(null)) {

                            System.out.println("兩個對象相等。") ;

                   } else {

                            System.out.println("兩個對象不等。") ;

                   }

         }

}

         從標準來講,簡單Java類之中是需要提供有對象比較操作的,回去自己寫幾個。

JAVA學習-第三個代碼模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.