




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、講師:魏國(guó)生講師:魏國(guó)生 EmailEmail:中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心JavaSE知識(shí)圖解知識(shí)圖解JAVA發(fā)展歷程JAVA環(huán)境搭建基礎(chǔ)程序設(shè)計(jì)數(shù)據(jù)類型流程控制運(yùn)算符數(shù)組面向?qū)ο缶幊填惡蛯?duì)象屬性方法設(shè)計(jì)模式接口三大特性應(yīng)用程序開(kāi)發(fā)JDBC集合異常處理類庫(kù)多線程IO反射網(wǎng)絡(luò)連接OracleJAVA新特性Eclipse使用泛型枚舉裝箱/拆箱可變參數(shù)Annotation中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心本章內(nèi)容本章內(nèi)容4.1 面向?qū)ο筇卣髦嫦驅(qū)ο筇卣髦豪^承4.2 方法的重寫(override)4.3 四種訪問(wèn)權(quán)限修飾符4.4 關(guān)鍵字super4.5 面向?qū)ο竺嫦驅(qū)ο筇卣魈卣髦憾鄳B(tài)4.6
2、 Object類、包裝類中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.1 面向?qū)ο竺嫦驅(qū)ο筇卣髦豪^承特征之二:繼承l(wèi) 為描述和處理個(gè)人個(gè)人信息,定義類Person:public class Person public String name; public int age; public Date birthDate; public String getInfo() .PersonPerson+name : String +age : int+birthDate : Date+getInfo() : String中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心繼繼 承承(1) l 為描述和處理學(xué)生學(xué)生信息,定義類Stude
3、nt:public class Student public String name; public int age; public Date birthDate; public String school; public String getInfo() .Student+name : String +age : int+birthDate : Date+school : String+getInfo() : String中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心Student類Worker類Teacher類Person類通過(guò)類的繼承通過(guò)類的繼承Farmer類中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心特有的代碼特有的代
4、碼特有的代碼特有的代碼學(xué)生類教師類工人類農(nóng)民類人類通過(guò)繼承的方式實(shí)現(xiàn)中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心繼繼 承承(2) l 通過(guò)繼承,簡(jiǎn)化Student類的定義:public class Person public String name; public int age; public Date birthDate; public String getInfo() .public class Student extends Person public String school;/Student類繼承了父類Person的所有屬性和方法,并增加了一個(gè)屬性school。Person中的屬性和方法,Stu
5、dent都可以利用。PersonPerson+name : String +age : int+birthDate : Date+getInfo() : StringStudentStudent+school : String中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心l 為什么要有繼承?為什么要有繼承? 多個(gè)類中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類中,那么多個(gè)類無(wú)需再定義這些屬性和行為,只要繼承那個(gè)類即可。l 此處的多個(gè)類稱為子類子類,單獨(dú)的這個(gè)類稱為父類(基類或超類)??梢岳斫鉃?“子類 is a 父類”l 類繼承語(yǔ)法規(guī)則: class Subclass extends Superclass
6、繼繼 承承(3) 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心繼繼 承承(4) l 作用: 繼承的出現(xiàn)提高了代碼的復(fù)用性。 繼承的出現(xiàn)讓類與類之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提。 不要僅為了獲取其他類中某個(gè)功能而去繼承中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心類的繼承類的繼承 (5)l 子類繼承了父類,就繼承了父類的方法和屬性。l 在子類中,可以使用父類中定義的方法和屬性,也可以創(chuàng)建新的數(shù)據(jù)和方法。l 在Java 中,繼承的關(guān)鍵字用的是“extends”,即子類不是父類的子集,而是對(duì)父類的“擴(kuò)展”。關(guān)于繼承的規(guī)則:關(guān)于繼承的規(guī)則:子類子類不能直接訪問(wèn)父不能直接訪問(wèn)父類中私有的類中私有的(private)的成員變量和方法。的成
7、員變量和方法。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心單繼承舉例單繼承舉例Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : StringSoldierOfficerGraduate+major : String+register() : voidsuperclasssubclasssubsubclass中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心類的繼承類的繼承 (6)l Java只支持單繼承,不允許多重繼承 一個(gè)子類只能有一個(gè)父類 一個(gè)父類可以派生出多個(gè)子類 class SubDemo extends
8、Demo /ok class SubDemo extends Demo1,Demo2./error多重繼承多重繼承多層繼承多層繼承中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心練習(xí)練習(xí)11.定義一個(gè)學(xué)生類定義一個(gè)學(xué)生類StudentStudent,它繼承自,它繼承自PersonPerson類類Person#name: String#sex:char#age:int+Person(name:String sex:char age:int)+toString():StringStudentnumber:longint:mathint:englishint:computer+Student(n:String s:ch
9、ar a:int k:long m:int e:int c:int)+aver():double+max():int+min():int+toString():String中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.2 方法的重寫方法的重寫(override)l 定義定義:在子類中可以根據(jù)需要對(duì)從父類中繼承來(lái)的方法進(jìn)行改造,也稱方法的重置、覆蓋。在程序執(zhí)行時(shí),子類的方法將覆蓋父類的方法。l 要求要求: 重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型。 重寫方法不能使用比被重寫方法更嚴(yán)格的訪問(wèn)權(quán)限。 重寫和被重寫的方法須同時(shí)為static的,或同時(shí)為非static的 子類方法拋出的異常不能
10、大于父類被重寫方法的異常中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心重寫方法舉例重寫方法舉例public class Person public String name; public int age; public String getInfo() return Name: + name + n +age: + age; public class Student extends Person public String school; public String getInfo() /重寫方法 return Name: + name + nage: + age + nschool: + school; pu
11、blic static void main(String args) Student s1=new Student(); =Bob; s1.age=20; s1.school=school2; System.out.println(s1.getInfo(); /Name:Bob age:20 school:school2 Person p1=new Person();p1.getInfo();/調(diào)用Person類的getInfo()方法Student s1=new Student();s1.getInfo();/調(diào)用Student類的getInfo()方法這是一種“多態(tài)性”:同名
12、的方法,用不同的對(duì)象來(lái)區(qū)分調(diào)用的是哪一個(gè)方法。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心Java權(quán)限修飾符public、protected、private置于類的成員類的成員定義前,用來(lái)限定對(duì)象對(duì)該類對(duì)象成員的訪問(wèn)權(quán)限。4.3 四種訪問(wèn)權(quán)限四種訪問(wèn)權(quán)限修飾符修飾符修飾符修飾符類內(nèi)部類內(nèi)部同一個(gè)包同一個(gè)包子類子類任何地方任何地方privateYesdefaultYesYesprotectedYesYesYespublicYesYesYesYes對(duì)于class的權(quán)限修飾只可以用public和default。 public類可以在任意地方被訪問(wèn)。 default類只可以被同一個(gè)包內(nèi)部的類訪問(wèn)。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)
13、優(yōu)化中心訪問(wèn)控制舉例訪問(wèn)控制舉例class Parent private int f1 = 1; int f2 = 2; protected int f3 = 3; public int f4 = 4; private void fm1() System.out.println(in fm1() f1= + f1); void fm2() System.out.println(in fm2() f2= + f2); protected void fm3() System.out.println(in fm3() f3= + f3); public void fm4() System.out.p
14、rintln(in fm4() f4= + f4);中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心訪問(wèn)控制舉例訪問(wèn)控制舉例class Child extends Parent /設(shè)父類和子類在同一個(gè)包內(nèi)private int c1 = 21;public int c2 = 22; private void cm1()System.out.println(in cm1() c1= + c1);public void cm2()System.out.println(in cm2() c2= + c2);public static void main(String args)int i; Parent p = new
15、 Parent();i = p.f2; / i = p.f3;i = p.f4;p.fm2(); / p.fm3();p.fm4();Child c = new Child();i = c.f2; / i = c.f3;i = c.f4;i = c.c1; / i = c.c2;c.cm1(); / c.cm2(); c.fm2(); c.fm3(); c.fm4()中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.4 關(guān)鍵字關(guān)鍵字superl 在Java類中使用super來(lái)調(diào)用父類中的指定操作: super可用于訪問(wèn)父類中定義的屬性 super可用于調(diào)用父類中定義的成員方法 super可用于在子類構(gòu)造方法中調(diào)
16、用父類的構(gòu)造器l 注意: 尤其當(dāng)子父類出現(xiàn)同名成員時(shí),可以用super進(jìn)行區(qū)分 super的追溯不僅限于直接父類 super和this的用法相像,this代表本類對(duì)象的引用,super代表父類的內(nèi)存空間的標(biāo)識(shí)中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心關(guān)鍵字關(guān)鍵字super舉例舉例class Person protected String name=張三; protected int age;public String getInfo() return Name: + name + nage: + age; class Student extends Person protected String name
17、= 李四;private String school = New Oriental;public String getSchool() return school; public String getInfo() return super.getInfosuper.getInfo() () +nschool: +school; public class TestStudentpublic static void main(String args)Student st = new Student();System.out.println(st.getInfo(); 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心調(diào)
18、用父類的構(gòu)造調(diào)用父類的構(gòu)造器器l 子類中所有的構(gòu)造器默認(rèn)默認(rèn)都會(huì)訪問(wèn)父類中空參數(shù)空參數(shù)的構(gòu)造器l 當(dāng)父類中沒(méi)有空參數(shù)的構(gòu)造器時(shí),子類的構(gòu)造器必須通過(guò)this(this(參數(shù)列表參數(shù)列表) )或者super(super(參數(shù)列表參數(shù)列表) )語(yǔ)句指定調(diào)用本類或者父類中相應(yīng)的構(gòu)造器,且必須放在構(gòu)造器的第一行l(wèi) 如果子類構(gòu)造器中既未顯式調(diào)用父類或本類的構(gòu)造器,且父類中又沒(méi)有無(wú)參的構(gòu)造器,則編譯出錯(cuò)編譯出錯(cuò)中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心調(diào)用父類構(gòu)造調(diào)用父類構(gòu)造器器舉例舉例 1 public class Person 2 3 private String name;4 private int age;5p
19、rivate Date birthDate;67 public Person(String name, int age, Date d) 8 = name;9 this.age = age;10 this.birthDate = d;11 12 public Person(String name, int age) 13 this(name, age, null);14 15 public Person(String name, Date d) 16 this(name, 30, d);17 18 public Person(String name) 19 this(nam
20、e, 30);2021 / 22 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心調(diào)用父類構(gòu)造調(diào)用父類構(gòu)造器器舉例舉例 1 public class Student extends Person 2 private String school;34 public Student(String name, int age, String s) 5 super(name, age);6 school = s;7 8 public Student(String name, String s) 9 super(name);10 school = s;11 12 public Student(String s) / 編譯出
21、錯(cuò)編譯出錯(cuò): no super(),系統(tǒng)將調(diào)用父系統(tǒng)將調(diào)用父類類 無(wú)無(wú)參數(shù)的構(gòu)造方法。參數(shù)的構(gòu)造方法。13 school = s;14 15 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心this和和super的區(qū)別的區(qū)別No.區(qū)別點(diǎn)區(qū)別點(diǎn)thissuper1訪問(wèn)屬性訪問(wèn)本類中的屬性,如果本類沒(méi)有此屬性則從父類中繼續(xù)查找訪問(wèn)父類中的屬性2調(diào)用方法訪問(wèn)本類中的方法直接訪問(wèn)父類中的方法3調(diào)用構(gòu)造器 調(diào)用本類構(gòu)造器,必須放在構(gòu)造器的首行調(diào)用父類構(gòu)造器,必須放在子類構(gòu)造器的首行4特殊表示當(dāng)前對(duì)象無(wú)此概念中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.5 面向?qū)ο筇卣髦憾鄳B(tài)性面向?qū)ο筇卣髦憾鄳B(tài)性l 多態(tài)性,是面向?qū)ο笾凶钪匾母?/p>
22、念,在java中有兩種體現(xiàn):1. 方法的重載(overload)和重寫(overwrite)。2.2. 對(duì)象對(duì)象的多態(tài)性的多態(tài)性 可以直接應(yīng)用在抽象類和接口上。l Java引用變量有兩個(gè)類型:編譯時(shí)類型編譯時(shí)類型和運(yùn)行時(shí)類型運(yùn)行時(shí)類型。編譯時(shí)類型由聲明該變量時(shí)使用的類型決定,運(yùn)行時(shí)類型由實(shí)際賦給該變量的對(duì)象決定。 若編譯時(shí)類型和運(yùn)行時(shí)類型不一致,就出現(xiàn)多態(tài)(若編譯時(shí)類型和運(yùn)行時(shí)類型不一致,就出現(xiàn)多態(tài)(PolymorphismPolymorphism)中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心多態(tài)性多態(tài)性(2)l 對(duì)象的多態(tài) 在Java中,子類的對(duì)象可以替代父類的對(duì)象使用 一個(gè)變量只能有一種確定的數(shù)據(jù)類型 一
23、個(gè)引用類型變量可能指向(引用)多種不同類型的對(duì)象Person p = new Student();Object o = new Person();/Object類型的變量o,指向Person類型的對(duì)象o = new Student(); /Object類型的變量o,指向Student類型的對(duì)象u子子類可看做是特殊的父類可看做是特殊的父類,所以父類類型的引用可以指向子類,所以父類類型的引用可以指向子類的對(duì)象:向上轉(zhuǎn)型類的對(duì)象:向上轉(zhuǎn)型( (upcastingupcasting) )。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心多態(tài)性多態(tài)性(3)l 一個(gè)引用類型變量如果聲明為父類的類型,但實(shí)際引一個(gè)引用類型變量如
24、果聲明為父類的類型,但實(shí)際引用的是子類對(duì)象,那么該變量就用的是子類對(duì)象,那么該變量就不能不能再訪問(wèn)子類中添再訪問(wèn)子類中添加的屬性和方法加的屬性和方法Student m = new Student();m.school = “pku”; /合法合法,Student類有類有school成員變量成員變量Person e = new Student(); e.school = “pku”;/非法非法,Person類沒(méi)有類沒(méi)有school成員變量成員變量 屬性是在編譯時(shí)確定的,編譯時(shí)屬性是在編譯時(shí)確定的,編譯時(shí)e為為Person類型,沒(méi)有類型,沒(méi)有school成員變量,成員變量,因而編譯錯(cuò)誤。因而編譯錯(cuò)
25、誤。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心虛擬方法調(diào)用虛擬方法調(diào)用(Virtual Method Invocation)l 正常的方法調(diào)用正常的方法調(diào)用 Person e = new Person(); e.getInfo(); Student e = new Student(); e.getInfo();l 虛擬方法調(diào)用虛擬方法調(diào)用(多態(tài)情況下多態(tài)情況下) Person e = new Student(); e.getInfo();/調(diào)用調(diào)用Student類的類的getInfo()方法方法l 編譯時(shí)類型和運(yùn)行時(shí)類型編譯時(shí)類型和運(yùn)行時(shí)類型編譯時(shí)編譯時(shí)e為為Person類型,而方法的調(diào)用是在運(yùn)行時(shí)確定的,
26、所類型,而方法的調(diào)用是在運(yùn)行時(shí)確定的,所以調(diào)用的是以調(diào)用的是Student類的類的getInfo()方法。方法。動(dòng)態(tài)綁定動(dòng)態(tài)綁定中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心多態(tài)小結(jié)多態(tài)小結(jié)l 前提前提:需要存在繼承或者實(shí)現(xiàn)關(guān)系要有覆蓋操作l 成員方法:成員方法:編譯時(shí):要查看引用變量所屬的類中是否有所調(diào)用的方法。運(yùn)行時(shí):調(diào)用實(shí)際對(duì)象所屬的類中的重寫方法。l 成員成員變量:變量:不具備多態(tài)性,只看引用變量所屬的類。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心l子類繼承父類子類繼承父類若子類重寫了父類方法,就意味著子類里定義的方法徹底覆蓋了父類里的同名方法,系統(tǒng)將不可能把父類里的方法轉(zhuǎn)移到子類中對(duì)于實(shí)例變量則不存在這樣的現(xiàn)象,即
27、使子類里定義了與父類完全相同的實(shí)例變量,這個(gè)實(shí)例變量依然不可能覆蓋父類中定義的實(shí)例變量類的屬性無(wú)多態(tài)性類的屬性無(wú)多態(tài)性中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心練習(xí):繼承成員變量和繼承方法的區(qū)別練習(xí):繼承成員變量和繼承方法的區(qū)別class Baseint count = 10;public void display()System.out.println(this.count);class Sub extends Baseint count = 20;public void display()System.out.println(this.count);public class TestFieldMetho
28、d public static void main(String args) Sub s = new Sub();System.out.println(s.count);s.display();Base b = s;System.out.println(b = s);System.out.println(b.count);b.display();中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心對(duì)象類型轉(zhuǎn)換對(duì)象類型轉(zhuǎn)換 (Casting )l 基本數(shù)據(jù)類型的基本數(shù)據(jù)類型的CastingCasting: 自動(dòng)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換:小的數(shù)據(jù)類型可以自動(dòng)轉(zhuǎn)換成大的數(shù)據(jù)類型 如long g=20; double d=12.
29、0f 強(qiáng)制類型轉(zhuǎn)換:強(qiáng)制類型轉(zhuǎn)換:可以把大的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換(casting)成小的數(shù)據(jù)類型 如 float f=(float)12.0; int a=(int)1200Ll 對(duì)對(duì)JavaJava對(duì)象的強(qiáng)制類型轉(zhuǎn)換稱為造型對(duì)象的強(qiáng)制類型轉(zhuǎn)換稱為造型 從子類到父類的類型轉(zhuǎn)換可以自動(dòng)進(jìn)行從子類到父類的類型轉(zhuǎn)換可以自動(dòng)進(jìn)行 從父類到子類的類型轉(zhuǎn)換必須通過(guò)造型從父類到子類的類型轉(zhuǎn)換必須通過(guò)造型( (強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換) )實(shí)現(xiàn)實(shí)現(xiàn) 無(wú)繼承關(guān)系的引用類型間的轉(zhuǎn)換是非法的無(wú)繼承關(guān)系的引用類型間的轉(zhuǎn)換是非法的 在造型前可以使用在造型前可以使用instanceofinstanceof操作符測(cè)試一個(gè)對(duì)象的
30、類型操作符測(cè)試一個(gè)對(duì)象的類型中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心對(duì)象類型轉(zhuǎn)換舉例對(duì)象類型轉(zhuǎn)換舉例public class ConversionTestpublic static void main(String args) double d = 13.4;long l = (long)d;System.out.println(l);int in = 5;/boolean b = (boolean)in;Object obj = Hello;String objStr = (String)obj;System.out.println(objStr);Object objPri = new Integer
31、(5);/所以下面代碼運(yùn)行時(shí)引發(fā)ClassCastException異常if(objPri instanceof String)String str = (String)objPri; 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心對(duì)象類型轉(zhuǎn)換舉例對(duì)象類型轉(zhuǎn)換舉例public class Test public class Test public void method(Person e) public void method(Person e) /設(shè)Person類中沒(méi)有g(shù)etschool()方法 / System.out.pritnlnSystem.out.pritnln( (e.getschoole.get
32、school(); (); /非法,編譯時(shí)錯(cuò)誤 if(e if(e instanceofinstanceof Student) Student) Student me = (Student)e; Student me = (Student)e;/將e強(qiáng)制轉(zhuǎn)換為Student類型 System.out.pritnlnSystem.out.pritnln( (me.getschoolme.getschool();(); public static void main( public static void main(StirngStirng argsargs) Test t = new Test(
33、); Test t = new Test(); Student m = new Student(); Student m = new Student(); t.methodt.method(m);(m); 中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心較高級(jí)的基本數(shù)據(jù)類型較低級(jí)的基本數(shù)據(jù)類型自動(dòng)類型轉(zhuǎn)化強(qiáng)制類型轉(zhuǎn)化父類(如:Person)子類(如:Student)向上轉(zhuǎn)型向下轉(zhuǎn)型使用instanceof進(jìn)行判斷中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.6 Object 類類l Object類是所有Java類的根父類l 如果在類的聲明中未使用extends關(guān)鍵字指明其父類,則默認(rèn)父類為Object類 public clas
34、s Person .等價(jià)于:public class Person extends Object .l 例:method(Object obj)/可以接收任何類作為其參數(shù) Person o=new Person(); method(o);中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心Object類中的主要方法類中的主要方法NO.方法名稱方法名稱類型類型 描述描述1public Object()構(gòu)造構(gòu)造方法2public boolean equals(Object obj)普通對(duì)象比較3public int hashCode()普通取得Hash碼4public String toString()普通對(duì)象打印時(shí)調(diào)用
35、中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心=操作符與操作符與equals方法方法l = = =: 基本類型比較值:只要兩個(gè)變量的值相等,即為int a=5; if(a=6a=5; if(a=6) 引用類型比較引用(是否指向同一個(gè)對(duì)象):只有指向同一個(gè)對(duì)象時(shí),=才返回true.Person p1=new Person(); Person p1=new Person(); Person p2=new Person(); Person p2=new Person(); if (p1=p2) if (p1=p2)用“=”進(jìn)行比較時(shí),符號(hào)兩邊的數(shù)據(jù)類型必?cái)?shù)據(jù)類型必須須兼容兼容(可自動(dòng)轉(zhuǎn)換的基本數(shù)據(jù)類型
36、除外),否則編譯出錯(cuò);中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心=操作符與操作符與equals方法方法l equals()equals():所有類都繼承了:所有類都繼承了ObjectObject,也就獲得了,也就獲得了equals()equals()方法。方法。還可以重寫。還可以重寫。 只能比較引用類型,其作用與只能比較引用類型,其作用與“=”=”相同相同, ,比較是否指向同一個(gè)比較是否指向同一個(gè)對(duì)象對(duì)象。 格式格式:obj1.equals(obj2):obj1.equals(obj2)l 特例:當(dāng)用特例:當(dāng)用equals()equals()方法進(jìn)行比較時(shí),對(duì)類方法進(jìn)行比較時(shí),對(duì)類FileFile、Stri
37、ngString、DateDate及包裝類(及包裝類(Wrapper ClassWrapper Class)來(lái)說(shuō),是比較類型及內(nèi)容而不考慮)來(lái)說(shuō),是比較類型及內(nèi)容而不考慮引用的是否是同一個(gè)對(duì)象引用的是否是同一個(gè)對(duì)象; 原因:在這些類中重寫了原因:在這些類中重寫了ObjectObject類的類的equals()equals()方法。方法。中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心int it = 65;float fl = 65.0f;System.out.println(“65和65.0f是否相等?” + (it = fl); /truechar ch1 = A; char ch2 = 12;System.
38、out.println(65和A是否相等? + (it = ch1);/trueSystem.out.println(“12和ch2是否相等? + (12 = ch2);/trueString str1 = new String(hello);String str2 = new String(hello);System.out.println(str1和str2是否相等?+ (str1 = str2);/falseSystem.out.println(str1是否equals str2?+(str1.equals(str2);/trueSystem.out.println(“hello” =
39、new java.sql.Date(); /編譯不通過(guò)練練 習(xí)習(xí)中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心toString() 方法方法ltoStringtoString() ()方法在方法在ObjectObject類中定義,其返回值是類中定義,其返回值是StringString類型,返回類名和它的引用地址。類型,返回類名和它的引用地址。l在進(jìn)行在進(jìn)行StringString與其它類型數(shù)據(jù)的連接操作時(shí),自動(dòng)調(diào)用與其它類型數(shù)據(jù)的連接操作時(shí),自動(dòng)調(diào)用toStringtoString() ()方法方法Date now=new Date();Date now=new Date();System.out.printl
40、nSystem.out.println(“now=”+now); (“now=”+now); 相當(dāng)于相當(dāng)于 System.out.printlnSystem.out.println(“now=”+(“now=”+now.toStringnow.toString(); (); l可以根據(jù)需要在用戶自定義類型中重寫可以根據(jù)需要在用戶自定義類型中重寫toStringtoString() ()方法方法如如String String 類重寫了類重寫了toStringtoString() ()方法,返回字符串的值。方法,返回字符串的值。s1=“hello”;s1=“hello”;System.out.printlnSystem.out.println(s1);/(s1);/相當(dāng)于相當(dāng)于System.out.printlnSystem.out.println(s1.toString();(s1.toString();l基本類型數(shù)據(jù)轉(zhuǎn)換為基本類型數(shù)據(jù)轉(zhuǎn)換為StringString類型時(shí),調(diào)用了對(duì)應(yīng)包裝類的類型時(shí),調(diào)用了對(duì)應(yīng)包裝類的toStringtoString() ()方法方法 intint a=10; a=10; System.out.printlnSystem.out.println(“a=”+a);(“a=”+a);中國(guó)移動(dòng)遼寧公司網(wǎng)絡(luò)優(yōu)化中心4.6 包裝類包裝類(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 配件買賣合同
- 湖北省十堰市2024-2025學(xué)年高二上學(xué)期1月期末地理試題 含解析
- 日常辦公事務(wù)處理文書(shū)詳案
- 融資借款合同協(xié)議書(shū)
- 數(shù)據(jù)傳輸效率評(píng)估表
- 產(chǎn)品分銷合同協(xié)議規(guī)范書(shū)
- 中學(xué)生科普知識(shí)解讀征文
- 電商平臺(tái)在線客服機(jī)器人技術(shù)支持協(xié)議
- 《現(xiàn)代酒店管理基礎(chǔ)》(第二版)課件 任務(wù)9 酒店集團(tuán)化管理
- 幼兒?jiǎn)⒚沙烧Z(yǔ)故事解讀
- 聘請(qǐng)常年法律顧問(wèn)合同樣本7篇
- 2024年環(huán)北部灣廣西水資源配置有限公司招聘考試真題
- 2023-2024年演出經(jīng)紀(jì)人之演出經(jīng)紀(jì)實(shí)務(wù)考前沖刺模擬試卷附答案(研優(yōu)卷)
- 第16課《有為有不為 》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 上海市建設(shè)工程施工圖設(shè)計(jì)文件勘察設(shè)計(jì)質(zhì)量疑難問(wèn)題匯編(2024 版)
- 2025年無(wú)錫職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年北京戲曲藝術(shù)職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年青海西寧廣播電視臺(tái)招聘20人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 胸腔閉式引流護(hù)理
- 西門子自動(dòng)化培訓(xùn)
- DB51T 2722-2020 四川省行政執(zhí)法文書(shū)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論