版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言程序設(shè)計(jì)第4章類(lèi)、對(duì)象和方法
1面向?qū)ο蟾攀?3主要內(nèi)容Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社2022定義類(lèi)與創(chuàng)建對(duì)象構(gòu)造方法45案例:使用自定義日期類(lèi)方法設(shè)計(jì)7靜態(tài)變量和靜態(tài)方法89案例:打印斐波那契數(shù)列對(duì)象個(gè)初始化10變量的作用域6案例:分?jǐn)?shù)類(lèi)Fraction的設(shè)計(jì)11局部變量類(lèi)型推斷12垃圾回收J(rèn)ava語(yǔ)言程序設(shè)計(jì)面向?qū)ο蟾攀鯰IOBE編程語(yǔ)言2022年9月排行榜Python排名第一,Python再次刷新了自己的占比,以4.07%的增長(zhǎng)率占據(jù)15.74%的市場(chǎng)份額。相較之下,C、Java、C++和C#的占比都有所下降。Python用于大數(shù)據(jù)、人工智能、數(shù)據(jù)分析。C用于嵌入式、底層開(kāi)發(fā)、系統(tǒng)開(kāi)發(fā)。Java用于網(wǎng)絡(luò)開(kāi)發(fā)、企業(yè)開(kāi)發(fā)等。TOP10編程語(yǔ)言排名走勢(shì)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社計(jì)算機(jī)語(yǔ)言范式Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社計(jì)算機(jī)編程語(yǔ)言范式面向過(guò)程面向?qū)ο蠛瘮?shù)式邏輯式FORTRANCOBOLBASICAdaPascalCSmalltalkC++VisualBasicC#JavaPythonLISPSchemeProlog計(jì)算機(jī)語(yǔ)言可以根據(jù)其解決問(wèn)題的方法進(jìn)行分類(lèi)。范式是描述程序如何處理數(shù)據(jù)的模型或框架。對(duì)計(jì)算機(jī)語(yǔ)言有多種分類(lèi)方法。根據(jù)范式可分為四種:面向過(guò)程的編程語(yǔ)言、面向?qū)ο蟮木幊陶Z(yǔ)言、函數(shù)式編程語(yǔ)言和邏輯式編程語(yǔ)言。面向?qū)ο缶幊痰漠a(chǎn)生Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社吸收了結(jié)構(gòu)化程序設(shè)計(jì)思想精華,提出一些新的概念。以接近人類(lèi)思維的方法描述軟件對(duì)象,降低了軟件開(kāi)發(fā)難度,提高了開(kāi)發(fā)速度。軟件具有可復(fù)用、易維護(hù)以及可擴(kuò)展性。OOP成為當(dāng)今最流行的軟件開(kāi)發(fā)技術(shù)。面向?qū)ο缶幊痰漠a(chǎn)生Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社現(xiàn)實(shí)世界OOP語(yǔ)言類(lèi),對(duì)象計(jì)算機(jī)世界抽象C語(yǔ)言等基本概念Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社面向?qū)ο蟪绦蛟O(shè)計(jì)(object-orientedprogramming,OOP)對(duì)象(Object)現(xiàn)實(shí)世界中,一個(gè)人、一輛汽車(chē)、一臺(tái)電視機(jī)、一所學(xué)校,一次會(huì)議、一場(chǎng)足球比賽、一個(gè)賬戶(hù)等
。對(duì)象的兩方面的特征:狀態(tài):描述對(duì)象的靜態(tài)特征。行為:描述對(duì)象的動(dòng)態(tài)特征?;靖拍頙ava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社一輛汽車(chē):狀態(tài)描述:生產(chǎn)廠家、顏色、出廠年份、價(jià)格等。行為描述:?jiǎn)?dòng)、加速、轉(zhuǎn)彎和停止等
。對(duì)象的定義:是其自身所具有的狀態(tài)特征及可以對(duì)這些狀態(tài)施加的操作結(jié)合在一起所構(gòu)成的實(shí)體?;靖拍頙ava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社一名員工:狀態(tài)描述:姓名、年齡、工資。行為描述:說(shuō)話(huà)、工作、計(jì)算工資等
?;靖拍頙ava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社一個(gè)對(duì)象可以非常簡(jiǎn)單,也可以非常復(fù)雜。復(fù)雜的對(duì)象往往是由若干個(gè)簡(jiǎn)單對(duì)象組合而成的。例如,一輛汽車(chē)就是由發(fā)動(dòng)機(jī)、輪胎、車(chē)身等許多其他對(duì)象組成?;靖拍頙ava語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社類(lèi)(class)最重要的概念。如人類(lèi)、魚(yú)類(lèi)、交通工具類(lèi)等。類(lèi)定義:具有相似特征和行為的對(duì)象的描述。人類(lèi)具有的區(qū)別于其他動(dòng)物的特征有直立行走、使用工具、使用語(yǔ)言交流、能工作等。所有的事物都可以歸到某類(lèi)中。例如,汽車(chē)屬于交通工具類(lèi),手機(jī)屬于通信工具類(lèi)。
基本概念Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社實(shí)例(instance)或?qū)ο竽硞€(gè)類(lèi)的一個(gè)具體的對(duì)象稱(chēng)為該類(lèi)的一個(gè)實(shí)例。例如,我的汽車(chē)是汽車(chē)類(lèi)的實(shí)例,張三是學(xué)生類(lèi)的實(shí)例。類(lèi)3個(gè)實(shí)例基本概念Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社消息對(duì)象與對(duì)象之間不是孤立的,它們之間存在著某種聯(lián)系,這種聯(lián)系是通過(guò)消息傳遞的。例如,開(kāi)汽車(chē)就是人向汽車(chē)傳遞消息。向?qū)ο蟀l(fā)送的消息包含三方面的內(nèi)容接收消息的對(duì)象接收對(duì)象采用的方法(操作)方法所需要的參數(shù)myCar.speedUp(100);OOP的優(yōu)勢(shì)Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社可復(fù)用代碼可被代碼的創(chuàng)建者或其他人復(fù)用。語(yǔ)言本身提供類(lèi)庫(kù)或API(應(yīng)用編程接口)。問(wèn)題的解決方案也可復(fù)用,這些方案稱(chēng)為設(shè)計(jì)模式。易維護(hù)很容易實(shí)現(xiàn)程序模塊化,減少了維護(hù)的開(kāi)銷(xiāo)。類(lèi)就是一個(gè)模塊,并且可以繼承。可以實(shí)現(xiàn)“高內(nèi)聚,低耦合”??蓴U(kuò)展功能可以被擴(kuò)展或增強(qiáng)。通過(guò)繼承來(lái)實(shí)現(xiàn)。Java語(yǔ)言程序設(shè)計(jì)定義類(lèi)與創(chuàng)建對(duì)象面向?qū)ο缶幊叹褪鞘褂脤?duì)象進(jìn)行程序設(shè)計(jì)。對(duì)象代表現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的一個(gè)實(shí)體。每個(gè)對(duì)象都有自己獨(dú)特的標(biāo)識(shí)、狀態(tài)和行為。概述類(lèi)是組成Java程序的基本要素,它封裝了一類(lèi)對(duì)象的狀態(tài)和行為,是這一類(lèi)對(duì)象的原形。定義一個(gè)新的類(lèi),就創(chuàng)建了一種新的數(shù)據(jù)類(lèi)型,實(shí)例化一個(gè)類(lèi),就得到一個(gè)對(duì)象。類(lèi)是一個(gè)模板或藍(lán)圖,它用來(lái)定義對(duì)象的數(shù)據(jù)域是什么以及方法是做什么的。一個(gè)對(duì)象是類(lèi)的一個(gè)實(shí)例(instance)??梢杂靡粋€(gè)類(lèi)創(chuàng)建多個(gè)實(shí)例。創(chuàng)建實(shí)例的過(guò)程稱(chēng)為實(shí)例化(instantiation)。6.1.1類(lèi)的定義Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社一個(gè)類(lèi)的定義包括兩個(gè)部分類(lèi)聲明類(lèi)體的定義類(lèi)聲明的一般格式為
[public]classClassName{//1.成員變量聲明:定義狀態(tài)//2.構(gòu)造方法的定義//3.成員方法的定義:定義行為}packagecom.boda.xy;publicclassEmployee{Stringname;intage;
doublesalary;publicEmployee(){}publicStringgetName(){returnname;}程序4.1Employee.javapublicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicdoublegetSalary(){returnsalary;}
publicvoidsetSalary(doublesalary){this.salary=salary;}publicvoidsayHello(){System.out.println("Mynameis"+name);}publicdoublecomputeSalary(inthours,doublerate){doubletotalSalary=salary+hours*rate;returntotalSalary;}}有了Employee類(lèi),就可以創(chuàng)建該類(lèi)的實(shí)例,然后訪問(wèn)它的成員和調(diào)用它的方法完成有關(guān)操作,如調(diào)用computeSalary()方法計(jì)算員工的工資等。下面程序使用Employee類(lèi)創(chuàng)建一個(gè)對(duì)象并訪問(wèn)它的變量和方法。創(chuàng)建和使用對(duì)象publicstaticvoidmain(String[]args){Employeeemployee;employee=newEmployee();="李明";employee.age=28;employee.salary=5000.00;System.out.println("姓名="
+);System.out.println("年齡="
+employee.age);System.out.println("工資="
+employee.salary);employee.sayHello();}程序4.2EmployeeDemo.java6.1.1創(chuàng)建和使用對(duì)象Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社使用構(gòu)造方法創(chuàng)建對(duì)象Employeeemployee;employee=newEmployee();employee:Employeename:nullage:0salary:0.0="李明";employee.age=28;employee.salary=5000.00;:Employeename:李明age:28salary:5000.06.1.1創(chuàng)建和使用對(duì)象Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社若要聲明多個(gè)同類(lèi)型的對(duì)象名,可用逗號(hào)分開(kāi)。
Employeeemp1,emp2;也可以將對(duì)象的聲明和創(chuàng)建對(duì)象使用一個(gè)語(yǔ)句完成。
Employeeemployee=newEmployee();若對(duì)象僅在創(chuàng)建處使用,也可以不聲明引用名,如下面語(yǔ)句直接創(chuàng)建一個(gè)Employee對(duì)象,然后調(diào)用其sayHello()方法。newEmployee().sayHello();6.1.1對(duì)象的引用賦值Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社假設(shè)聲明2個(gè)員工對(duì)象Employeeemp1=newEmployee();=“李明";Employeeemp2=emp1;=“劉晨";System.out.println();emp1:Employeename:李明age:0salary:0.0emp2:Employeename:劉晨age:0salary:0.0UML(UnifiedModelingLanguage)稱(chēng)為統(tǒng)一建模語(yǔ)言,它是一種面向?qū)ο蟮慕UZ(yǔ)言,它運(yùn)用統(tǒng)一的、標(biāo)準(zhǔn)化的標(biāo)記和定義實(shí)現(xiàn)對(duì)軟件系統(tǒng)進(jìn)行面向?qū)ο蟮拿枋龊徒?。用UML圖表示類(lèi)在UML中可以用類(lèi)圖描述一個(gè)類(lèi)。圖4-4是Employee類(lèi)的類(lèi)圖,它用長(zhǎng)方形表示,一般包含三個(gè)部分:上面是類(lèi)名,中間是成員變量清單,下面是構(gòu)造方法和普通方法清單。有時(shí)為了簡(jiǎn)化類(lèi)的表示,可能省略后兩部分,只保留類(lèi)名部分。在UML類(lèi)圖中,可以包含有關(guān)成員訪問(wèn)權(quán)限的信息。public成員的前面加一個(gè)“+”,private成員前加“-”,protected成員前加“#”,不加任何前綴的成員被看作具有默認(rèn)訪問(wèn)級(jí)別。用UML圖表示類(lèi)Employee類(lèi)包含三個(gè)私有成員變量,兩個(gè)構(gòu)造方法和三個(gè)普通方法。在UML圖中,成員變量和類(lèi)型之間用冒號(hào)分隔。方法的參數(shù)列表放在圓括號(hào)中,參數(shù)需指定名稱(chēng)和類(lèi)型,它的返回值類(lèi)型寫(xiě)在一個(gè)冒號(hào)后面。當(dāng)Java程序運(yùn)行時(shí),JVM首先需要將有關(guān)類(lèi)的字節(jié)碼加載到內(nèi)存,對(duì)字節(jié)碼進(jìn)行校驗(yàn),然后需要給數(shù)據(jù)和代碼分配內(nèi)存空間。JVM將內(nèi)存大致分為3個(gè)部分:棧區(qū)、堆區(qū)、方法區(qū)。理解棧與堆棧區(qū):由編譯器自動(dòng)分配釋放,局部變量的值、方法的參數(shù)值等存儲(chǔ)在棧區(qū),方法執(zhí)行結(jié)束后,系統(tǒng)自動(dòng)釋放棧區(qū)內(nèi)存。堆區(qū):由程序員分配,存放new創(chuàng)建的對(duì)象和數(shù)組,JVM不定期檢查堆區(qū),如果對(duì)象沒(méi)有引用指向它,內(nèi)存將被回收。方法區(qū):存放類(lèi)的元數(shù)據(jù)、靜態(tài)字段和方法字節(jié)碼。理解棧與堆下面通過(guò)一個(gè)簡(jiǎn)單例子說(shuō)明棧區(qū)、堆區(qū)和方法區(qū)內(nèi)存的分配情況。設(shè)有下面Person類(lèi)和PersonDemo類(lèi)的定義。publicclassPerson{intage=20;publicvoidshow(){System.out.println(age);}}PersonDemo類(lèi)publicclassPersonDemo{publicvoidmain(String[]args){intnum=88;Personp=newPerson();p.show();}}當(dāng)main()方法執(zhí)行時(shí),JVM首先創(chuàng)建一個(gè)活動(dòng)記錄(activationrecord),它包括main()方法中聲明的局部變量num和p對(duì)象引用,它們存儲(chǔ)在棧中。用new創(chuàng)建對(duì)象時(shí),將在堆中分配內(nèi)存,棧中存放對(duì)象的首地址。理解棧與堆Java語(yǔ)言程序設(shè)計(jì)構(gòu)造方法每個(gè)類(lèi)都有構(gòu)造方法(constructor),構(gòu)造方法用來(lái)創(chuàng)建類(lèi)的對(duì)象或?qū)嵗?gòu)造方法也有名稱(chēng)、參數(shù)和方法體。構(gòu)造方法與普通方法的區(qū)別是:(1)構(gòu)造方法的名稱(chēng)必須與類(lèi)名相同。(2)構(gòu)造方法不能有返回值,也不能返回void。(3)構(gòu)造方法必須在創(chuàng)建對(duì)象時(shí)用new運(yùn)算符調(diào)用。概述構(gòu)造方法定義的格式為:[public|protected|private]ClassName([paramlist]){//方法體}概述這里,public、protected和private為構(gòu)造方法的訪問(wèn)修飾符,它用來(lái)決定哪些類(lèi)可以使用該構(gòu)造方法創(chuàng)建對(duì)象。這些訪問(wèn)修飾符與一般方法的訪問(wèn)修飾符的含義相同。構(gòu)造方法名必須與類(lèi)名相同,構(gòu)造方法可以帶有參數(shù)。如果在定義類(lèi)是時(shí)沒(méi)有為類(lèi)定義任何構(gòu)造方法,則編譯器自動(dòng)為類(lèi)添加一個(gè)默認(rèn)構(gòu)造方法(defaultconstructor)。默認(rèn)構(gòu)造方法是無(wú)參數(shù)構(gòu)造方法(no-argsconstructor),方法體為空。假設(shè)沒(méi)有為Employee類(lèi)定義構(gòu)造方法,編譯器提供的默認(rèn)構(gòu)造方法如下:無(wú)參數(shù)構(gòu)造方法publicEmployee(){}//默認(rèn)構(gòu)造方法用戶(hù)也可以為類(lèi)定義無(wú)參數(shù)構(gòu)造方法,并在方法體中初始化對(duì)象。例如,在Employee類(lèi)中,可以定義下面的無(wú)參數(shù)構(gòu)造方法:無(wú)參數(shù)構(gòu)造方法publicEmployee(){name="";age=0;salary=0.0;}使用無(wú)參數(shù)構(gòu)造方法創(chuàng)建對(duì)象,只需在類(lèi)名后使用一對(duì)括號(hào)即可,如下所示:
Employeeemp=newEmployee();構(gòu)造方法主要作用是創(chuàng)建對(duì)象并初始化類(lèi)的成員變量。對(duì)類(lèi)的成員變量,若聲明時(shí)和在構(gòu)造方法都沒(méi)有初始化,新建對(duì)象的成員變量值都被賦予默認(rèn)值。對(duì)于不同類(lèi)型的成員變量,其默認(rèn)值不同。整型數(shù)據(jù)的默認(rèn)值是0、浮點(diǎn)型數(shù)據(jù)默認(rèn)值是0.0、字符型數(shù)據(jù)默認(rèn)值是’\u0000’、布爾型數(shù)據(jù)默認(rèn)值是false。引用類(lèi)型數(shù)據(jù)默認(rèn)值是null。構(gòu)造方法的主要作用如果希望在創(chuàng)建一個(gè)對(duì)象時(shí)就將其成員變量設(shè)置為某個(gè)值,而不是采用默認(rèn)值。這時(shí)可以定義帶參數(shù)構(gòu)造方法。例如,在創(chuàng)建一個(gè)Employee對(duì)象時(shí)就指定姓名、年齡和工資,則可以定義如下帶三個(gè)參數(shù)的構(gòu)造方法。帶參數(shù)構(gòu)造方法publicEmployee(Stringn,inta,doubles){name=n
;age=a;salary=s;}然后,在創(chuàng)建Employee對(duì)象時(shí)可以指定姓名、年齡和余額,如下代碼創(chuàng)建一個(gè)姓名為“李清泉”,年齡為28,工資為8000的員工對(duì)象。
Employeeemp=newEmployee("李清泉",28,8000.00);帶參數(shù)構(gòu)造方法注意,一旦為類(lèi)定義了帶參數(shù)的構(gòu)造方法,編譯器就不再提供默認(rèn)構(gòu)造方法。再使用默認(rèn)構(gòu)造方法創(chuàng)建對(duì)象,編譯器將給出編譯錯(cuò)誤。如果還希望使用無(wú)參構(gòu)造方法創(chuàng)建對(duì)象,必須自己明確定義一個(gè)。構(gòu)造方法和普通方法都可以重載,所謂重載是在一個(gè)類(lèi)中可以定義名稱(chēng)相同、參數(shù)不同的方法。構(gòu)造方法重載程序4.3為Employee類(lèi)定義了4個(gè)重載的構(gòu)造方法,其中包含一個(gè)無(wú)參數(shù)構(gòu)造方法和三個(gè)帶參數(shù)的構(gòu)造方法。程序4.3Employee.javapublicclassEmployee{Stringname;intage;doublesalary;publicEmployee(){="";this.age=0;this.salary=0.0;}publicEmployee(Stringname){=name;this.age=0;this.salary=0.00;}publicEmployee(Stringname,intage){=name;this.age=age;}publicEmployee(Stringname,intage,doublesalary){=name;this.age=age;this.salary=salary;}通過(guò)重載構(gòu)造方法,就可以有多種方式創(chuàng)建對(duì)象。由于有了這些重載的構(gòu)造方法,在創(chuàng)建Employee對(duì)象時(shí)就可以根據(jù)需要選擇不同的構(gòu)造方法。this表示對(duì)象本身,它自動(dòng)傳遞給實(shí)例方法和構(gòu)造方法。在一個(gè)方法的方法體或參數(shù)中,也可能聲明與成員變量同名的局部變量,此時(shí)的局部變量會(huì)隱藏成員變量。要使用成員變量就需要在前面加上this關(guān)鍵字this關(guān)鍵字publicEmployee(Stringname,intage,doublesalary){=name;this.age=age;this.salary=salary;}同樣在定義實(shí)例方法時(shí),方法參數(shù)名也可以與成員變量同名。這時(shí)在方法體中要引用成員變量也必須加上this。例如,在Employee類(lèi)中可以像下面這樣定義修改姓名的方法:this關(guān)鍵字publicvoidsetName(Stringname){
=name;}這里,參數(shù)名與成員變量同名,因此,在方法體中通過(guò)使用成員變量name,而沒(méi)有帶this的變量name是方法的參數(shù)。this關(guān)鍵字的另一個(gè)用途是在一個(gè)構(gòu)造方法中調(diào)用該類(lèi)的另一個(gè)構(gòu)造方法。例如,假設(shè)在Employee類(lèi)定義了一個(gè)構(gòu)造方法Employee(Stringname,intage,doublesalary),現(xiàn)在又要定義一個(gè)無(wú)參數(shù)的構(gòu)造方法,這時(shí)可以在下面的構(gòu)造方法中調(diào)用該構(gòu)造方法this關(guān)鍵字publicEmployee(){this("張明月",28,5000);}【注意】
如果在構(gòu)造方法中調(diào)用另一個(gè)構(gòu)造方法,則this語(yǔ)句必須是第一條語(yǔ)句。綜上所述,this關(guān)鍵字主要使用在下面三種情況。this關(guān)鍵字解決局部變量與成員變量同名的問(wèn)題。解決方法參數(shù)與成員變量同名的問(wèn)題。用來(lái)調(diào)用該類(lèi)的另一個(gè)構(gòu)造方法。Java語(yǔ)言規(guī)定,this只能用在實(shí)例方法和構(gòu)造方法中,不能用在static方法中。實(shí)際上,在對(duì)象調(diào)用一個(gè)非static方法時(shí),向方法傳遞了一個(gè)當(dāng)前對(duì)象的引用,在方法體中用this表示。Java語(yǔ)言程序設(shè)計(jì)使用自定義Date日期類(lèi)在Java程序中經(jīng)常需要使用其他的類(lèi),包括核心類(lèi)庫(kù)的類(lèi)、用戶(hù)自定義的類(lèi)和第三方類(lèi)庫(kù)的類(lèi)。這里定義了一個(gè)名為com.boda.utils.Date的日期類(lèi),并且將它打包到一個(gè)com.boda.jar文件中,現(xiàn)在看如何使用這個(gè)類(lèi)。Date類(lèi)的UML圖如圖4-6所示。問(wèn)題描述com.boda.utils.Date類(lèi)的UML圖針對(duì)上面給出的Date類(lèi),完成下面操作:(1)創(chuàng)建一個(gè)日期對(duì)象today表示今天的日期(用默認(rèn)構(gòu)造方法),調(diào)用today的toString()方法輸出今天的日期。
(2)創(chuàng)建一個(gè)日期對(duì)象birthday表示你的出生日期(用帶參數(shù)構(gòu)造方法)。
(3)輸出你的出生日期的年是否是閏年。(4)計(jì)算并輸出從你出生到今天一共過(guò)去多少天。要求importcom.boda.utils.Date;publicclassDateDemo{publicstaticvoidmain(String[]args){Datetoday=newDate();System.out.println(today.toString());Datebirthday=newDate(2002,10,26);System.out.println(birthday.getYear()+"年"+(birthday.isLeapYear()?"是閏年":"不是閏年"));System.out.println("你已出生"+birthday.between(today)+"天。");}}程序4.4DateDemo.javaJava語(yǔ)言程序設(shè)計(jì)方法設(shè)計(jì)6.1.1如何設(shè)計(jì)方法Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486一個(gè)方法的定義包括兩個(gè)部分方法聲明方法體的定義方法聲明的一般格式為[public]returnTypemethodName([paramList]){//方法體}訪問(wèn)修飾符返回值類(lèi)型方法名參數(shù)列表方法的實(shí)現(xiàn)方法的簽名(方法名和參數(shù)組合)下面回顧一下4.2節(jié)Employee類(lèi)中定義的computeSalary()方法,如圖4-8所示。如何設(shè)計(jì)方法6.1.1訪問(wèn)方法和修改方法Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486能夠返回成員變量值的方法稱(chēng)為訪問(wèn)方法(accessormethod)。能夠修改成員變量值的方法稱(chēng)為修改方法(mutatormethod)。
訪問(wèn)方法名一般為getXxx(),因此,也稱(chēng)getter方法。如,
StringgetName()
修改方法名一般為setXxx(),因此,也稱(chēng)setter方法。如,
voidsetName(Stringname)6.1.1方法的調(diào)用Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486調(diào)用類(lèi)的實(shí)例方法應(yīng)先創(chuàng)建一個(gè)對(duì)象,然后通過(guò)對(duì)象引用調(diào)用。調(diào)用類(lèi)的靜態(tài)方法,通常使用類(lèi)名調(diào)用。方法調(diào)用主要使用在三種場(chǎng)合:1)用對(duì)象引用調(diào)用類(lèi)的實(shí)例方法。2)類(lèi)中的方法調(diào)用本類(lèi)中的其他方法。3)用類(lèi)名直接調(diào)用static方法。方法重載Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社Java允許在一個(gè)類(lèi)中定義多個(gè)同名的方法,這稱(chēng)為方法重載(overloading)。實(shí)現(xiàn)方法重載,要求同名的方法要么參數(shù)個(gè)數(shù)不同要么參數(shù)類(lèi)型不同僅返回值不同不能區(qū)分重載的方法。publicvoiddisplay(inta){System.out.println("a="+a); }publicvoiddisplay(doubled){System.out.println("d="+d); } publicvoiddisplay(){System.out.println("無(wú)參數(shù)方法"); } publicvoiddisplay(inta,intb){System.out.println("a="+a+",b="+b); } 程序4.4OverloadDemo.java
publicstaticvoidmain(String[]args){OverloadDemoobj=newOverloadDemo();obj.display();obj.display(10);obj.display(50,60);obj.display(100.0);
}方法參數(shù)傳遞Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社調(diào)用帶參數(shù)的方法,需要向它傳遞參數(shù)。定義方法指定的參數(shù)稱(chēng)為形式參數(shù),調(diào)用方法指定的參數(shù)稱(chēng)為實(shí)際參數(shù)。Java語(yǔ)言中,方法的參數(shù)是按值傳遞(passbyvalue)的,即在調(diào)用方法時(shí)將實(shí)際參數(shù)的值的一個(gè)拷貝傳遞給方法中的形式參數(shù),方法調(diào)用結(jié)束后實(shí)際參數(shù)的值并不改變。方法參數(shù)傳遞Java語(yǔ)言程序設(shè)計(jì)(第4版)清華大學(xué)出版社當(dāng)參數(shù)是基本類(lèi)型時(shí),將實(shí)際參數(shù)值的一個(gè)拷貝傳遞給方法,方法調(diào)用結(jié)束后,對(duì)原來(lái)的值沒(méi)有影響。當(dāng)參數(shù)是引用類(lèi)型時(shí),實(shí)際傳遞的是引用值,因此在方法的內(nèi)部有可能改變?cè)瓉?lái)的對(duì)象。注意:如果為方法傳遞的是不可變的引用類(lèi)型對(duì)象(如String對(duì)象),對(duì)象在方法內(nèi)部不可能被改變。publicstaticvoidchange(intnum){num=num*2;System.out.println(num);//輸出:200}publicstaticvoidchange(Employeeemp){//在方法體中修改員工的工資emp.setSalary(8000);System.out.println(emp.getSalary());//輸出:8000}程序4.5PassByValue.javapublicstaticvoidmain(String[]args){intnumber=100;change(number);System.out.println(number);//輸出:100Employeeemployee=newEmployee();employee.setSalary(5000);change(employee);//方法調(diào)用后輸出員工的工資System.out.println(employee.getSalary());//輸出:8000}Java語(yǔ)言程序設(shè)計(jì)案例:分?jǐn)?shù)類(lèi)Fraction的設(shè)計(jì)分?jǐn)?shù)(fraction),也稱(chēng)為有理數(shù)(rationalnumber),是兩個(gè)整數(shù)的比值,如3/4、1/2和7/5等。可以定義一個(gè)類(lèi),通過(guò)指定兩個(gè)整型成員實(shí)現(xiàn)一個(gè)分?jǐn)?shù)類(lèi),并且定義分?jǐn)?shù)的運(yùn)算方法。這兩個(gè)成員一個(gè)是numer,表示分子,一個(gè)是denom,表示分母。Fraction類(lèi)設(shè)計(jì)定義一個(gè)類(lèi),還需要考慮約束條件,比如對(duì)于分?jǐn)?shù)有如下三個(gè)條件:分母不能為0。類(lèi)似于2/0的分?jǐn)?shù)沒(méi)有定義。分?jǐn)?shù)的符號(hào)由分子符號(hào)和分母符號(hào)共同決定,并且應(yīng)設(shè)置為分子的符號(hào)。分子和分母不應(yīng)該具有公因數(shù)。例如,6/9應(yīng)該化簡(jiǎn)為2/3。publicclassFraction{privateintnumer;privateintdenom;
publicFraction(){
this.numer=0;
this.denom=1;
}publicFraction(intnumer){
this.numer=numer;
this.denom=1;}程序4.6Fraction.javapublicFraction(intnumer,intdenom){
this.numer=numer;
this.denom=denom;normalize();}publicintgetNumer(){returnnumer;}publicintgetDenom(){returndenom;}publicFractionadd(Fractionfr){Fractiontemp=newFraction();temp.numer=numer*fr.denom+denom*fr.numer;temp.denom=denom*fr.denom;temp.normalize();
returntemp;}publicFractionsubtract(Fractionfr){Fractiontemp=newFraction();temp.numer=numer*fr.denom-denom*fr.numer;temp.denom=denom*fr.denom;temp.normalize();
returntemp;
}
publicFractionmultiply(Fractionfr){Fractiontemp=newFraction();temp.numer=numer*fr.numer;temp.denom=denom*fr.denom;temp.normalize();
returntemp;
}
publicFractiondivide(Fractionfr){Fractiontemp=newFraction();temp.numer=numer*fr.denom;temp.denom=denom*fr.numer;temp.normalize();
returntemp;
}
privateintgcd(intn,intm){
intgcd=1;
for(intk=1;k<=n&&k<=m;k++){
if(n%k==0&&m%k==0){gcd=k;
}
}
returngcd;
}privatevoidnormalize(){
if(denom==0){
thrownewRuntimeException("分?jǐn)?shù)分母不能為0!");
}
//改變分子的正負(fù)號(hào)
if(denom<0){denom=-denom;numer=-numer;
}
//使用最大公約數(shù)整除分子和分母
intdivisor=gcd(Math.abs(numer),Math.abs(denom));numer=numer/divisor;denom=denom/divisor;}@OverridepublicStringtoString(){Strings="";
if(denom==1||numer==0){returns+numer;}else{
returns+numer+"/"+denom;//3/5
}
}publicstaticvoidmain(String[]args){Fractiona=newFraction(3,-8);Fractionb=newFraction(21,15);System.out.println(a);System.out.println(b);System.out.println("a+b="+a.add(b));System.out.println("a-b="+a.subtract(b));System.out.println("a*b="+a.multiply(b));System.out.println("a/b="+a.divide(b));
}Java語(yǔ)言程序設(shè)計(jì)靜態(tài)變量和靜態(tài)方法如果成員變量用static修飾,則該變量稱(chēng)為靜態(tài)變量或類(lèi)變量(classvariable),否則稱(chēng)為實(shí)例變量(instancevariable)。概述如果成員方法用static修飾,則該方法稱(chēng)為靜態(tài)方法或類(lèi)方法(classmethod),否則稱(chēng)為實(shí)例方法(instancemethod)。6.1.1靜態(tài)變量Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486靜態(tài)變量:
用static修飾,也叫類(lèi)變量。
所有實(shí)例共享一塊內(nèi)存空間。
通常使用類(lèi)名訪問(wèn)。實(shí)例變量:
未用static修飾。
每個(gè)實(shí)例具有自己的內(nèi)存空間。
必須使用實(shí)例名訪問(wèn)。6.1.1靜態(tài)變量Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486c1:Counterx:100
:Counterx:100
y:200
c2Counterc1=newCounter();Counterc2=newCounter();c1.y=100;c2.y=200;c1.y?6.1.1靜態(tài)變量Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486通常,static與final一起使用來(lái)定義類(lèi)常量。例如,Java類(lèi)庫(kù)中的Math類(lèi)中就定義了兩個(gè)類(lèi)常量:
publicstaticfinaldoubleE=2.718281828459045;publicstaticfinaldoublePI=3.141592653589793;可以通過(guò)類(lèi)名直接使用這些常量。6.1.1靜態(tài)方法Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486靜態(tài)方法:
用static修飾,也叫類(lèi)方法。
只能訪問(wèn)靜態(tài)變量。
通常使用類(lèi)名訪問(wèn)。實(shí)例方法:
未用static修飾。
可訪問(wèn)實(shí)例變量和靜態(tài)變量。
必須使用實(shí)例名調(diào)用。6.1.1靜態(tài)方法Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486實(shí)例方法實(shí)例方法調(diào)用√實(shí)例變量訪問(wèn)√靜態(tài)方法調(diào)用√靜態(tài)變量訪問(wèn)√靜態(tài)方法實(shí)例方法調(diào)用×實(shí)例變量訪問(wèn)×靜態(tài)方法調(diào)用√靜態(tài)變量訪問(wèn)√我們知道使用new創(chuàng)建對(duì)象。但是,Java類(lèi)庫(kù)中的一些類(lèi)不能以這種方式實(shí)例化。例如,不能使用new創(chuàng)建java.time.LocalDate類(lèi)的實(shí)例,因?yàn)樗臉?gòu)造方法是私有的。然而,可以使用它的一個(gè)靜態(tài)方法。靜態(tài)工廠方法例如now創(chuàng)建該類(lèi)實(shí)例:
LocalDatetoday=LocalDate.now();這種方法稱(chēng)為靜態(tài)工廠方法(staticfactorymethod)。我們自己也可以設(shè)計(jì)帶靜態(tài)工廠方法的類(lèi)。定義一個(gè)Discount類(lèi),這是一個(gè)簡(jiǎn)單的類(lèi),它有一個(gè)私有構(gòu)造方法。類(lèi)中有一個(gè)表示折扣率的int型字段,這個(gè)值可以是10(小客戶(hù)),也可以是12(大客戶(hù))。它帶一個(gè)getValue方法(返回value)和兩個(gè)靜態(tài)工廠方法:createSmallCustomerDiscount和createBigCustomerDiscount。靜態(tài)工廠方法注意,靜態(tài)工廠方法可以調(diào)用私有構(gòu)造方法來(lái)創(chuàng)建對(duì)象,因?yàn)樗鼈兾挥谕粋€(gè)類(lèi)中。使用這種設(shè)計(jì),就可以將Discount對(duì)象限制為只使用10或12,而不允許使用其他值。publicclassDiscount{privateintvalue;privateDiscount(intvalue){this.value=value;}publicintgetValue(){returnthis.value;}publicstaticDiscountcreateSmallCustomerDiscount(){returnnewDiscount(10);}程序4.10Discount.javapublicstaticDiscountcreateBigCustomerDiscount(){returnnewDiscount(12);}publicstaticvoidmain(String[]args){Discountdiscount=Discount.createBigCustomerDiscount();System.out.println(discount.getValue());//12}在Java類(lèi)的設(shè)計(jì)中,有時(shí)希望一個(gè)類(lèi)在任何時(shí)候只能有一個(gè)實(shí)例。這時(shí)可以將該類(lèi)設(shè)計(jì)為單例模式(singleton)。單例模式要將一個(gè)類(lèi)設(shè)計(jì)為單例模式,類(lèi)的構(gòu)造方法的訪問(wèn)修飾符應(yīng)聲明為private,然后在類(lèi)中定義一個(gè)static方法,在該方法中創(chuàng)建類(lèi)的對(duì)象。publicfinalclassSun{
privatestaticfinalSunINSTANCE=newSun();
privateinta=0;privateSun(){}//構(gòu)造方法
publicstaticsynchronizedSungetInstance(){
returnINSTANCE;
}
publicvoidmethodA(){a++;System.out.println("a="+a);
}程序4.11Sun.java
publicstaticvoidmain(String[]args){Sunsun1=Sun.getInstance();Sunsun2=Sun.getInstance();sun1.methodA();sun2.methodA();System.out.println(sun1==sun2);//返回true表示引用同一實(shí)例
}遞歸(recursion)是解決復(fù)雜問(wèn)題的一種常見(jiàn)方法。其基本思想就是把問(wèn)題逐漸簡(jiǎn)單化,最后實(shí)現(xiàn)問(wèn)題的求解。方法遞歸例如,求正整數(shù)n的階乘n!,就可以通過(guò)遞歸實(shí)現(xiàn)。n!可按遞歸定義如下:n!=n×(n-1)!;n>00!=1;Java語(yǔ)言支持方法的遞歸調(diào)用。所謂方法的遞歸調(diào)用就是方法自己調(diào)用自己。方法遞歸設(shè)計(jì)算n!的方法為factor(n),則該算法的簡(jiǎn)單描述如下:if(n==0)return1;
elsereturnfactor(n-1)*n;
publicstaticlongfactor(intn){
if(n==0)
return1;
else
returnn*factor(n-1);
}
publicstaticvoidmain(String[]args){
intk=20;System.out.println(k+"!="+factor(k));System.out.println("max="+Long.MAX_VALUE);//long型數(shù)的最大值
}程序4.12RecursionDemo.javaJava語(yǔ)言程序設(shè)計(jì)案例:打印斐波那契數(shù)列斐波那契數(shù)列(Fibonaccisequence),又稱(chēng)黃金分割數(shù)列,是意大利數(shù)學(xué)家列昂納多·斐波那契(LeonardoFibonacci)提出,它指的是這樣一個(gè)數(shù)列,前兩個(gè)數(shù)都是1,后面的每個(gè)數(shù)是前面兩個(gè)數(shù)的和,依次類(lèi)推下去:也就是1、1、2、3、5、8、13、21、34、……。在這個(gè)數(shù)列中的數(shù),被稱(chēng)為斐波那契數(shù)。問(wèn)題描述斐波那契數(shù)列在很多領(lǐng)域都有應(yīng)用,自然界存在很多斐波那契數(shù),如樹(shù)的葉子數(shù)、向日葵的花瓣數(shù)等。研究發(fā)現(xiàn),斐波那契數(shù)還有很多有趣的現(xiàn)象,比如當(dāng)數(shù)較大時(shí),前一項(xiàng)與后一項(xiàng)的比值越來(lái)越逼近黃金分割比0.618。要求使用方法遞歸,計(jì)算并輸出前20項(xiàng)斐波那契數(shù),并計(jì)算最后兩項(xiàng)的比值。在數(shù)學(xué)上,斐波那契數(shù)列可按如下以遞歸的方式定義:F(1)=1,F(xiàn)(2)=1,
F(n)=F(n-1)+F(n-2),(n
≥3,n
為自然數(shù))根據(jù)上述定義,我們可以編寫(xiě)下面方法計(jì)算第n個(gè)斐波那契數(shù)。打印斐波那契數(shù)列
publicstaticlongfib(intn){
if(n==1||n==2){
return1;}else{
returnfib(n-1)+fib(n-2);}
}打印斐波那契數(shù)列
publicstaticlongfib(intn){
if(n==1||n==2){
return1;}else{
returnfib(n-1)+fib(n-2);}
}publicstaticvoidmain(String[]args){for(inti=1;i<=20;i++){System.out.println("fib("+i+")="+fib(i));}System.out.println("fib(19)/fib(20)="+fib(19)*1.0/fib(20));}程序4.13FibonacciNumber.javaJava語(yǔ)言程序設(shè)計(jì)對(duì)象初始化6.1.1實(shí)例變量初始化Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486實(shí)例變量的初始化有下面幾種方式:
1)聲明時(shí)初始化。2)使用初始化塊。3)使用構(gòu)造方法初始化。在類(lèi)的定義中如果沒(méi)有為變量賦初值,則編譯器為每個(gè)成員變量指定一個(gè)默認(rèn)值。
引用類(lèi)型的變量,默認(rèn)值為null。
基本類(lèi)型,整型默認(rèn)值是0,浮點(diǎn)型默認(rèn)值是0.0,布爾型默認(rèn)值是false,字符型是空字符(’\u0000’)6.1.1實(shí)例變量初始化Java語(yǔ)言程序設(shè)計(jì)(第4版)publicclassStudent{intid;Stringname;doublemarks;booleanpass;}Students=newStudent();s.display();s:Studentid:0name:nullmarks:0.0pass:false6.1.1實(shí)例變量初始化Java語(yǔ)言程序設(shè)計(jì)(第4版)publicclassStudent{intid=1001;Stringname="李明";doublemarks=90.5;booleanpass=true;}Students=newStudent();s.display();s:Studentid:1001name:李明marks:90.5pass:true6.1.1初始化次序Java語(yǔ)言程序設(shè)計(jì)(第4版)如果在類(lèi)中既為實(shí)例變量指定了初值,又有初始化塊,還在構(gòu)造方法中初始化了變量,那么它們執(zhí)行的順序如何,最后變量的值是多少?1)首先使用默認(rèn)值或指定的初值初始化,這里先將x賦值為100。2)接下來(lái)執(zhí)行初始化塊,重新將x賦值為60。3)最后再執(zhí)行構(gòu)造方法,再重新將x賦值為58。
intx=100;{x=60;System.out.println("初始化塊中x="+x);}publicInitDemo(){x=58;System.out.println("構(gòu)造方法中x="+x);} publicstaticvoidmain(String[]args){InitDemod=newInitDemo();System.out.println("對(duì)象創(chuàng)建后x="+d.x);}程序4.15InitDemo.java6.1.1靜態(tài)變量的初始化Java語(yǔ)言程序設(shè)計(jì)(第4版)
QQ群:288639486靜態(tài)變量的初始化有下面幾種方法:1)聲明時(shí)初始化。2)使用靜態(tài)初始化塊。3)使用構(gòu)造方法初始化。對(duì)于static變量除了可以使用前兩種方法初始化外,還可以使用靜態(tài)初始化塊。靜態(tài)初始化塊是在初始化塊前面加上static關(guān)鍵字。例如,下面的類(lèi)定義就使用了靜態(tài)初始化塊。靜態(tài)初始化塊注意,在靜態(tài)初始化塊中只能使用靜態(tài)變量(就像靜態(tài)方法中只能使用靜態(tài)變量和調(diào)用靜態(tài)方法一樣),不能使用實(shí)例變量。靜態(tài)變量是在類(lèi)裝載時(shí)初始化的,因此在產(chǎn)生對(duì)象前就初始化了,這也就是可以使用類(lèi)名訪問(wèn)靜態(tài)變量的原因。publicclassStaticDemo{staticintx=100;static{x=48;}publicStaticDemo{x=88;}//其他代碼}靜態(tài)初始化塊當(dāng)一個(gè)類(lèi)有多種初始化方法時(shí),執(zhí)行順序是:(1)用默認(rèn)值給靜態(tài)變量賦值,然后執(zhí)行靜態(tài)初始化塊為static變量賦值。(2)用默認(rèn)值給實(shí)例變量賦值,然后執(zhí)行初始化塊為實(shí)例變量賦值。(3)最后使用構(gòu)造方法初始化靜態(tài)變量或?qū)嵗兞?。靜態(tài)初始化塊Java語(yǔ)言程序設(shè)計(jì)變量的作用域在Java中有多個(gè)地方可以使用變量,如類(lèi)的成員變量、方法的局部變量、代碼塊中聲明的變量(如for語(yǔ)句以及異常處理塊等)。變量的作用域變量的作用域(scope)是指一個(gè)變量可以在程序的什么范圍內(nèi)使用。Java程序的作用域是通過(guò)塊實(shí)現(xiàn)的,塊是使用一對(duì)花括號(hào)括起來(lái)的語(yǔ)句序列,塊可對(duì)語(yǔ)句進(jìn)行分組并定義變量的作用域。一般來(lái)說(shuō),變量只在其聲明的塊中可見(jiàn),在塊外不可見(jiàn)。若一個(gè)變量屬于某個(gè)作用域,它在該作用域可見(jiàn),即可被訪問(wèn),否則不能被訪問(wèn)。變量的生存期(lifetime)是指變量被分配內(nèi)存的時(shí)間期限。當(dāng)聲明一個(gè)方法局部變量時(shí),系統(tǒng)將為該變量分配內(nèi)存,只要方法沒(méi)有返回,該變量將一直保存在內(nèi)存中。一旦方法返回,該變量將從內(nèi)存棧中清除,它將不能再被訪問(wèn)。變量的作用域?qū)τ趯?duì)象,當(dāng)使用new創(chuàng)建對(duì)象時(shí),系統(tǒng)將在堆中分配內(nèi)存。當(dāng)一個(gè)對(duì)象不再被引用時(shí),對(duì)象和內(nèi)存將被回收。但不是對(duì)象離開(kāi)作用域就立即被回收。實(shí)際上是在之后某個(gè)時(shí)刻當(dāng)垃圾回收器運(yùn)行時(shí)才被回收。publicclassScopeDemo{inti=100;int[]a={1,2,3,4};publicvoidmethod(intn){inti=3;for(intj=0;j<3;j++){a[j]=0;}while(i>0){inttmp=i*i;a[i]=a[i]+tmp;i--;}程序4.16ScopeDemo.javaEmployeec=newEmployee();System.out.println(i);System.out.println(this.i);System.out.println(n+8);}publicstaticvoidmain(String[]args){newScopeDemo().method(10);}Java語(yǔ)言程序設(shè)計(jì)局部變量類(lèi)型推斷在方法中聲明一個(gè)引用類(lèi)型變量并使用構(gòu)造方法創(chuàng)建對(duì)象時(shí),需要兩次輸入變量類(lèi)型,第一次用于聲明變量類(lèi)型,第二次用于調(diào)用構(gòu)造方法,比如:
Employeeemp=newEmployee("張三",28,800);局部變量類(lèi)型推斷從Java10開(kāi)始,開(kāi)發(fā)人員可以使用var關(guān)鍵字聲明一個(gè)局部變量,然后通過(guò)構(gòu)造方法或工廠方法創(chuàng)建對(duì)象,在創(chuàng)建對(duì)象時(shí)讓編譯器自己去推斷類(lèi)型,從而確定變量的類(lèi)型。
varemp=newEmployee("張三",28,800);var實(shí)際上作為類(lèi)型占位符(typeholder)。編譯器在處理var時(shí),先查看表達(dá)式右邊部分,也就是所謂的構(gòu)造器,來(lái)確定變量的類(lèi)型。這樣避免了信息冗余,程序員可以少輸入一些字符,而且還可以對(duì)齊變量名,使程序更容易閱讀。局部變量類(lèi)型推斷不是在任何時(shí)候都可使用var聲明變量,它只能用在局部變量聲明并創(chuàng)建時(shí),更準(zhǔn)確地說(shuō),是那些帶有構(gòu)造器的局部變量聲明。下面用法不正確。varemp;emp=newEmployee("張三",28,800);字符串類(lèi)型也是引用類(lèi)型,下面用法是正確的:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年公眾利益演出服務(wù)對(duì)接協(xié)議
- 2024年公司業(yè)務(wù)承接協(xié)議
- 2024年合同更新:服務(wù)延續(xù)協(xié)議
- 2024年協(xié)議典范:婁桂與愛(ài)人的解除婚姻協(xié)議
- 2024年全新版汽車(chē)運(yùn)輸服務(wù)協(xié)議
- 課程設(shè)計(jì)現(xiàn)狀分析論文
- 機(jī)械制圖的課程設(shè)計(jì)理念
- 2024至2030年中國(guó)絲光柔順劑數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年中國(guó)氣泵閥市場(chǎng)調(diào)查研究報(bào)告
- 認(rèn)識(shí)菌類(lèi)課程設(shè)計(jì)范文
- 小學(xué) 四年級(jí) 體育水平二 基本運(yùn)動(dòng)技能平衡篇 課件
- 汽車(chē)品牌保時(shí)捷課件
- 人教版數(shù)學(xué)三年級(jí)上冊(cè)《分?jǐn)?shù)的初步認(rèn)識(shí)》課件 (共7張PPT)
- 5000噸每年聚丙烯酰胺工藝流程圖
- DB64∕T 1754-2020 寧夏磚瓦用粘土礦產(chǎn)地質(zhì)勘查技術(shù)規(guī)程
- PSUR模板僅供參考
- 《鍋爐水容積測(cè)試技術(shù)規(guī)范》團(tuán)體標(biāo)準(zhǔn)
- 全國(guó)第四輪學(xué)科評(píng)估PPT幻燈片課件(PPT 24頁(yè))
- 子宮內(nèi)膜息肉-PPT課件
- 橋梁施工各工序質(zhì)量控制措施
- 保安隊(duì)排班表
評(píng)論
0/150
提交評(píng)論