版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Java程序設(shè)計基礎(chǔ)大連理工大學(xué)出版社第二章聲明與訪問控制2.2類與對象2.1標(biāo)識符、關(guān)鍵字2.3靜態(tài)成員2.4常量與變量2.1標(biāo)識符、關(guān)鍵字標(biāo)識符:標(biāo)識符是用來標(biāo)識類名、變量名、方法名、類型名、數(shù)組名、文件名的有效字符序列。Java語言規(guī)定標(biāo)識符由字母、下劃線、美元符號和數(shù)字組成,并且需遵循以下規(guī)則:(1)區(qū)分大小寫。(2)不能以數(shù)字開頭。(3)以字母或下劃線_或$符號開頭。(4)不能使用Java的關(guān)鍵字。注釋的優(yōu)點一方面,注釋可以幫助自己或者他人能更好地理解源代碼的用途,使用條件,使用方法,結(jié)果等;另一方面,便于以后的系統(tǒng)維護和升級等。Java支持三種形式的注釋。//:單行注釋行注釋也稱單行注釋。行注釋使用//注釋文字來對某行/某段代碼加以說明。/*……*/:多行注釋段落注釋也稱多行注釋。為某段代碼加以說明。當(dāng)說明文字比較長需要換行時使用段落注釋方法。2.1標(biāo)識符、關(guān)鍵字(續(xù))/**……*/:Java特有的文檔注釋文檔化注釋也稱Javadoc注釋。采用這種方法的注釋,可以采用javadoc命令或工具抽取源文件里的Javadoc注釋,生成組織有序的幫助文檔(HTML格式的文件)。有關(guān)Javadoc的詳細(xì)說明請讀者自行查閱相關(guān)文檔。2.1標(biāo)識符、關(guān)鍵字(續(xù))/**……*/:Java特有的文檔注釋(續(xù))
/***Javadoc注釋方法:這是一個HelloJava!的程序*<p>*可以打印HelloJava!**@author劉嵩*@version1.0.1,2008-01-25**/publicclassHelloJava{ /* *段落注釋方法:main()方法是程序執(zhí)行的入口 */ publicstaticvoidmain(String[]args){ //行注釋方法:
//向命令行打印輸出HelloJava! System.out.println("HelloJava!"); }}2.1標(biāo)識符、關(guān)鍵字(續(xù))2.1標(biāo)識符、關(guān)鍵字(續(xù))
分隔符:圓括號()在定義和調(diào)用方法時用來容納參數(shù)表,在控制語句或強制類型轉(zhuǎn)換組成的表達式中用來表示執(zhí)行或計算的優(yōu)先權(quán)?;ɡㄌ杮}用來包括自動初始化的數(shù)組的值,也用來定義程序塊、類、方法以及局部范圍。方括號[]用來聲明數(shù)組的類型,也用來表示撤消對數(shù)組的引用。分號;用來終止一個語句。逗號,在變量聲明中,用于分隔變量表中的各個變量。在for控制語句中,用來將圓括號內(nèi)的語句連接起來。句號.用來將軟件包中的名字與它的子包或類分隔,也用來將引用變量與變量或方法分隔。另外,還有一種較為特殊的空白分隔符,空格、Tab跳格鍵及換行符均屬于這種分隔符。2.1標(biāo)識符、關(guān)鍵字(續(xù))
關(guān)鍵字:關(guān)鍵字是Java語言中已經(jīng)被賦予特定意義的單詞,一般用來表示一種數(shù)據(jù)類型,或者程序的結(jié)構(gòu)等。保留字是為Java預(yù)留的關(guān)鍵字。目前Java語言定義的關(guān)鍵字如下:const(保留字)goto(保留字)abstractfinally
intpublicthisbooleancontinuefloatinterfacereturnthrowbreakdefaultforlongshortthrowsbytedo
nativestatictransientcasedoubleifnewstrictfptrycatchelseimplementspackagesupervoidcharextendsimportprivateswitchvolatileclassfinalinstanceofprotectedsynchronizewhile2.2類與對象對象類實體抽象數(shù)據(jù)類計算機世界現(xiàn)實世界實例化抽象映射計算機邏輯的實現(xiàn)概念世界面向?qū)ο蠹夹g(shù):計算機世界向現(xiàn)實世界靠攏面向過程技術(shù):現(xiàn)實世界向計算機世界靠攏對象的狀態(tài)在計算機內(nèi)部是用變量來表示,而對象的行為在計算機內(nèi)部是用方法來表示的下圖展現(xiàn)了類與對象的基本關(guān)系:
2.2類與對象類定義的通用格式如下:
class類名{
typeinstance-variable1;
//...
typeinstance-variableN;
typemethodname1(parameter-list){
//方法體
}
//...
typemethodnamen(parameter-list){
//方法體
}
}2.2類與對象(續(xù))2.2類與對象(續(xù))面向?qū)ο蟪绦蛟O(shè)計的核心是對象,程序是一系列對象的組合。單個對象能夠?qū)崿F(xiàn)的功能是有限的,應(yīng)用程序往往包含很多的對象,這些對象相互調(diào)用彼此的方法,交互作用以實現(xiàn)更高級、更復(fù)雜的功能。在程序中當(dāng)需要使用新對象時,應(yīng)進行對象的創(chuàng)建,為其分配內(nèi)存空間,在對象完成了自己的功能后可以銷毀它以釋放占用的內(nèi)存。2.2類與對象(續(xù))在Java中,利用new關(guān)鍵字可以創(chuàng)建類的對象,這是最常用的創(chuàng)建對象的方式。用new創(chuàng)建對象的語法格式如下所示:SomeClassob=newSomeClass(參數(shù)列表);new關(guān)鍵字后調(diào)用的是類的構(gòu)造方法。2.2類與對象(續(xù))對象的創(chuàng)建過程主要包含了如下的步驟:
給對象分配內(nèi)存空間。若類的實例變量在定義時未賦初值,則將它們自動初始化為其所屬類型的默認(rèn)值。調(diào)用類的構(gòu)造方法進行對象的初始化工作,若構(gòu)造方法中包含對實例變量賦值的語句,則為實例變量賦予相應(yīng)的初始值。注意:類的實例變量,指的是類中未被static修飾的成員變量。2.2類與對象(續(xù))可以使用new來創(chuàng)建具體學(xué)生對象來,如:StudentaStudent=newStudent(“Tom”,19,”計算機”);對象創(chuàng)建之后,可通過訪問對象的變量或是調(diào)用對象的方法來使用對象2.2類與對象(續(xù))訪問對象的變量
訪問對象的變量的一般格式如下:對象名.變量名通過訪問對象的變量可以修改對象的屬性值,如給學(xué)生改名:aS=“John”;需要注意的是:像這樣直接操縱對象的屬性的做法是不提倡的,更好的訪問方式是通過各個屬性的get和set方法來訪問。2.2類與對象(續(xù))調(diào)用對象的方法
調(diào)用對象的方法的一般格式如下:對象名.方法名(參數(shù)列表)方法代表對象具有的行為,調(diào)用方法就相當(dāng)于實施行為,能實現(xiàn)一定的功能。比如,如果希望對這個學(xué)生的信息進行修改,可以調(diào)用各個屬性的set方法來實現(xiàn):aStudent.setName(“John”);2.2類與對象(續(xù))對象的銷毀
在Java的運行時環(huán)境中,Java虛擬機提供了一個垃圾回收器線程,它負(fù)責(zé)自動周期性地檢測、回收那些無用對象所占用的內(nèi)存,這種內(nèi)存回收的機制被稱為自動垃圾回收(GarbageCollection),這也是Java顯著的特色之一。2.2類與對象(續(xù))同種基本數(shù)據(jù)類型的變量之間可以互相賦值,比如:
inti=3;intj=i;與此類似,同種類型的對象之間也可以賦值,比如:Studentstu1=newStudent();Studentstu2=stu1;不同的是:同種基本數(shù)據(jù)類型的變量之間的賦值是值的拷貝,內(nèi)容的拷貝。同種類型的對象之間的賦值叫引用賦值,不是拷貝對象的內(nèi)容。2.2類與對象(續(xù))對象名的引用作用如下圖所示:同種類型對象之間的賦值,是將一個對象名所代表的引用賦給另一個對象名,使得2個對象名具有相同的引用,那么這2個對象名可以訪問到同一個對象的存儲空間,這種對象的賦值就叫做引用賦值。
2.2類與對象(續(xù))空引用若對象只聲明了類型,而沒有創(chuàng)建,則對象的值為null,代表空引用,表示沒有指向任何的對象。這時候如果試圖使用對象,則會出錯,例如:Studentjane;System.out.println("學(xué)生姓名:"+jane.getName());使用空引用的對象,在運行時會產(chǎn)生NullPointerException異常。
2.2類與對象(續(xù))在創(chuàng)建類的對象時將會調(diào)用構(gòu)造方法,構(gòu)造方法一般實現(xiàn)對類的成員變量進行初始化的操作。
構(gòu)造方法不同于成員方法,從其定義形式上也可以體現(xiàn)出來:
構(gòu)造方法名必須與所屬的類名保持一致,包括大小寫(Java是大小寫敏感的語言)。構(gòu)造方法無返回類型,連void都沒有。類中可以沒有構(gòu)造方法,這個時候系統(tǒng)會自動為類添加一個無參且方法體為空的默認(rèn)構(gòu)造方法。形如:publicClassName(){ }如果類中包含了構(gòu)造方法,則用new調(diào)用構(gòu)造方法創(chuàng)建對象時,必須按照構(gòu)造方法定義的形式參數(shù)給出相應(yīng)的實際參數(shù)。2.3 靜態(tài)成員static關(guān)鍵字
static意為靜態(tài)的,Java中用static關(guān)鍵字來表示靜態(tài)的成員。靜態(tài)成員與非靜態(tài)成員,所處的存儲空間不同,生命期也不一樣。類中有static修飾的變量和方法叫做類的靜態(tài)變量、靜態(tài)方法,統(tǒng)稱為類的靜態(tài)成員。而無static修飾的則可相對的稱為動態(tài)成員2.3 靜態(tài)成員(續(xù))static關(guān)鍵字(續(xù))類的靜態(tài)成員的使用格式如下:類名.靜態(tài)變量名 類名.靜態(tài)方法(參數(shù)列表)類的靜態(tài)變量也稱作類變量或域(field),無static修飾的成員變量也稱作實例變量。無static修飾的成員方法也稱作實例方法。類的靜態(tài)成員,不依賴于類的實例,在不創(chuàng)建類對象的情況下就可以直接通過類名來訪問,并且這些靜態(tài)成員被類的所有實例所共享。
2.3 靜態(tài)成員(續(xù))
static變量靜態(tài)變量與實例變量的區(qū)別:Java虛擬機只給靜態(tài)變量分配1次內(nèi)存,靜態(tài)變量在內(nèi)存中只有一個拷貝,任何類的實例對靜態(tài)變量的修改都將有效。實例變量依賴于類的實例,即具體的對象,每創(chuàng)建一個對象,就為該對象的實例變量分配一次內(nèi)存,各個對象的實例變量占用不同的內(nèi)存空間,互不干擾,對象對各自實例變量的修改不會影響到其它對象的實例變量。在類的內(nèi)部,可以在任何方法內(nèi)部訪問靜態(tài)變量,在沒有變量重名的情況下靜態(tài)變量名前面可以不用帶前綴。2.3 靜態(tài)成員(續(xù))
static變量類的靜態(tài)變量主要有如下2個作用:能被類的所有實例共享,可以作為實例之間共享的數(shù)據(jù)。如果類的所有實例都需要一個相同的常量數(shù)據(jù)成員,可以把這個數(shù)據(jù)成員定義為靜態(tài)的,從而節(jié)省內(nèi)存空間。若要將變量的值固定成為常量,則應(yīng)在變量的類型前加上final關(guān)鍵字。2.3 靜態(tài)成員(續(xù))
static方法
方法的返回類型前有static關(guān)鍵字修飾的成員方法即為類的靜態(tài)方法。與靜態(tài)變量類似,類的靜態(tài)方法也不依賴于類的實例,不需要創(chuàng)建類的對象就可以通過類名來調(diào)用。
2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系
靜態(tài)方法是隨類加載的,只要類存在,靜態(tài)方法就可以調(diào)用、執(zhí)行。而實例變量、實例方法這些非靜態(tài)的成員都是依賴于類的實例的,必須在類對象存在的前提下,才可以使用實例變量和實例方法。因此,靜態(tài)方法體中不能使用無法確定是否存在的實例變量和實例方法。2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系
靜態(tài)方法是隨類加載的,只要類存在,靜態(tài)方法就可以調(diào)用、執(zhí)行。而實例變量、實例方法這些非靜態(tài)的成員都是依賴于類的實例的,必須在類對象存在的前提下,才可以使用實例變量和實例方法。因此,靜態(tài)方法體中不能使用無法確定是否存在的實例變量和實例方法。2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
publicclassStaticTest3{ inta=10; intb=20; publicstaticvoidmain(String[]args){ intsum=a+b; System.out.println("sum="+sum); } }錯誤:不能在靜態(tài)上下文中訪問非靜態(tài)的a和b。2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
在本例中,由于a和b均為非static的實例變量,它們在類的對象創(chuàng)建之后才會被分配內(nèi)存而存在,在靜態(tài)的main()方法中不能對其進行引用。解決上述訪問問題的方法有2種:一種是將a和b改為static變量,則它們與main()方法一樣是靜態(tài)成員,都隨類加載,不依賴于對象的存在與否,在main()中可以訪問它們,在其它的靜態(tài)方法中也可以訪問。如下所示:staticinta=10;staticintb=20;2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
另一種解決方法是:靜態(tài)的main()方法中先創(chuàng)建類的對象,再用對象來訪問這些實例變量。如下所示:StaticTest3ob=newStaticTest3();intsum=ob.a+ob.b;
2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
如果在靜態(tài)方法中調(diào)用實例方法,又會出現(xiàn)什么情況呢。
publicclassStaticTest4{ publicstaticvoidmain(String[]args){
intsub=sub(13,5);
System.out.println("sub="+sub); } publicintsub(inta,intb){ returna-b; }}2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
同試圖在靜態(tài)方法中訪問非靜態(tài)的實例變量類似,此問題的出現(xiàn)也是因為非靜態(tài)的實例方法依賴于類的實例,故在靜態(tài)方法中不能調(diào)用實例方法。
解決方法有二:一是改sub()方法為靜態(tài)方法,如下所示:publicstaticintsub(inta,intb){ returna-b;}2.3 靜態(tài)成員(續(xù))
成員與靜態(tài)方法的關(guān)系(續(xù))
另一種解決辦法:靜態(tài)的main()中先創(chuàng)建類的對象,再調(diào)用實例方法如下所示:StaticTest4ob=newStaticTest4();intsub=ob.sub(13,5);反過來,沒有static修飾的實例方法中沒有這樣的限制,實例方法可以訪問類的靜態(tài)變量、調(diào)用靜態(tài)方法,也可以訪問實例變量、調(diào)用實例方法。
數(shù)據(jù)類型的概念每一種數(shù)據(jù)類型定義了一個具有相同性質(zhì)的數(shù)據(jù)集合。各種數(shù)據(jù)類型的數(shù)據(jù)具有不同的性質(zhì)。程序中所用到的每一個數(shù)據(jù),包括常量和變量都有一個和它相聯(lián)系的類型。由此決定了數(shù)據(jù)所具有的值,也決定了對該數(shù)據(jù)所能進行的操作。2.4常量與變量變量在程序執(zhí)行過程中其值可以改變的數(shù)據(jù),稱為變量。每個變量都要有一個名稱,這就是變量名。變量名由用戶自己定義,但必須符合標(biāo)識符的規(guī)定。在一個程序中,一個變量只能屬于一種確定的數(shù)據(jù)類型。程序中出現(xiàn)的每個變量都必須說明其數(shù)據(jù)類型,這樣就規(guī)定了該變量的取值范圍,也決定了對該變量所能執(zhí)行的運算操作。
2.4常量與變量(續(xù))變量(續(xù))intn;定義了一個變量,變量名為n,變量類型為int類型。Stringname,password;定義了兩個變量,變量名分別為name和password,變量類型都是String類型。在Java中相同類型的變量定義可以在一起進行,變量名之間用逗號隔開。變量定義之后必須使用“=”賦值才能使用。2.4常量與變量(續(xù))變量(續(xù))publicclassVariable1{ publicstaticvoidmain(String[]args){ intn=1;//定義變量n,將n的值賦值為1 System.out.println(n);//輸出當(dāng)前變量n的值
n=2;//將n的值賦值為2,變量的"變"在這里體現(xiàn)
System.out.println(n); }}2.4常量與變量(續(xù))常量在程序執(zhí)行過程中其值不能改變的數(shù)據(jù),稱為常量。Java中的常量值是用文字串表示的,它區(qū)分為不同的類型,例如:整型常量123,實型常量1.23,字符常量’a’,布爾常量true、false以及字符串常量"Thisisaconstantstring."。Java中可以通過關(guān)鍵字final將變量定義為常量。一個變量如果被定義為常量則這個常量的值不可再修改。例如:finaldoublePI=3.14;//正確PI=3.1415926;//錯誤,試圖修改一個常量的值一般習(xí)慣將常量的標(biāo)識符大寫。2.4常量與變量(續(xù))基本數(shù)據(jù)類型Java編程語言為八個原始數(shù)據(jù)類型和一個特殊類型定義了文字值。原始類型可分為四種:邏輯類型boolean字符類型char整數(shù)類型byte,short,int,long浮點類型double,float2.4常量與變量(續(xù))邏輯類型boolean
邏輯值有兩種狀態(tài),即人們經(jīng)常使用的“on”和“off”或“true”和“false”或“yes”和“no”或者“真”和“假”,這樣的值是用boolean類型來表示的。Java中boolean有兩個合法值,即true和false。以下是一個有關(guān)boolean類型變量的聲明和初始化:booleantruth=true;//定義一個boolean類型的變量truth,并且賦值為true邏輯類型也可以叫做布爾類型,其值也可以叫做布爾值。2.4常量與變量(續(xù))字符類型char
使用char類型可表示單個字符。一個char代表一個16-bit無符號的(不分正負(fù)的)Unicode字符。一個char文字必須包含在單引號內(nèi),如’a’,’d’,’你’,’!’。以下是一個有關(guān)char類型變量的聲明和初始化:charc=’我’;//定義一個字符類型的變量c,并且賦值為’我’2.4常量與變量(續(xù))整數(shù)類型在Java編程語言中有四種整數(shù)類型,每種類型可使用關(guān)鍵字byte(字節(jié)型),short(短整型),int(整型)和long(長整型)中的任意一個進行聲明。這四種整數(shù)類型的區(qū)別在于它們能夠表示的范圍不同。每個整數(shù)數(shù)據(jù)類型具有下列范圍:Java中可以在整數(shù)數(shù)值后面加字母l或者L表示長整型long。2.4常量與變量(續(xù))浮點類型如果一個數(shù)字文字包括小數(shù)點或指數(shù)部分,或者在數(shù)字后帶有字母F或f(float)、D或d(double),則該數(shù)字文字為浮點類型。浮點數(shù)除非在末尾強制加F或者f表示float,否則默認(rèn)浮點數(shù)都是double類型。浮點數(shù)據(jù)類型具有下列范圍:浮點長度名稱或類型
32bitsfloat64bits
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職第一學(xué)年(農(nóng)村區(qū)域發(fā)展)農(nóng)村規(guī)劃綜合試題及答案
- 2025年高職地理教育(地理教學(xué)方法)試題及答案
- 2025年高職電子商務(wù)(商品拍攝)試題及答案
- 2026年新聞寫作(新聞稿撰寫規(guī)范)試題及答案
- 2025年大學(xué)第三學(xué)年(設(shè)計心理學(xué))設(shè)計應(yīng)用階段測試題及答案
- 2025年高職人力資源管理(人力資源教學(xué)案例分析)試題及答案
- 2025年大學(xué)水利工程與管理(水利技術(shù)推廣)試題及答案
- 2025年大學(xué)金屬制品加工技術(shù)(金屬表面處理)試題及答案
- 2025年大學(xué)大一(交通運輸)交通工程學(xué)階段測試試題及答案
- 2025年高職動漫設(shè)計與制作(動漫設(shè)計與制作)試題及答案
- GB/T 46758-2025紙漿硫酸鹽法蒸煮液總堿、活性堿和有效堿的測定(電位滴定法)
- 2026屆福建省龍巖市龍巖一中生物高一第一學(xué)期期末綜合測試試題含解析
- 2026年上海市普陀區(qū)社區(qū)工作者公開招聘筆試參考題庫及答案解析
- 二元思辨:向外探索(外)與向內(nèi)審視(內(nèi))-2026年高考語文二元思辨作文寫作全面指導(dǎo)
- 智能清掃機器人設(shè)計與研發(fā)方案
- 《中華人民共和國危險化學(xué)品安全法》全套解讀
- 學(xué)校宿舍樓施工組織設(shè)計方案
- GB/T 7216-2023灰鑄鐵金相檢驗
- 學(xué)術(shù)論文的撰寫方法
- 上海市汽車維修結(jié)算工時定額(試行)
- 貴州省晴隆銻礦采礦權(quán)出讓收益評估報告
評論
0/150
提交評論