freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[高等教育]java基礎(chǔ)學(xué)習(xí)第4章(編輯修改稿)

2025-02-15 18:27 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 43 補(bǔ)充 2: String str1=“aaa”。 String str1=new String(“aaa”)。 的區(qū)別? ? 常量池 (constant pool)指的是在編譯期被確定,并被保存在已編譯的 .class文件中的一些數(shù)據(jù)。它包括了關(guān)于類(lèi)、方法、接口等中的常量,也包括字符串常量。 ? str1 屬于字符串常量,被創(chuàng)建時(shí)的地址為常量池中,如果常量池中已有相同字符串常量,則新創(chuàng)建的常量將指向已有的引用;如果沒(méi)有,則使用String中的 intern()在常量池中增加一個(gè) Unicode等于 str的字符串 ,并返回它的引用。 (注:于 String類(lèi)型,有一張固定長(zhǎng)度的CONSTANT_String_info表用來(lái)存儲(chǔ)文字字符串值 ) ? 使用 new String()創(chuàng)建的是對(duì)象,不同對(duì)象指向不同的內(nèi)存地址。 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 44 ? 舉例 String str1=“aaa”。 String str2=“aaa”。 str1 == str2 。 (str2)。 true true 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 45 String str3 = new String(“aaa”)。 str1==str3。 (str3)。 false true 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 46 public class strTest { public static void main(String[] args) { String str1=aaa。 String str2=“aaa”。 String str3 = new String(aaa)。 if(str1==str2) (str1==str2)。 if((str2)) ((str2))。 if(str1==str3) (true)。 else (false)。 if((str3)) (true)。 else (false)。 } } 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 47 先看兩個(gè)例子 public class Exam4_7{ public static void main(String args[]){ BankAccount a = new BankAccount(Bob, 123456, )。 BankAccount b = new BankAccount(Bob, 123456, )。 if (a == b) (YES)。 else (NO)。 } } NO 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 48 public class EqualsTest{ public static void main(String args[]){ BankAccount a = new BankAccount(Bob, 123456, )。 BankAccount b = new BankAccount(Bob, 123456, )。 if ((b)) (YES)。 else (NO)。 } } NO 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 49 這兩個(gè)例子 equals()和前面的 String類(lèi)有何不同,到底是什么原因??? 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 50 ? 相等和同一的概念 – 兩個(gè)對(duì)象具有相同的類(lèi)型,及相同的 屬性值 ,則稱(chēng)二者相等 (equal) – 如果兩個(gè)引用變量指向的是同一個(gè)對(duì)象,則稱(chēng)這兩個(gè)變量 (對(duì)象 )同一 (identical==) – 兩個(gè)對(duì)象同一,則肯定相等 – 兩個(gè)對(duì)象相等,不一定同一 – 比較運(yùn)算符“ ==” 判斷的是這兩個(gè)對(duì)象是否同一( 即 對(duì)象地址是否相同 ) Object類(lèi) (續(xù) ) ——相等和同一 Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 51 ? 判斷兩個(gè)對(duì)象是否同一 public class Exam4_7{ public static void main(String args[]){ BankAccount a = new BankAccount(Bob, 123456, )。 BankAccount b = new BankAccount(Bob, 123456, )。 if (a == b) (YES)。 else (NO)。 } } ? BankAccount類(lèi)在 ,此程序運(yùn)行的結(jié)果為“ NO”, 原因是使用等號(hào)“ ==”判斷的是兩個(gè)對(duì)象是否同一,顯然 a和 b是兩個(gè)對(duì)象 Object類(lèi) (續(xù) ) ——例 4_7 Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 52 ? 修改剛才的程序 public class Exam4_7{ public static void main(String args[]){ BankAccount a = new BankAccount(Bob, 123456, )。 BankAccount b = a。 if (a == b) (YES)。 else (NO)。 } } ? 將 a所指對(duì)象的引用賦給 b, 因此 a與 b指向的是同一個(gè)對(duì)象, a與 b同一。輸出結(jié)果為“ YES” Object類(lèi) (續(xù) ) ——例 4_7 Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 53 ? equals 方法 –由于 Object是類(lèi)層次結(jié)構(gòu)中的樹(shù)根節(jié)點(diǎn),因此所有其他類(lèi)都繼承了 equals()方法 – Object類(lèi)中的 equals() 方法的定義如下,public boolean equals(Object x) { return this == x。 } Object類(lèi) (續(xù) ) ——equals方法 Object類(lèi) 比較接收對(duì)象與參數(shù)對(duì)象是否是同一個(gè)對(duì)象,即 對(duì)象地址是否相同。因此, Object中的 equals()方法 判斷的是兩個(gè)對(duì)象是否同一,而不是屬性值是否相同。 –可見(jiàn),也是判斷兩個(gè)對(duì)象是否同一 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 54 ? Object類(lèi)中 equals方法的使用舉例 public class EqualsTest{ public static void main(String args[]){ BankAccount a = new BankAccount(Bob, 123456, )。 BankAccount b = new BankAccount(Bob, 123456, )。 if ((b)) (YES)。 else (NO)。 } } ? 由于不是同一對(duì)象,運(yùn)行結(jié)果仍然是“ NO” Object類(lèi) (續(xù) ) ——例 4_8 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 55 ? equlas方法的重寫(xiě) –要判斷兩個(gè)對(duì)象各個(gè)屬性域的值是否相同 , 則不能使用從 Object類(lèi)繼承來(lái)的equals方法, 而需要在類(lèi)聲明中對(duì)equals方法進(jìn)行重寫(xiě) –答案: String類(lèi)中已經(jīng)重寫(xiě)了 Object類(lèi)的equals方法,可以判別兩個(gè)字符串是否內(nèi)容相同 Object類(lèi) (續(xù) ) ——equals方法 的重寫(xiě) Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 56 ? 在 BankAccount類(lèi)中增加 equals方法,由于是對(duì)Object類(lèi)中的 equals方法進(jìn)行重寫(xiě),因此方法定義頭必須與 Object類(lèi)中的 equals方法完全相同 public boolean equals(Object x) { if (() != ()) return false。 BankAccount b = (BankAccount) x。 return ((().equals(())) amp。amp。(() == ()) amp。amp。(() == ()))。 } Object類(lèi) (續(xù) ) ——equals方法 的重寫(xiě) Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 57 ? equals方法的應(yīng)用舉例 public class Apple { private String color。 private boolean ripe。 public Apple(String aColor, boolean isRipe) { color = aColor。 ripe = isRipe。 } public void setColor(String aColor) { color = aColor。 } public void setRipe(boolean isRipe) { ripe = isRipe。 } public String getColor() { return color。 } public boolean getRipe() { return ripe。 } public String toString() { if (ripe) return(A ripe + color + apple)。 else return(A not so ripe + color + apple)。 } Object類(lèi) Object類(lèi) (續(xù) ) ——例 4_9 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 58 public boolean equals(Object obj) { if (obj instanceof Apple) { Apple a = (Apple) obj。 return ((()) amp。amp。 (ripe == ()))。 } return false。 } } public class AppleTester { public static void main(String args[]) { Apple a = new Apple(red, true)。 Apple b = new Apple(red, true)。 (a + is equal to + b + : + (b))。 (a is identical to b: + (a == b))。 Apple c = a。 (a + is equal to + c + : + (c))。 (a is identical to c: + (a == c))。 } } Object類(lèi) (續(xù) ) ——例 4_9 Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 59 ? 運(yùn)行結(jié)果 – A ripe red apple is equal to A ripe red apple: true – a is identical to b: false – A ripe red apple is equal to A ripe red apple: true – a is identical to c: true Object類(lèi) (續(xù) ) ——例 4_9運(yùn)行結(jié)果 Object類(lèi) 清華大學(xué) 鄭莉 JAVA語(yǔ)言程序設(shè)計(jì) 60 ? Clone方法 –根據(jù)已存在的對(duì)象構(gòu)造一個(gè)新的對(duì)象 –在根類(lèi) Object 中被定義為 protected,所以需要覆蓋為 public –實(shí)現(xiàn) Cloneable 接口,賦予一個(gè)對(duì)象被克隆的能力 (cloneability) class MyObject implements Cloneable { //… } Object類(lèi) Object類(lèi) (續(xù) ) ——Clone方法 清華大學(xué) 鄭莉 JAV
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1