版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 Java高級(jí)語言特征 1第五章第五章 Java Java 高級(jí)語言特征高級(jí)語言特征靜態(tài)變量、方法與初始化程序塊靜態(tài)變量、方法與初始化程序塊final 關(guān)鍵字關(guān)鍵字抽象類抽象類Interfacepackage訪問控制訪問控制內(nèi)部類內(nèi)部類其它其它第5章 Java高級(jí)語言特征 25.1 static關(guān)鍵詞關(guān)鍵詞 static關(guān)鍵詞可以用來修飾類的成員變量、成員方關(guān)鍵詞可以用來修飾類的成員變量、成員方法和內(nèi)部類,使得這些類成員的創(chuàng)建和使用與類相法和內(nèi)部類,使得這些類成員的創(chuàng)建和使用與類相關(guān)而與類的具體實(shí)例不相關(guān),因此以關(guān)而與類的具體實(shí)例不相關(guān),因此以static修飾的變修飾的變量或方法又稱為類
2、變量或類方法。量或方法又稱為類變量或類方法。第5章 Java高級(jí)語言特征 3類變量(類變量(static /class variable)在該類所有實(shí)例之間是共享的。在加載該類時(shí),只分配在該類所有實(shí)例之間是共享的。在加載該類時(shí),只分配一次空間,并初始化。一次空間,并初始化。例:例:class Employee class Employee static static int com ;int com ; 則運(yùn)行時(shí)則運(yùn)行時(shí)comcomcomcome1e2e3第5章 Java高級(jí)語言特征 4類變量(類變量(static /class variable)類變量可用來在實(shí)例之間進(jìn)行通信或跟蹤該類實(shí)例的
3、數(shù)目。類變量可用來在實(shí)例之間進(jìn)行通信或跟蹤該類實(shí)例的數(shù)目。例:例:public class Countprivate int serialNumber ;private static int counter = 0 ;public Count( ) counter+ ; serialNumber = counter ; 第5章 Java高級(jí)語言特征 5類變量可以是類變量可以是public 或或private類型。類型。對(duì)于對(duì)于public 類型的類變量,可以在類外直接用類名調(diào)用類型的類變量,可以在類外直接用類名調(diào)用而不需要初始化。而不需要初始化。 Public class StaticVarp
4、ublic static int number ;public class Otherclass public void method() int x = StaticVar.number ; 類變量(類變量(static /class variable)第5章 Java高級(jí)語言特征 6類(類(class/static)方法方法可以直接被調(diào)用,而不需要生成任何實(shí)例可以直接被調(diào)用,而不需要生成任何實(shí)例public class GeneralFunction public static int addUp(int x, int y) return x+y ; public calss UseGen
5、eral public void method() int c = GeneralFunction.addUp(9,10); 第5章 Java高級(jí)語言特征 7靜態(tài)方法編寫需要注意的問題靜態(tài)方法編寫需要注意的問題:l 因?yàn)殪o態(tài)方法的調(diào)用不是通過實(shí)例對(duì)象進(jìn)行的,所以因?yàn)殪o態(tài)方法的調(diào)用不是通過實(shí)例對(duì)象進(jìn)行的,所以在靜態(tài)方法中沒有在靜態(tài)方法中沒有this指針,不能訪問所屬類的非靜態(tài)指針,不能訪問所屬類的非靜態(tài)變量和方法。變量和方法。l 子類不能重寫父類的靜態(tài)方法,但在子類中可以聲明子類不能重寫父類的靜態(tài)方法,但在子類中可以聲明與父類靜態(tài)方法相同的方法,從而將父類的靜態(tài)方法與父類靜態(tài)方法相同的方法,從而
6、將父類的靜態(tài)方法隱藏。另外子類不能把父類的非靜態(tài)方法重寫為靜態(tài)隱藏。另外子類不能把父類的非靜態(tài)方法重寫為靜態(tài)的。的。l main()方法是一個(gè)靜態(tài)方法。在方法是一個(gè)靜態(tài)方法。在main()方法中訪問所在方法中訪問所在類的成員變量或方法,就必須首先創(chuàng)建相應(yīng)的實(shí)例對(duì)類的成員變量或方法,就必須首先創(chuàng)建相應(yīng)的實(shí)例對(duì)象。象。class ClassA public void methodOne(int i) public void methodTwo(int i) public static void methodThree(int i) public static void methodFour(int
7、 i)class ClassB extends ClassA public static void methodOne(int i) public void methodTwo(int i) public void mehtodThreee(int i) public static void methodFour(int i)第5章 Java高級(jí)語言特征 8 靜態(tài)初始化程序靜態(tài)初始化程序不屬于任何方法體且以不屬于任何方法體且以static關(guān)鍵詞修飾的語句塊稱為靜態(tài)關(guān)鍵詞修飾的語句塊稱為靜態(tài)語句塊。在加載該類時(shí)執(zhí)行且只執(zhí)行一次。語句塊。在加載該類時(shí)執(zhí)行且只執(zhí)行一次。public Class St
8、aticInitDemo static int i=5; static System.out.println(“Static code: i=”+i+); public class Test public static void main(String args) System.out.println(“ Main code: i=”+StaticInitDemo.i); Static code: i=5Main code: i = 6第5章 Java高級(jí)語言特征 95.2 Final 關(guān)鍵字關(guān)鍵字 被定義成被定義成final的類不能有子類。的類不能有子類。例:例: final class E
9、mployee class Manager extends Employee 被定義成被定義成final 的成員方法不能被重寫。的成員方法不能被重寫。被定義成被定義成final的成員變量不能改變。該變量實(shí)際上是常的成員變量不能改變。該變量實(shí)際上是常量,一般大寫,并賦值。量,一般大寫,并賦值。 final int NUMBER = 100;第5章 Java高級(jí)語言特征 105.3 抽象類抽象類一個(gè)類如果只聲明方法而沒有方法的實(shí)現(xiàn),則稱為抽象類。一個(gè)類如果只聲明方法而沒有方法的實(shí)現(xiàn),則稱為抽象類。必須在聲明中增加必須在聲明中增加 abstract 關(guān)鍵字,在無方法體的方法前關(guān)鍵字,在無方法體的方法
10、前 也要加上也要加上abstract。Public abstract class Drawing public abstract void drawDot( int x, int y); public void drawLine(int x1, int y1, int x2,int y2) . / 調(diào)用調(diào)用drawDot()方法方法 抽象類也可有普通的成員變量或方法。抽象類也可有普通的成員變量或方法。第5章 Java高級(jí)語言特征 11抽象類不能直接用來生成實(shí)例。一般可通過定義抽象類不能直接用來生成實(shí)例。一般可通過定義子類進(jìn)行實(shí)例化。子類進(jìn)行實(shí)例化。 可以生成抽象類的變量,該變量可以指向具體的一
11、個(gè)可以生成抽象類的變量,該變量可以指向具體的一個(gè)子類的實(shí)例。子類的實(shí)例。Abstract class Employee abstract void raiseSalary(int i) ;class Manager extends Employee void raiseSalary(int i ) .Employee e = new Manager( ) ;第5章 Java高級(jí)語言特征 12抽象類的作用:抽象類的作用:l 程序中定義抽象類的目的是為一類對(duì)象建立抽象的模程序中定義抽象類的目的是為一類對(duì)象建立抽象的模型,在同類對(duì)象所對(duì)應(yīng)的類體系中,抽象類往往在頂型,在同類對(duì)象所對(duì)應(yīng)的類體系中,抽象
12、類往往在頂層。一方面使類的設(shè)計(jì)變得清晰;另一方面抽象類也層。一方面使類的設(shè)計(jì)變得清晰;另一方面抽象類也為類的體系提供通用的接口。為類的體系提供通用的接口。注:注:l 實(shí)際上,即使不包括任何抽象方法,也可以將一個(gè)類實(shí)際上,即使不包括任何抽象方法,也可以將一個(gè)類聲明為抽象類。這樣的類往往是沒有必要定義任何抽聲明為抽象類。這樣的類往往是沒有必要定義任何抽象方法,而設(shè)計(jì)者又想禁止創(chuàng)建該類的實(shí)例對(duì)象,此象方法,而設(shè)計(jì)者又想禁止創(chuàng)建該類的實(shí)例對(duì)象,此時(shí)只需在類的聲明中加上時(shí)只需在類的聲明中加上abstract關(guān)鍵詞。關(guān)鍵詞。第5章 Java高級(jí)語言特征 135.4 接口接口 (interface) Int
13、erface 是在抽象類概念的基礎(chǔ)上演變而來的。是在抽象類概念的基礎(chǔ)上演變而來的。一個(gè)一個(gè)interface所有成員方法都是抽象的,并且只能所有成員方法都是抽象的,并且只能定義定義 static final 成員變量。成員變量。第5章 Java高級(jí)語言特征 14接口的定義接口的定義接口的定義包括接口聲明和接口體兩部分,格式如下:接口的定義包括接口聲明和接口體兩部分,格式如下: 接口聲明接口聲明:public interface InterfaceName extends listofSuperInterface 接口體:接口體:l接口體中包含常量定義和方法定義兩部分接口體中包含常量定義和方法定
14、義兩部分l接口中定義的常量默認(rèn)具有接口中定義的常量默認(rèn)具有public、final、static的屬性的屬性type NAME=value;l接口中聲明的方法默認(rèn)具有接口中聲明的方法默認(rèn)具有public和和abstract屬性屬性returnType methodName(paramlist);第5章 Java高級(jí)語言特征 15Interface 的含義的含義 interface定義了一組行為的協(xié)議。兩個(gè)對(duì)象之間通過這個(gè)定義了一組行為的協(xié)議。兩個(gè)對(duì)象之間通過這個(gè)協(xié)議進(jìn)行通信。協(xié)議進(jìn)行通信。 interface 不屬于類層次結(jié)構(gòu)。不相關(guān)的類可以實(shí)現(xiàn)相同的不屬于類層次結(jié)構(gòu)。不相關(guān)的類可以實(shí)現(xiàn)相同的
15、接口接口。第5章 Java高級(jí)語言特征 16interfaceFlyerVehicleinterfaceSailerdock ( )cruise ( )Airplanetakeoff ( )land ( )fly ( )RiverBargedock ( )cruise ( )takeoff ( )land ( )fly ( )SeaPlanedock ( )cruise ( )HelicopterInterface 示例示例第5章 Java高級(jí)語言特征 17用用implements代替代替extends聲明子類,該子類中必須實(shí)現(xiàn)聲明子類,該子類中必須實(shí)現(xiàn)接口(及其超類)中的所有方法。接口(及其
16、超類)中的所有方法。例:例:interface SayHello void printMessage( ); class SayHelloImpl implements SayHellovoid printMessage( ) System.out.println(“Hello”); 實(shí)現(xiàn)實(shí)現(xiàn)interfacepublic interface Flyer public void takeoff(); public void land(); public fly();public class Airplane implements Flyer public void takeoff() publ
17、ic void land() public void fly()第5章 Java高級(jí)語言特征 18Interface的使用的使用 Interface可以作為一種數(shù)據(jù)類型使用可以作為一種數(shù)據(jù)類型使用,并且可以支持多態(tài)。并且可以支持多態(tài)。任何實(shí)現(xiàn)該接口的類都可以認(rèn)為是該接口的子類,因此任何實(shí)現(xiàn)該接口的類都可以認(rèn)為是該接口的子類,因此聲明為某接口類型的變量,可以指向該接口子類的實(shí)例,聲明為某接口類型的變量,可以指向該接口子類的實(shí)例,通過這些變量可以訪問接口中規(guī)定的方法。通過這些變量可以訪問接口中規(guī)定的方法。public class StockMonitor public void watchStoc
18、k(StockWatcher watcher, String tickerSymbol, double delta) 舉例舉例:通過接口實(shí)現(xiàn)通過接口實(shí)現(xiàn)shape多態(tài)示例。(教材多態(tài)示例。(教材124頁)頁)第5章 Java高級(jí)語言特征 19可以通過實(shí)現(xiàn)接口實(shí)現(xiàn)多重繼承:一個(gè)類可只繼承可以通過實(shí)現(xiàn)接口實(shí)現(xiàn)多重繼承:一個(gè)類可只繼承一個(gè)父類,并實(shí)現(xiàn)多個(gè)接口。一個(gè)父類,并實(shí)現(xiàn)多個(gè)接口。interface I1 ;interface I2 ;class E . ;class M extends E implements I1,I2 接口接口 interfacepublic class Bird ext
19、ends Animal implements Flyer public void takeoff() public void land() public void fly() public void buildNest() public void layEggs() public void eat()第5章 Java高級(jí)語言特征 20通過繼承擴(kuò)展接口通過繼承擴(kuò)展接口interface Shape void draw(); void erase(); double area();interface ShapeArea extends Shape double area();注:直接向注:直接向S
20、hape中增加方法的方式擴(kuò)展接口可能帶來中增加方法的方式擴(kuò)展接口可能帶來問題,所有實(shí)現(xiàn)原來接口的類都將因?yàn)榻涌诘母淖兌粏栴},所有實(shí)現(xiàn)原來接口的類都將因?yàn)榻涌诘母淖兌荒苷9ぷ?;通過創(chuàng)建接口的子類既可以實(shí)現(xiàn)擴(kuò)展接口能正常工作;通過創(chuàng)建接口的子類既可以實(shí)現(xiàn)擴(kuò)展接口又不影響實(shí)現(xiàn)該接口的類。又不影響實(shí)現(xiàn)該接口的類。第5章 Java高級(jí)語言特征 21接口與抽象類接口與抽象類 接口與抽象類有一定的相似性,但實(shí)際上二者有很大的接口與抽象類有一定的相似性,但實(shí)際上二者有很大的區(qū)別:區(qū)別:l接口中的所有方法都是抽象的,而抽象類可以定義帶接口中的所有方法都是抽象的,而抽象類可以定義帶有方法體的不同方法。有方法
21、體的不同方法。l一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,而只能繼承一個(gè)抽象父類。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,而只能繼承一個(gè)抽象父類。l接口與實(shí)現(xiàn)它的類不構(gòu)成類的繼承體系。即接口不是接口與實(shí)現(xiàn)它的類不構(gòu)成類的繼承體系。即接口不是類體系的一部分。而抽象類是屬于一個(gè)類的繼承體系,類體系的一部分。而抽象類是屬于一個(gè)類的繼承體系,并且一般位于類體系的頂層。并且一般位于類體系的頂層。 接口的優(yōu)勢(shì):接口的優(yōu)勢(shì):l可以實(shí)現(xiàn)多重繼承。可以實(shí)現(xiàn)多重繼承。l能夠抽象出不相關(guān)類之間的相似性,而沒有強(qiáng)行形成能夠抽象出不相關(guān)類之間的相似性,而沒有強(qiáng)行形成類的繼承關(guān)系。類的繼承關(guān)系。第5章 Java高級(jí)語言特征 225.5 包包包包(pack
22、age)是相關(guān)類與接口的一個(gè)集合,它提供訪問控制與是相關(guān)類與接口的一個(gè)集合,它提供訪問控制與命名空間管理。命名空間管理。 Java平臺(tái)中的類與接口都是根據(jù)功能以包組織的。平臺(tái)中的類與接口都是根據(jù)功能以包組織的。包機(jī)制的好處:包機(jī)制的好處: 程序員容易確定包中的類是相關(guān)的,并且容易根據(jù)所需程序員容易確定包中的類是相關(guān)的,并且容易根據(jù)所需的功能找到相應(yīng)的類。的功能找到相應(yīng)的類。 每個(gè)包都創(chuàng)建一個(gè)新的命名空間,因此不同包中的類名每個(gè)包都創(chuàng)建一個(gè)新的命名空間,因此不同包中的類名不會(huì)沖突。不會(huì)沖突。 同一個(gè)包中的類之間有比較寬松的訪問控制。同一個(gè)包中的類之間有比較寬松的訪問控制。第5章 Java高級(jí)語言
23、特征 23創(chuàng)建包創(chuàng)建包用用package語句指定源文件中的類屬于一個(gè)特定包:語句指定源文件中的類屬于一個(gè)特定包: package 包名;包名; 包定義語句在每個(gè)源程序中只能有一條,包定義語句在每個(gè)源程序中只能有一條, 即一個(gè)類只能屬即一個(gè)類只能屬于一個(gè)包。于一個(gè)包。包定義語句必須在程序的第一行(之前可有空格及注釋)。包定義語句必須在程序的第一行(之前可有空格及注釋)。包名用包名用“.” 分隔。分隔。第5章 Java高級(jí)語言特征 24import 語句語句將將package 引入源程序,格式:引入源程序,格式:import 包名包名.*;import 包名包名. 類名;類名; import 語句
24、必須在源程序之前,在語句必須在源程序之前,在package 聲明之后。聲明之后。 package . /缺省是缺省是package . import . /缺省是缺省是import java.lang.*類聲明類聲明 .第5章 Java高級(jí)語言特征 25包定義與使用示例包定義與使用示例package graphics.twoD;public class Rectangle public int width=0; public int height=0; public Point origin; public Rectangle(Point p,int w,int h) origin=p; wi
25、dth=w; height=h; public void move(int x,int y) origin.x=x; origin.y=y; 第5章 Java高級(jí)語言特征 26public int area() return width*height; package graphics.twoD;public calss Point public int x=0; public int y=0; public Point(int x,int y) this.x=x; this.y=y; 第5章 Java高級(jí)語言特征 27import graphics.twoD.*;public class T
26、estPackage public static void main(String args) Point p=new Point(2,3); Rectangle r=new Rectangle(p,10,10); System.out.println(“the area of the rectangle is ”+r.area(); 第5章 Java高級(jí)語言特征 28包名與包中類的存儲(chǔ)位置包名與包中類的存儲(chǔ)位置包分隔符相當(dāng)于目錄分隔符,包存儲(chǔ)的路徑由包分隔符相當(dāng)于目錄分隔符,包存儲(chǔ)的路徑由包根路徑加上包名指明的路徑組成。包根路徑加上包名指明的路徑組成。包的根路徑由包的根路徑由CLASSPAT
27、H環(huán)境變量指出。環(huán)境變量指出。%CLASSPATH%abc financeDept第5章 Java高級(jí)語言特征 29源文件源文件(.java)(.java)與類文件與類文件(.class)(.class)的管理的管理源文件可以按照包名指明的路徑放置。如源文件可以按照包名指明的路徑放置。如 類文件也應(yīng)該放在反映包名的一系列目錄下。類文件也應(yīng)該放在反映包名的一系列目錄下。第5章 Java高級(jí)語言特征 30一般將源文件與類文件分別存放,可采用如下方式:一般將源文件與類文件分別存放,可采用如下方式:源文件源文件(.java)與類文件與類文件(.class)的管理的管理示例示例第5章 Java高級(jí)語言特
28、征 315.6 訪問控制訪問控制成員變量和方法有成員變量和方法有4種訪問級(jí)別:種訪問級(jí)別:public, protected, default(package), private ;類有兩種訪問級(jí)別:類有兩種訪問級(jí)別:public 或或default。修飾符的作用范圍:修飾符的作用范圍:Modifier Same class Same Package Subclass Universepublic Yes YesYes Yesprotected Yes YesYesdefault Yes Yesprivate Yes第5章 Java高級(jí)語言特征 32類中帶有類中帶有privateprivate
29、的成員只能被這個(gè)類自身訪問。的成員只能被這個(gè)類自身訪問。class Alpha class Alpha private int iamprivate; private int iamprivate; private void privateMethod() private void privateMethod() System.out.println(privateMethod); System.out.println(privateMethod); class Beta class Beta void accessMethod() void accessMethod() Alpha a =
30、new Alpha(); Alpha a = new Alpha(); a.iamprivate = 10; a.iamprivate = 10; a.privateMethod(); a.privateMethod(); 訪問控制訪問控制-private/ illegal/ illegal/ illegal/ illegal第5章 Java高級(jí)語言特征 33class Alpha class Alpha private int iamprivate; private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) boolean i
31、sEqualTo(Alpha anotherAlpha) if (this.iamprivate = anotherAlpha.iamprivate) if (this.iamprivate = anotherAlpha.iamprivate) return true; return true; else else return false; return false; 注意注意:訪問控制應(yīng)用于:訪問控制應(yīng)用于class或或type 層次,而不是對(duì)象層次。層次,而不是對(duì)象層次。第5章 Java高級(jí)語言特征 34允許類本身以及同一個(gè)包中其余的類訪問這些成員。允許類本身以及同一個(gè)包中其余的類訪問這
32、些成員。package Greek; package Greek; class Alpha class Alpha int iampackage; int iampackage; void packageMethod() void packageMethod() System.out.println(packageMethod);System.out.println(packageMethod); package Greek; package Greek; class Beta class Beta void accessMethod() void accessMethod() Alpha a
33、 = new Alpha(); Alpha a = new Alpha(); a.iampackage = 10; a.iampackage = 10; a.packageMethod(); a.packageMethod(); 訪問控制訪問控制package 第5章 Java高級(jí)語言特征 35允許類本身、它的子類、以及同一個(gè)包中其余的類訪問這些成員。允許類本身、它的子類、以及同一個(gè)包中其余的類訪問這些成員。package Greek; package Greek; public class Alpha public class Alpha protected int iamprotected
34、; protected int iamprotected; protected void protectedMethod() protected void protectedMethod() System.out.println(protectedMethod); System.out.println(protectedMethod); package Greek; package Greek; class Gamma class Gamma void accessMethod() void accessMethod() Alpha a = new Alpha(); Alpha a = new
35、 Alpha(); a.iamprotected = 10; a.iamprotected = 10; tectedMethod(); tectedMethod(); 訪問控制訪問控制protected/ legal/ legal/ legal/ legal第5章 Java高級(jí)語言特征 36package Latin; package Latin; import Greek.import Greek.* *; ; class Delta extends Alpha class Delta extends Alpha void accessMethod(Alpha a, De
36、lta d) void accessMethod(Alpha a, Delta d) a.iamprotected = 10; a.iamprotected = 10; d.iamprotected = 10; d.iamprotected = 10; tectedMethod(); tectedMethod(); tectedMethod(); tectedMethod(); X X X X訪問控制訪問控制protected第5章 Java高級(jí)語言特征 37 public的成員可以被所有的類訪問,任何包中的任何類的成員可以被所有的類訪問,任何包中的任何
37、類都可以直接訪問都可以直接訪問public變量和方法。變量和方法。 對(duì)于構(gòu)造方法,如果訪問權(quán)限限定為對(duì)于構(gòu)造方法,如果訪問權(quán)限限定為public,則在所有,則在所有類中都可以生成該類的實(shí)例。類中都可以生成該類的實(shí)例。 一般把外界需要直接訪問的類成員,很多情況下是方一般把外界需要直接訪問的類成員,很多情況下是方法,說明為法,說明為public訪問權(quán)限,用來作為外界與類交換信訪問權(quán)限,用來作為外界與類交換信息的接口。息的接口。訪問控制訪問控制public 第5章 Java高級(jí)語言特征 385.7 內(nèi)部類內(nèi)部類內(nèi)部類是在一個(gè)類的聲明里聲明的類。內(nèi)部類是在一個(gè)類的聲明里聲明的類。Class A cla
38、ss B 內(nèi)部類可作為類的一個(gè)成員使用。一般只在包容類中內(nèi)部類可作為類的一個(gè)成員使用。一般只在包容類中調(diào)用。調(diào)用。內(nèi)部類可以訪問外包類的所有成員。內(nèi)部類可以訪問外包類的所有成員。第5章 Java高級(jí)語言特征 39public class Outer private int size; public class Inner public void doStuff() size+; Inner i=new Inner(); public void increaseSize() i.doStuff(); 第5章 Java高級(jí)語言特征 40public static void main(String
39、args) Outer o=new Outer(); for(int i=0;i4;i+) o.increaseSize(); System.out.println(“the value of size:”+o.size); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:the value of size:1the value of size:2the value of size:3the value of size:4第5章 Java高級(jí)語言特征 415.8 其它其它5.8.1 基本數(shù)據(jù)類型的包裝類基本數(shù)據(jù)類型的包裝類l java中,從執(zhí)行效率的角度考慮,基本數(shù)據(jù)類型,例中,從執(zhí)行效率的角度考慮,基本數(shù)據(jù)類型,例如如
40、int、double等,不作為類來對(duì)待。等,不作為類來對(duì)待。l java提供了提供了wrapper類,即包裝類,用來把基本數(shù)據(jù)類類,即包裝類,用來把基本數(shù)據(jù)類型表示成類。每個(gè)型表示成類。每個(gè)java基本數(shù)據(jù)類型在基本數(shù)據(jù)類型在java.lang包中包中都有一個(gè)對(duì)應(yīng)的都有一個(gè)對(duì)應(yīng)的wrapper類。類。l 每個(gè)每個(gè)wrapper類對(duì)象都封裝了基本類型的一個(gè)值。類對(duì)象都封裝了基本類型的一個(gè)值。第5章 Java高級(jí)語言特征 42Wrapper類類基本數(shù)據(jù)類型基本數(shù)據(jù)類型 包裝類包裝類booleanBooleanbyteBytecharCharactershortShortint Integerlon
41、gLongfloatFloatdoubleDouble第5章 Java高級(jí)語言特征 43 把基本數(shù)據(jù)類型的一個(gè)值傳遞給包裝類的相應(yīng)構(gòu)造函數(shù),把基本數(shù)據(jù)類型的一個(gè)值傳遞給包裝類的相應(yīng)構(gòu)造函數(shù),可以構(gòu)造可以構(gòu)造wrapper類的對(duì)象。類的對(duì)象。例:例:Wrapper類對(duì)象的創(chuàng)建:類對(duì)象的創(chuàng)建:l Integer quantity = new Integer(123456);l Double amount = new Double(345987.246); Wrapper類中包含了很多有用的方法和常量。類中包含了很多有用的方法和常量。l 數(shù)字型數(shù)字型Wrapper類中的類中的MIN_VALUE 和和
42、 MAX_VALUE 常量,定義常量,定義了該類型的最大值與最小值。了該類型的最大值與最小值。l byteValue, shortValue方法進(jìn)行數(shù)值轉(zhuǎn)換。方法進(jìn)行數(shù)值轉(zhuǎn)換。l valueOf 和和 toString 實(shí)現(xiàn)字符串與數(shù)值之間的轉(zhuǎn)換。實(shí)現(xiàn)字符串與數(shù)值之間的轉(zhuǎn)換。第5章 Java高級(jí)語言特征 445.8.2 集合類集合類一個(gè)集合類對(duì)象表示了一組對(duì)象,相當(dāng)于一個(gè)容器。一個(gè)集合類對(duì)象表示了一組對(duì)象,相當(dāng)于一個(gè)容器。Java的的Collection API包括了下列核心接口。包括了下列核心接口。第5章 Java高級(jí)語言特征 45 Collectionl Collection接口是集合接口
43、樹的根,它定義了集合操作的通用接口是集合接口樹的根,它定義了集合操作的通用API。對(duì)。對(duì)Collection接口的某些實(shí)現(xiàn)類允許有重復(fù)元素,而另接口的某些實(shí)現(xiàn)類允許有重復(fù)元素,而另一些不允許有重復(fù)元素;某些是有序的而另一些是無序的。一些不允許有重復(fù)元素;某些是有序的而另一些是無序的。JDK中沒有提供這個(gè)接口的實(shí)現(xiàn),而是提供了它的子接口,中沒有提供這個(gè)接口的實(shí)現(xiàn),而是提供了它的子接口,例如例如Set和和List的實(shí)現(xiàn)。的實(shí)現(xiàn)。 Setl Set中不能包含重復(fù)的元素。它是數(shù)學(xué)中集合概念的抽象。中不能包含重復(fù)的元素。它是數(shù)學(xué)中集合概念的抽象。 Listl List是一個(gè)有序的集合,稱為列表或序列。是
44、一個(gè)有序的集合,稱為列表或序列。List中可以包含重中可以包含重復(fù)的元素。可以通過元素在復(fù)的元素??梢酝ㄟ^元素在List中的索引號(hào)訪問相應(yīng)的元素。中的索引號(hào)訪問相應(yīng)的元素。 Mapl Map實(shí)現(xiàn)鍵值到值的映射。實(shí)現(xiàn)鍵值到值的映射。Map中不能包含重復(fù)的鍵值,每中不能包含重復(fù)的鍵值,每個(gè)鍵值最多只能映射到一個(gè)值。個(gè)鍵值最多只能映射到一個(gè)值。 SortedSet和和SortedMapl SortedSet和和SortedMap分別是具有排序性能的分別是具有排序性能的Set和和Map。第5章 Java高級(jí)語言特征 46SetSet不能包含重復(fù)的元素。不能包含重復(fù)的元素。 JDK中提供了實(shí)現(xiàn)中提供了實(shí)
45、現(xiàn)set接口的三個(gè)實(shí)用類:接口的三個(gè)實(shí)用類:HashSet類、類、TreeSet類和類和LinkedHashSet類。類。 Set 接口定義接口定義:public interface Set public interface Set / Basic Operations / Basic Operations int size(); int size(); boolean isEmpty(); boolean isEmpty(); boolean contains(Object element); boolean contains(Object element); boolean add(Obj
46、ect element); / Optional boolean add(Object element); / Optional boolean remove(Object element); / Optional boolean remove(Object element); / Optional Iterator iterator(); Iterator iterator(); 第5章 Java高級(jí)語言特征 47 例例:Set的使用示例:的使用示例: import java.util.*; Public class FindDups Public static void main(Stri
47、ng args) Set s=new HashSet(); for (int i=0;iargs.length;i+) if (!s.add(argsi) System.out.println(“Duplicate detected:”+argsi); System.out.println(s.size()+”distinct words detected:”+s); 第5章 Java高級(jí)語言特征 48List List是有序的集合,元素可以重復(fù)。是有序的集合,元素可以重復(fù)。 List接口定義接口定義:public interface List extends Collection publi
48、c interface List extends Collection / Positional Access / Positional Access Object get(int index); Object get(int index); Object set(int index, Object element); / Optional Object set(int index, Object element); / Optional void add(int index, Object element); / Optional void add(int index, Object ele
49、ment); / Optional Object remove(int index); / Optional Object remove(int index); / Optional abstract boolean addAll(int index, Collection c); / Optional abstract boolean addAll(int index, Collection c); / Optional / Search / Search int indexOf(Object o);int indexOf(Object o); int lastIndexOf(Object
50、o); List的實(shí)現(xiàn)的實(shí)現(xiàn): ArrayList, LinkedList,Vector第5章 Java高級(jí)語言特征 49例:例:List的使用示例的使用示例Import java.util.*;Class Deal public static void main(String args) int numHands=Integer.parseInt(args0); int cardsPerHand=Integer.parseInt(args1); String suit=new String“黑桃黑桃”,”紅桃紅桃”,”方片方片”,”梅花梅花”; String rank=new String“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”; List deck=new ArrayList(); for (int i=0;isuit.length;i+) for (int j=0;jrank.leng
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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年漢中三二O一醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024版巖棉板采購合同范文正規(guī)范本
- 大班體育活動(dòng)好玩的墊子
- 2024年緊急貸款合同模板3篇
- 2024版房地產(chǎn)合作開發(fā)合同3篇
- 小學(xué)信息技術(shù)六年級(jí)上冊(cè)第9課《大氣污染》說課稿
- 活動(dòng)二《昆蟲保護(hù)宣傳畫》(說課稿)-2023-2024學(xué)年三年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)滬科黔科版
- 勞動(dòng)法規(guī)培訓(xùn)
- 五官科內(nèi)鏡護(hù)理查房
- 《網(wǎng)絡(luò)營(yíng)銷課程全集》課件
- 綜合技能訓(xùn)練實(shí)訓(xùn)報(bào)告學(xué)前教育
- 2024年國(guó)家能源集團(tuán)招聘筆試參考題庫含答案解析
- MOOC 管理學(xué)-鄭州輕工業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 軍事理論智慧樹知到期末考試答案2024年
- 2024年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 《混凝土的檢測(cè)》課件
- 衛(wèi)生健康系統(tǒng)2024年安全生產(chǎn)和消防工作要點(diǎn)
- CNC數(shù)控編程述職報(bào)告
- 生產(chǎn)車間環(huán)境改善方案
- 2024年高考物理真題分類匯編(全一本附答案)
- 2024-2025年上海中考英語真題及答案解析
評(píng)論
0/150
提交評(píng)論