




已閱讀5頁,還剩499頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章Java語言概述,本章導(dǎo)讀1.Java語言的誕生2.學(xué)習(xí)Java的必要性3.java的特點4.java與C/C+之關(guān)系5.Java運行平臺6.Java程序開發(fā)7.SDK1.6編譯器的新規(guī)定,1.1Java語言的誕生,Java誕生于1995年,是Sun公司組織開發(fā)的一編程語言,主要貢獻(xiàn)者是JamesGosling。1990年Sun公司成立了由JamesGosling領(lǐng)導(dǎo)的開發(fā)小組,開始致力于開發(fā)一種可移植的、跨平臺的語言,該語言能生成正確運行于各種操作系統(tǒng)、各種CPU芯片上的代碼。他們的鉆研和努力促成了Java語言的誕生。Java的發(fā)展得利于Internet和Web的出現(xiàn),Internet上有各種不同的計算機,它們可能使用完全不同的操作系統(tǒng)和CPU芯片,但仍希望運行相同的程序,Java的出現(xiàn)標(biāo)志著真正的分布式系統(tǒng)的到來。,返回,1.2學(xué)習(xí)Java的必要性,Java不僅可以用來開發(fā)大型的桌面應(yīng)用程序,而且特別適合于Internet的應(yīng)用開發(fā)。目前,Java語言不僅是一門正在被廣泛使用的編程語言,而且已成為軟件設(shè)計開發(fā)者應(yīng)當(dāng)掌握的一門基礎(chǔ)語言。Java語言是面向?qū)ο缶幊?,并涉及到網(wǎng)絡(luò)、多線程等重要的基礎(chǔ)知識,而且很多新的技術(shù)領(lǐng)域都涉及到了Java語言,因此,學(xué)習(xí)和掌握J(rèn)ava已成為共識,國內(nèi)外許多大學(xué)已將Java語言列入了本科教學(xué)計劃,IT行業(yè)對Java人才的需求正在不斷的增長,一些軟件公司對其開發(fā)人員周期地進(jìn)行Java的基礎(chǔ)培訓(xùn)工作。在IT行業(yè)發(fā)達(dá)的北美洲,有將近60%的軟件開發(fā)人員在使用Java完成他們的工作,EvansData公司在2002年做的一項調(diào)查中發(fā)現(xiàn),在北美洲,Java的使用率已經(jīng)接近C/C+。返回,1.3java的特點,1平臺無關(guān)性Java語言和其他語言相比,最大的優(yōu)勢就是能夠在所有的計算機上運行,這也是Java風(fēng)靡全球的主要原因。2面向?qū)ο竺嫦驅(qū)ο缶幊淌且环N先進(jìn)的編程思想,更加容易解決復(fù)雜的問題。3多線程Java的特點之一就是內(nèi)置對多線程的支持。多線程允許同時完成多個任務(wù)。4安全5動態(tài),返回,1.4java與C/C+之關(guān)系,如果你學(xué)習(xí)過C+語言,你會感覺Java很眼熟,因為Java中許多基本語句的語法和C+一樣,像常用的循環(huán)語句、控制語句等和C+幾乎一樣,但不要誤解為Java是C+的增強版,Java和C+是兩種完全不同的語言,他們各有各的優(yōu)勢,將會長期并存下去,Java語言和C+語言已成為軟件開發(fā)者應(yīng)當(dāng)掌握的語言。,返回,1.5Java運行平臺,1)三種平臺簡介目前Java運行平臺主要分為下列3個版本:(JavaSE(曾稱作J2SE)Java標(biāo)準(zhǔn)版或Java標(biāo)準(zhǔn)平臺。JavaSE提供了標(biāo)準(zhǔn)的JDK開發(fā)平臺,利用該平臺可以開發(fā)Java桌面應(yīng)用程序和低端的服務(wù)器應(yīng)用程序,也可以開發(fā)JavaApplet。JavaEE(曾稱作J2EE)Java企業(yè)版或Java企業(yè)平臺,可以構(gòu)建企業(yè)級的服務(wù)應(yīng)用。JavaEE平臺包含了JavaSE平臺,并增加了附加類庫,以便支持目錄管理、交易管理和企業(yè)級消息處理等功能。JavaME(曾稱作J2ME)Java微型版或Java小型平臺。JavaME是一種很小的Java運行環(huán)境,用于嵌入式的消費產(chǎn)品中,如移動電話、掌上電腦或其他無線設(shè)備等。,2)安裝JavaSE平臺,學(xué)習(xí)Java必須從JavaSE開始,因此,本書基于JavaSE來學(xué)習(xí)Java。目前Sun公司已發(fā)布了JDK的1.6版本。如果安裝JDK選擇安裝到E:Jdk1.6目錄下,則會生成如圖1.1的目錄結(jié)構(gòu)。,圖1.1JDK目錄結(jié)構(gòu),3)系統(tǒng)環(huán)境Path值的設(shè)置,JDK平臺提供的Java編譯器(javac.exe)和Java解釋器(java.exe)位于Java安裝目錄的bin文件夾中,為了能在任何目錄中使用編譯器和解釋器,應(yīng)在系統(tǒng)特性中設(shè)置Path。對于Windows2000、Windows2003、WindowsXP,用鼠標(biāo)右鍵點擊“我的電腦”,彈出菜單,然后選擇“屬性”,彈出“系統(tǒng)屬性”對話框,再單擊該對話框中的“高級”選項,然后點擊按鈕“環(huán)境變量”,添加如下的系統(tǒng)環(huán)境變量(如圖1.2所示):,圖1.2設(shè)置環(huán)境變量path,4)系統(tǒng)環(huán)境ClassPath值的設(shè)置,編輯系統(tǒng)環(huán)境變量ClassPath的值。對于Windows2000、Windows2003、WindowsXP,用鼠標(biāo)右鍵點擊“我的電腦”,彈出菜單,然后選擇屬性,彈出“系統(tǒng)特性”對話框,再單擊該對話框中的高級選項,然后點擊按鈕“環(huán)境變量”,添加如下的系統(tǒng)環(huán)境變量(如圖1.3所示):如果曾經(jīng)設(shè)置過環(huán)境變量:ClassPath,可點擊該變量進(jìn)行編輯操作,將需要的值加入即可。對于Win9x,用記事本編輯Autoexec.bat文件,將如下的設(shè)置語句加入即可,setclasspth=E:jdk1.6jrelibrt.jar;.;也可以在命令行窗口,如MS-DOS窗口鍵入命令:setclasspth=E:jdk1.6jrelibrt.jar;.;,圖1.3設(shè)置環(huán)境變量classpath,5)僅僅安裝JRE,如果你只想運行別人的Java程序可以只安裝Java運行環(huán)境JRE,JRE由Java虛擬機、Java的核心類以及一些支持文件組成??梢缘卿汼un的網(wǎng)站免費下載Java的JRE。,返回,1.6Java程序開發(fā),1.Java應(yīng)用程序的開發(fā)開發(fā)一個Java應(yīng)用程序的步驟:,編寫源文件,編譯源文件生成字節(jié)碼,加載運行字節(jié)碼,FileName.java,FileName.class,1)編寫源文件(1)源文件的組成使用一個文字編輯器,如Edit或記事本,來編寫源文件。不可使用Word編輯器,因它含有不可見字符。Java是面向?qū)ο缶幊?,Java應(yīng)用程序的源文件是由若干個書寫形式互相獨立的類組成。見例子1,(2)應(yīng)用程序的主類,一個Java應(yīng)用程序必須有一個類含有publicstaticvoidmain(Stringargs)方法,稱這個類是應(yīng)用程序的主類。args是main方法的一個參數(shù),是一個字符串類型的數(shù)組(注意String的第一個字母是大寫的),以后會學(xué)習(xí)怎樣使用這個參數(shù)。,(3)源文件的命名規(guī)則,源文件有幾個類?,源文件名=該類類名,有public類?,源文件名=類名之一,有幾個public類?,源文件名=該Public類名,這是不允許的!,(4)良好的編程習(xí)慣,在編寫程序時,一行最好只寫一條語句,類體的以方法的大括號最好也獨占一行,并有明顯的縮進(jìn)。本書在編寫代碼時,盡量遵守良好的編程習(xí)慣。良好的編程習(xí)慣對一個優(yōu)秀的程序員是至關(guān)重要的!,2)編譯Java源程序當(dāng)創(chuàng)建了Hello.java這個源文件后,就要使用編譯器(javac.exe)對其進(jìn)行編譯:需要打開MS-DOS命令行窗口,進(jìn)入C盤,然后進(jìn)入到1000目錄中,如圖1.4所示。,3)運行Java程序,Java應(yīng)用程序必須通過Java虛擬機中的Java解釋器(java.exe)來解釋執(zhí)行其字節(jié)碼文件。Java應(yīng)用程序總是從主類的main方法開始執(zhí)行。因此,必須如下運行Java應(yīng)用程序:C:1000javaHello運行效果如圖1.5所示。當(dāng)Java應(yīng)用程序中有多個類時,java命令執(zhí)行的類名必須是主類的名字(沒有擴(kuò)展名)。例:,(1)編譯源文件c:1000javacTom.java如果編譯成功,你的目錄1000下就會有Tom.class和Example.class這兩個字節(jié)碼文件了。(2)執(zhí)行c:1000javaExamplejava命令后的名字必須是主類的名字,運行效果如圖1.6。,返回,2.JavaApplet程序的開發(fā),開發(fā)一個JavaApplet程序需經(jīng)過三個步驟:編寫源文件、編譯源文件生成字節(jié)碼、通過瀏覽器加載運行字節(jié)碼。(1)編寫源文件一個JavaApplet源文件也是由若干個類組成的,一個JavaApplet源文件不再需要main方法,但必須有且只有一個類擴(kuò)展了Applet類,即它是Applet類的子類(Applet類是系統(tǒng)提供的類),我們把這個類稱作JavaApplet源文件的主類。下面的例子2是一個簡單的JavaApplet源文件。,2)編譯,c:1000javacBoy.java編譯成功后,文件夾C:1000下會生成一個Boy.class文件。如果源文件有多個類,將生成多個class文件,都和源文件在同一文件夾里。如果你對源文件進(jìn)行了修改,那么你必須重新編譯,再生成新的字節(jié)碼文件。,3)運行,JavaApplet由瀏覽器來運行,因此我們必須編寫一個超文本文件(含有applet標(biāo)記的web頁)通知瀏覽器來運行這個JavaApplet。下面是一個最簡單的一個html文件,通知瀏覽器運行JavaApplet。我們使用記事本編輯如下:現(xiàn)在可以使用瀏覽器打開文件Boy.html運行JavaApplet,效果如圖1.7所示。,返回,如果你的瀏覽器不能運行你的Applet(如沒有安裝瀏覽器,或瀏覽器沒有內(nèi)嵌的java實時運行環(huán)境等),你也可以使用J2SE提供的appletviewer(小程序查看器)來運行你的Applet:C:tempappletviewerBoy.html,1.7JDK1.6編譯器的新規(guī)定,和以前版本的編譯器有了一個很大的不同,JDK1.6的編譯器javac.exe不再向下兼容,也就是說,如果在編譯源文件時沒有特別約定的話,用JDK1.6的編譯器生成的字節(jié)碼只能在安裝了JDK1.6或JRE1.6的Java平臺環(huán)境中運行。可用“-source”參數(shù)約定字節(jié)碼適合的Java平臺。如javacsource1.2,返回,第2章基本數(shù)據(jù)類型和數(shù)組,本章導(dǎo)讀1.標(biāo)識符和關(guān)鍵字2.基本數(shù)據(jù)類型3.基本數(shù)據(jù)類型的轉(zhuǎn)換4.數(shù)據(jù)的輸入與輸出5.數(shù)組,2.1標(biāo)識符和關(guān)鍵字,1標(biāo)識符用來標(biāo)識類名、變量名、方法名、類型名、數(shù)組名、文件名的有效字符序列稱為標(biāo)識符。簡單地說,標(biāo)識符就是一個名字。Java語言規(guī)定標(biāo)識符由字母、下劃線、美元符號和數(shù)字組成,并且第一個字符不能是數(shù)字。標(biāo)識符中的字母是區(qū)分大小寫的,Beijing和beijing是不同的標(biāo)識符。2關(guān)鍵字關(guān)鍵字就是Java語言中已經(jīng)被賦予特定意義的一些單詞,它們在程序中有著不同的用途,不可以把關(guān)鍵字作為標(biāo)識符來用。,Java語言中的關(guān)鍵字,在大多數(shù)的JAVAIDE中,關(guān)鍵字用藍(lán)色字體顯示.,返回,2.2基本數(shù)據(jù)類型,基本數(shù)據(jù)類型也稱作簡單數(shù)據(jù)類型。Java語言有8種簡單數(shù)據(jù)類型,分別是:boolean、byte、short、int、long、float、double、char。這8種數(shù)據(jù)類型習(xí)慣上可分為4大類型:邏輯類型:boolean字符類型:char整數(shù)類型:byte、short、int、long浮點類型:float、double,2.2基本數(shù)據(jù)類型,1邏輯類型常量:true,false。變量的定義:使用關(guān)鍵字boolean來定義邏輯變量,定義時也可以賦給初值。如:booleanx,ok=true,關(guān)閉=false;2整數(shù)類型常量:123,6000(十進(jìn)制),077(八進(jìn)制),0 x3ABC(十六進(jìn)制)。整型變量的定義分為4種,2.2基本數(shù)據(jù)類型,(1)int型使用關(guān)鍵字int來定義int型整型變量,定義時也可以賦給初值,例如:intx,平均=9898;對于int型變量,內(nèi)存分配給4個字節(jié)(byte)。int型變量的取值范圍是:-231231-1。(2)byte型使用關(guān)鍵字byte來定義byte型整型變量。對于byte型變量,內(nèi)存分配給1個字節(jié),占8位,byte型變量的取值范圍是-2727-1。,2.2基本數(shù)據(jù)類型,(3)short型使用關(guān)鍵字short來定義short型整型變量。對于short型變量,內(nèi)存分配給2個字節(jié),short型變量的取值范圍是-215215-1。(4)long型使用關(guān)鍵字long來定義long型整型變量,對于long型變量,內(nèi)存分配給8個字節(jié),long型變量的取值范圍是-263263-1。,2.2基本數(shù)據(jù)類型,3字符類型常量:Unicode表中的字符就是一個字符常量,例如A,?,9,好,等。Java還使用轉(zhuǎn)意字符常量,如:n:換行b:退格t:水平制表:單引號”:雙引號變量的定義:使用關(guān)鍵字char來定義字符變量,例如:charx=A,漂亮=假,jiafei;,2.2基本數(shù)據(jù)類型,char型變量,內(nèi)存分配給2個字節(jié),占16位,最高位不是符號位,沒有負(fù)數(shù)的char。char型變量的取值范圍是065536。要觀察一個字符在unicode表中的順序位置,必須使用int類型顯示轉(zhuǎn)換,不可以使用short型轉(zhuǎn)換,因為char的最高位不是符號位。同樣,要得到一個065536之間的數(shù)所代表的Unicode表中相應(yīng)位置上的字符也必須使用char型顯示轉(zhuǎn)換。下面的例子1中,分別用顯示轉(zhuǎn)換來顯示一些字符在Unicode表中的位置,以及某些位置上的字符。,2.2基本數(shù)據(jù)類型,4浮點類型浮點型分兩種(1)float型常量:453.5439f,21379.987F,2e40f(2乘10的40次方,科學(xué)計數(shù)法)變量的定義:使用關(guān)鍵字float來定義float型變量。對于float型變量,內(nèi)存分配給4個字節(jié),其取值范圍是10-381038和-1038-10-38。,2.2基本數(shù)據(jù)類型,(2)double型常量:21389.5439d(d可以省略),23189908.987,123.0,6e-140(6乘10的-140次方,科學(xué)計數(shù)法)。變量的定義:使用關(guān)鍵字double來定義double型變量。double型變量,內(nèi)存分配給8個字節(jié),double型變量的取值范圍大約是10-30810308和-10308-10-308。,返回,2.3基本數(shù)據(jù)類型的轉(zhuǎn)換,基本數(shù)據(jù)類型的轉(zhuǎn)換就是把一種基本數(shù)據(jù)類型變量轉(zhuǎn)變成另一種基本類型變量。下列基本類型會涉及數(shù)據(jù)轉(zhuǎn)換,不包括邏輯類型和字符類型。我們將這些類型按精度從“低”到“高”排列了順序:byteshortintlongfloatdouble當(dāng)把級別低的變量的值賦給級別高的變量時,系統(tǒng)自動完成數(shù)據(jù)類型的轉(zhuǎn)換,如int型轉(zhuǎn)換成long型。當(dāng)把級別高的變量的值賦給級別低的變量時,必須使用顯示類型轉(zhuǎn)換運算。顯示轉(zhuǎn)換的格式:(類型名)要轉(zhuǎn)換的值;,2.3基本數(shù)據(jù)類型的轉(zhuǎn)換,例如intx=(int)34.89;輸出x將是34,強制轉(zhuǎn)換運算可能導(dǎo)致精度的損失。當(dāng)把一個整數(shù)賦值給一個byte、short、int或long型變量時,不可以超出這些變量的取值范圍,否則必須進(jìn)行類型轉(zhuǎn)換運算。下面我們看一個例子:程序運行結(jié)果見右圖:,返回,2.4數(shù)據(jù)的輸入與輸出,由于C語言出現(xiàn)的比較早,那個時候還沒有圖形用戶界面的概念(GraphicsUserInterface),因此,C語言提供了許多用來輸入、輸出數(shù)據(jù)的函數(shù),例如printf、scanf等。Java不象C,提供在命令行進(jìn)行數(shù)據(jù)輸入、輸出的功能不多。關(guān)于輸入、輸出我們將在第九章詳細(xì)介紹,現(xiàn)在只需知道它的作用是在命令行窗口(例如,MS-DOS窗口)輸出數(shù)據(jù)即可。Sun公司新推出的JDK1.5又新增了一些在命令行進(jìn)行數(shù)據(jù)輸入、輸出的功能。,2.4數(shù)據(jù)的輸入與輸出,1數(shù)據(jù)輸出:System.out.printfSystem.out.printf的功能完全類似C語言中的printf函數(shù)。pringf的一般格式:printf(格式控制部分,表達(dá)式1,表達(dá)式2,表達(dá)式n);例如:System.out.printf(“點的坐標(biāo)為(%d,%d)”,x,y);輸出:點的坐標(biāo)為(200,300)Printf方法的用法與C語言相同。下面我們看一個例子,來進(jìn)一步了解System.out.printf數(shù)據(jù)輸出。,Printf()的格式控制部分,格式控制部分由格式控制符和普通字符組成。格式控制符用來輸出表達(dá)式的值,普通字符原樣輸出。d輸出整數(shù)類型數(shù)據(jù)。c輸出字符類型數(shù)據(jù)。f輸出浮點類型數(shù)據(jù),最多保留6位小數(shù)。s輸出字符串類型數(shù)據(jù)。輸出數(shù)據(jù)時,也可以控制數(shù)據(jù)在命令行的位置:md輸出的int類型數(shù)據(jù)占m列。m.nf輸出的浮點數(shù)據(jù)占m列,保留n位小數(shù)。Java提倡用:n表示回車換行。,2.4數(shù)據(jù)的輸入與輸出,2數(shù)據(jù)的輸入:ScannerScanner是SDK1.5新增的一個類,可以使用該類創(chuàng)建一個對象:Scannerreader=newScanner(System.in);然后reader對象調(diào)用下列方法(函數(shù)),讀取用戶在命令行輸入的各種數(shù)據(jù)類型,nextByte(),nextDouble(),nextFloat(),nextInt(),nextLine(),nextLong(),nextShort()。,2.4數(shù)據(jù)的輸入與輸出,上述方法執(zhí)行時都會堵塞,等待你在命令行輸入數(shù)據(jù)回車確認(rèn)。下面讓我們來看一個例子,來更好的了解Scanner語句,在這個例子中,用戶在鍵盤依次輸入若干個數(shù)字,每輸入一個數(shù)字都需要按回車鍵確認(rèn),最后在鍵盤輸入一個非數(shù)字字符結(jié)束整個的輸入操作過程。程序?qū)⒂嬎愠鲞@些數(shù)的和及平均值。,返回,2.5數(shù)組,數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復(fù)合數(shù)據(jù)類型。通過數(shù)組名加數(shù)組下標(biāo)來使用數(shù)組中的數(shù)據(jù)。下標(biāo)從0開始。1聲明數(shù)組聲明數(shù)組包括數(shù)組的名字、數(shù)組包含的元素的數(shù)據(jù)類型。聲明一維數(shù)組有下列兩種格式:數(shù)組元素類型數(shù)組名字;數(shù)組元素類型數(shù)組名字;,2.5數(shù)組,聲明二維數(shù)組有下列兩種格式:數(shù)組元素類型數(shù)組名字;數(shù)組元素類型數(shù)組名字;2創(chuàng)建數(shù)組聲明數(shù)組僅僅是給出了數(shù)組名和元素的數(shù)據(jù)類型,要想使用數(shù)組還必須為它分配內(nèi)存空間,即創(chuàng)建數(shù)組。在為數(shù)組分配內(nèi)存空間時必須指明數(shù)組的長度。格式如下:數(shù)組名字=new數(shù)組元素的類型數(shù)組元素的個數(shù);例如:boy=newfloat4;,2.5數(shù)組,0 x785BA,數(shù)組的內(nèi)存模式,36.50,12.87,68.78,96.67,2.5數(shù)組,3數(shù)組元素的使用一維數(shù)組通過下標(biāo)符訪問自己的元素,如boy0,boy1等。需要注意的是下標(biāo)從0開始,因此,數(shù)組若是7個元素,下標(biāo)到6為止,如果你將來使用下標(biāo)超過6將會發(fā)生異常(數(shù)組下標(biāo)越界)。二維數(shù)組也通過下標(biāo)符訪問自己的元素,如a01,a12等。下標(biāo)也是從0開始。,2.5數(shù)組,4數(shù)組的初始化創(chuàng)建數(shù)組后,系統(tǒng)會給每個數(shù)組元素一個默認(rèn)的值,如,float型是0.0。我們在聲明數(shù)組時同時也還可以給數(shù)組的元素一個初始值,如:floatboy=21.3f,23.89f,2.0f,23f,778.98f;,數(shù)組屬于引用型變量,因此兩個相同類型的數(shù)組如果具有相同的引用,它們就有完全相同的元素。例如,對于inta=1,2,3,b=4,5;數(shù)組變量a和b分別存放著不同的引用。但是,如果使用了賦值語句:a=b;那么,a中存放的引用就和b的相同,這時系統(tǒng)將釋放最初分配給數(shù)組a的元素,使得a的元素和b的元素相同,即a0,a1就是b0,b1,而最初分配給數(shù)組a的三個元素已不復(fù)存在.,2.5數(shù)組,下面讓我們結(jié)合這個例子來看怎樣使用數(shù)組。,2.5數(shù)組,返回,0 xB9671,0 xB8321,0 xB9671,Unicode標(biāo)準(zhǔn)字符集,Java語言使用;可識別65536個字符;前128個字符為ASCII碼;包含了世界上幾乎所有語言中的“字母”;,返回,第3章運算符、表達(dá)式與語句,本章導(dǎo)讀1.算術(shù)運算符和算術(shù)表達(dá)式2.關(guān)系運算符與關(guān)系表達(dá)式3.邏輯運算符與邏輯表達(dá)式4.賦值運算符與賦值表達(dá)式5.移位運算符6.位運算符7.條件運算符8.instanceof運算符,9.一般表達(dá)式10.語句概述11.分支語句12.循環(huán)語句13.跳轉(zhuǎn)語句,3.1算術(shù)運算符和算術(shù)表達(dá)式,(1)加減運算符加減運算的結(jié)合性是從左到右。加減運算的操作元是整型或浮點型數(shù)據(jù),加減運算符的優(yōu)先級是4級。(2)乘、除和求余運算符乘、除和求余運算的運算符號為*、/、%,都是雙目運算符。*、/、%運算符的結(jié)合性是從左到右,例如:2*3/8,先計算2*3,然后再將得到的結(jié)果除以8。乘、除和求余運算的操作元是整型或浮點型數(shù)據(jù)。*、/、%運算符的優(yōu)先級是3級。,(3)自增、自減運算符自增、自減運算的運算符號為:+、-,都是單目運算符,運算符的優(yōu)先級是2級。運算符可以放在操作元之前,也可以放在操作元之后,但操作元必須是一個整型或浮點型變量(不能是常量或表達(dá)式)。運算符的作用是使變量的值增1或減1,如:+x,-x表示在使用x之前,先使x的值加(減)1。x+,x-表示在使用x之后,使x的值加(減)1。粗略地看,+x和x+的作用相當(dāng)于x=x+1。但+x和x+的不同之處在于,+x是先執(zhí)行x=x+1再使用x的值,而x+是先使用x的值再執(zhí)行x=x+1。如果x的原值是5,則:對于y=+x;y的值為6。對于y=x+;y的值為5,然后x的值變?yōu)?。,(4)算術(shù)表達(dá)式用算術(shù)符號和操作元連接起來的符合Java語法規(guī)則的式子,稱為算術(shù)表達(dá)式。如x+2*y-30+3*(y+5)-12+n+(-n)。(5)算術(shù)混合運算的精度精度從“低”到“高”排列的順序是:byteshortintlongfloatdoubleJava將按運算符兩邊的操作元的最高精度保留結(jié)果的精度,例如:5/2的結(jié)果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。,char型數(shù)據(jù)和整型數(shù)據(jù)運算結(jié)果的精度是int。例如:bytek=18;那么H+k;的結(jié)果是int型,因此下列寫法是不正確的,charch=H+k;應(yīng)當(dāng)寫成:charch=(char)(H+k);,返回,3.2關(guān)系運算符與關(guān)系表達(dá)式,關(guān)系運算符用來比較兩個值的關(guān)系,關(guān)系運算符的運算結(jié)果是boolean型數(shù)據(jù),當(dāng)運算符對應(yīng)的關(guān)系成立時,運算結(jié)果是true,否則是false。(1)大小關(guān)系運算符大小關(guān)系運算的符號分別是:、=、1的結(jié)果是true。在書寫時要特別注意的是“20-17的結(jié)果為true,因為算術(shù)運算符的級別高于關(guān)系運算符,1020-17相當(dāng)于10(20-17)。,(2)等與不等關(guān)系等與不等關(guān)系運算的符號分別是:“=”、“!=”,都是雙目運算符。運算符的級別是7級?!?”和“!=”都是由2個字符組成的一個完整的符號,書寫時不要含有空格。注意不要將后面講述的賦值運算符“=”與等號運算符“=”混淆。(3)關(guān)系表達(dá)式結(jié)果為數(shù)值型的變量或表達(dá)式可以通過關(guān)系運算符形成關(guān)系表達(dá)式。例如,2418,(x+y+z)30+x等。,返回,3.3邏輯運算符與邏輯表達(dá)式,邏輯運算用來實現(xiàn)boolean型數(shù)據(jù)的邏輯“與”、“或”和“非”運算,運算結(jié)果是boolean型數(shù)據(jù)。(1)邏輯“與”和邏輯“或”邏輯“與”和邏輯“或”運算的符號是:11111000在進(jìn)行a1運算時,首先將11111000生級為int型,將高位用1填充:11111111111111111111111111111000然后在進(jìn)行移位運算得到-16:11111111111111111111111111110000,因此,如果把a1的結(jié)果賦值給一個byte型變量就必須進(jìn)行強制轉(zhuǎn)換運算:byteb=(byte)(a1);在進(jìn)行an運算時,如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計算出n%32的結(jié)果m,然后進(jìn)行am運算。例如,a33的計算結(jié)果與a1相同。對于long型數(shù)據(jù),系統(tǒng)總是先計算出n%64的結(jié)果m,然后進(jìn)行a,是雙目運算符。假設(shè)a是一個被移位的整型數(shù)據(jù),n是位移量。an運算的結(jié)果是通過將a的所有位都右移n位,每右移一個位,右邊的低階位被移出丟棄,并用0或1填充左邊的高位,a是正數(shù)用0填充,負(fù)數(shù)時用1填充。因此,a每右移一次,如果該數(shù)的每一計算有效位都沒有從低位移出時,就相當(dāng)于將a除以2并舍棄了余數(shù)。正數(shù)不斷右移位的最后結(jié)果一定是0,而負(fù)數(shù)不斷右移位的最后結(jié)果是-1。對于byte或short型數(shù)據(jù),an的運算結(jié)果是int型精度。,在進(jìn)行an運算時,如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計算出n%32的結(jié)果m,然后進(jìn)行am運算,例如,a33的計算結(jié)果與a1相同。對于long型數(shù)據(jù),系統(tǒng)總是先計算出n%64的結(jié)果m,然后進(jìn)行am運算。在下面的例子1中,用戶輸入移位運算的兩個操作元,程序給出右移和左移后的結(jié)果。,返回,3.6位運算符,(1)“按位與”運算符“(2)表達(dá)式語句一個表達(dá)式的最后加上一個分號就構(gòu)成了一個語句,稱作表達(dá)式語句。分號是語句不可缺少的部分。例如,賦值語句:x=23;,(3)復(fù)合語句可以用“”和“”把一些語句括起來構(gòu)成復(fù)合語句,一個復(fù)合語句也稱作一個代碼塊。例如,z=23+x;System.out.println(hello);(4)控制語句控制語句包括:條件分支語句、循環(huán)語句和跳轉(zhuǎn)語句。(5)package語句和import語句package語句和import語句與類、對象有關(guān),將在第4章講解。,返回,3.11分支語句,1條件分支語句(1)if-else語句.if-else語句是Java中的一條語句,由一個“if”、“else”和兩個復(fù)合語句按一定格式構(gòu)成,if-else語句的格式如下:if(表達(dá)式)若干語句else若干語句一條if-else語句的作用是根據(jù)不同的條件產(chǎn)生不同的操作,執(zhí)行法則如下:if后面()內(nèi)的表達(dá)式的值必須是boolean型的。如果表達(dá)式的值為true,則執(zhí)行緊跟著的復(fù)合語句;如果表達(dá)式的值為false,則執(zhí)行else后面的復(fù)合語句。,(2)多條件if-elseif-else語句程序有時需要根據(jù)多條件來選擇某一操作,這時就可以使用if-elseif-else語句。if-elseif-else語句是Java中的一條語句,由一個“if”、若干個“elseif”、一個“else”與若干個復(fù)合語句按一定規(guī)則構(gòu)成。語句的格式如下:if(表達(dá)式1)若干語句elseif(表達(dá)式2)若干語句elseif(表達(dá)式n)若干語句else若干語句,有時為了編程的需要,復(fù)合語句中可以沒有任何語句。一條if-elseif-else語句的作用是根據(jù)不同的條件產(chǎn)生不同的操作,執(zhí)行法則如下:if以及elseif后面()內(nèi)的表達(dá)式的值必須是boolean型的。該語句執(zhí)行時,首先計算if后括號中的表達(dá)式的值,如果該表達(dá)式的值為true,則執(zhí)行緊跟著的復(fù)合語句,然后就結(jié)束整個語句的執(zhí)行;如果if后括號中的表達(dá)式的值為false,就依次再計算后面的elseif的表達(dá)式的值,直到出現(xiàn)某個表達(dá)式的值為true為止,然后執(zhí)行該elseif后面的復(fù)合語句,結(jié)束整個語句的執(zhí)行。如果所有的表達(dá)式的值都是false,就執(zhí)行else后面復(fù)合語句,結(jié)束整個語句的執(zhí)行。在下面的例子3中,用戶在鍵盤輸入3個數(shù),程序判斷這3個數(shù)能構(gòu)成什么形狀的三角形。,2switch開關(guān)語句switch語句是多分支的開關(guān)語句,它的一般格式定義如下:switch(表達(dá)式)case常量值1:若干個語句break;case常量值2:若干個語句break;case常量值n:若干個語句break;default:若干語句,switch語句中表達(dá)式的值必須是整型或字符型;常量值1到常量值n必須也是整型或字符型。switch語句首先計算表達(dá)式的值,如果表達(dá)式的值和某個case后面的常量值相同,就執(zhí)行該case里的若干個語句,直到碰到break語句為止。若沒有任何常量值與表達(dá)式的值相同,則執(zhí)行default后面的若干個語句。其中default是可有可無的,如果它不存在,并且所有的常量值都和表達(dá)式的值不相同,那么switch語句就不會進(jìn)行任何處理。需要注意的是,在同一個switch語句中,case后的常量值必須互不相同。下面的例子4使用了switch語句,用戶在鍵盤輸入一個代表月份的整數(shù),程序輸出是該月是在年度的第幾季度。,返回,3.12循環(huán)語句,1while循環(huán)while語句的一般格式:while(表達(dá)式)若干語句while語句由關(guān)鍵字while、括號中的一個求值為boolean型數(shù)據(jù)的表達(dá)式和一個復(fù)合語句組成,其中的復(fù)合語句稱作循環(huán)體,循環(huán)體只有一條語句時,大括號“”可以省略,但最好不要省略,以便增加程序的可讀性。表達(dá)式稱作循環(huán)條件。while語句的執(zhí)行規(guī)則是:(1)計算表達(dá)式的值,如果該值是true時,就進(jìn)行(2),否則進(jìn)行(3)。(2)執(zhí)行循環(huán)體,再進(jìn)行(1)(3)結(jié)束while語句的執(zhí)行while語句執(zhí)行規(guī)則如流程圖3.5所示。,while語句執(zhí)行規(guī)則如流程圖3.5所示。,圖3.5while循環(huán)語句,2do-while循環(huán)一般格式:do若干語句while(表達(dá)式);do-while循環(huán)和while循環(huán)的區(qū)別是:do-while的循環(huán)體至少被執(zhí)行一次,如圖3.6所示。下面的例子5分別用while和do-while循環(huán)計算常數(shù)e的近似值:e=1+1/1+1/2!+1/3!+。,3for循環(huán)for語句的一般格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體for語句由關(guān)鍵字for、括號中用分號分割的3個表達(dá)式,以及一個復(fù)合語句組成,其中的“表達(dá)式2”必須是一個求值為boolean型數(shù)據(jù)的表達(dá)式,而復(fù)合語句稱作循環(huán)體。,for語句的執(zhí)行規(guī)則是:(1)計算“表達(dá)式1”,完成必要的初始化工作(2)判斷“表達(dá)式2”的值,若“表達(dá)式2”的值為true,則進(jìn)行(3),否則進(jìn)行(4)。(3)執(zhí)行循環(huán)體,然后計算“表達(dá)式3”,以便改變循環(huán)條件,進(jìn)行(2)。(4)結(jié)束for語句的執(zhí)行.一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。例如,6=1+2+3。下面的例子6使用for循環(huán)計算出1000內(nèi)的全部完數(shù),返回,3.13跳轉(zhuǎn)語句,跳轉(zhuǎn)語句是指用關(guān)鍵字break或continue加上分號構(gòu)成的語句,例如:break;在循環(huán)語句的循環(huán)體中使用跳轉(zhuǎn)語句。在一個循環(huán)中,比如循環(huán)50次的循環(huán)語句中,如果在某次循環(huán)體的執(zhí)行中執(zhí)行了break語句,那么整個循環(huán)語句就結(jié)束。如果在某次循環(huán)體的執(zhí)行中執(zhí)行了continue語句,那么本次循環(huán)就結(jié)束,即不再執(zhí)行本次循環(huán)中循環(huán)體中continue語句后面的語句,而轉(zhuǎn)入進(jìn)行下一次循環(huán)。下面的例子7和例子8使用的跳轉(zhuǎn)語句。,返回,本章導(dǎo)讀0.面向?qū)ο缶幊?.類聲明和類體2.類體的構(gòu)成3.構(gòu)造方法與對象的創(chuàng)建4.對象的引用與實體5.成員變量6.方法,第4章類與對象,7.方法重載8.this關(guān)鍵字9.包10.import語句11.訪問權(quán)限12.對象的組合13.基本類型數(shù)據(jù)的類包裝14.反編譯和文檔生成器15.JAR文件,面向?qū)ο缶幊?封裝封裝是面向?qū)ο蠓椒ǖ暮诵乃枷胫?。它有兩個含義:一是指把對象的屬性和行為看成為一個密不可分的整體,將這兩者“封裝”在一個不可分割的獨立單位(即對象)中。另一層含義指“信息隱蔽”,把不需要讓外界知道的信息隱藏起來,有些對象的屬性及行為允許外界用戶知道或使用,但不允許更改,而另一些屬性或行為,則不允許外界知曉;或只允許使用對象的功能,而盡可能隱蔽對象的功能實現(xiàn)細(xì)節(jié)。,繼承子類可以繼承父類的屬性(數(shù)據(jù))和功能(操作)。繼承是面向?qū)ο蠓椒ㄖ械闹匾拍睿⑶沂翘岣哕浖_發(fā)效率的重要手段。多態(tài)多態(tài)程序中允許出現(xiàn)重名現(xiàn)象。Java語言中具有操作名稱的多態(tài)如:RectrectangleOne;,2為聲明的對象分配成員變量使用new運算符和類的構(gòu)造方法為聲明的對象分配成員變量,如果類中沒有構(gòu)造方法,系統(tǒng)會調(diào)用默認(rèn)的構(gòu)造方法(默認(rèn)的構(gòu)造方法是無參數(shù)的,你一定還記得構(gòu)造方法的名字必須和類名相同這一規(guī)定),上述的Rect類提供了2個構(gòu)造方法,下面都是合法的創(chuàng)建對象的語句:rectangleOne=newRect();或rectangleOne=newRect(10,20);,如果類里定義了一個或多個構(gòu)造方法,那么Java不提供默認(rèn)的構(gòu)造方法。如果上述Rect只提供一個帶參數(shù)的構(gòu)造方法,代碼:rectangleOne=newRect();創(chuàng)建對象是非法的。創(chuàng)建對象的代碼:rectangleOne=newRect(10,20);會實現(xiàn)下述兩件事:(1)為成員變量分配內(nèi)存空間,然后執(zhí)行構(gòu)造方法中的語句。(2)給出一個信息,已確保這些成員變量是屬于對象rectangleOne的。,創(chuàng)建對象就是指為它分配成員變量,并獲得一個引用,以確保這些成員變量由它來“操作管理”。為對象分配成員變量后,內(nèi)存模型由聲明對象時的模型圖4.1,變成如圖4.2所示,箭頭示意對象可以操作這些屬于自己的成員變量。,圖4.2分配實體后的對象,0 xAA11,RectangleOne,3創(chuàng)建多個不同的對象一個類通過使用new運算符可以創(chuàng)建多個不同的對象,這些對象將被分配不同的內(nèi)存空間,因此,改變其中一個對象的狀態(tài)不會影響其它對象的狀態(tài)。例如,我們使用前面的Rect類創(chuàng)建兩個對象:rectangleOne、rectangleTwo。rectangleOne=newRect(10,20);rectangleTwo=newRect(33,66);當(dāng)創(chuàng)建對象rectangleOne時,Rect類中的成員變量sizeA、sizeB被分配內(nèi)存空間,并返回一個引用給ectangleOne;,當(dāng)再創(chuàng)建一個對象rectangleTwo時,Rect類中的成員變量sizeA、sizeB再一次被分配內(nèi)存空間,并返回一個引用給rectangleTwo。內(nèi)存模型如圖4.3所示。,rectangleOne,圖4.3創(chuàng)建多個對象,0 xBB42,rectangleTwo,4使用對象對象不僅可以操作自己的變量改變狀態(tài),而且還擁有了使用創(chuàng)建它的那個類中的方法的能力,對象通過使用這些方法可以產(chǎn)生一定的行為。通過使用運算符“.”,對象可以實現(xiàn)對自己的變量訪問和方法的調(diào)用。1)對象操作自己的變量(對象的屬性)2)對象調(diào)用類中的方法(對象的功能)下面例子1中,“Ladder”類創(chuàng)建了2個對象:ladderOne,ladderTwo。,返回,4.4對象的引用與實體,我們已經(jīng)知道,當(dāng)用類創(chuàng)建一個對象時,成員變量被分配內(nèi)存空間,這些內(nèi)存空間稱做該對象的實體或變量,而對象中存放著引用,以確保這些變量由該對象操作使用。因此,如果兩個對象有相同的引用,那么就具有同樣的實體。假如使用例子1“Ladder”類的構(gòu)造方法創(chuàng)建了兩個對象t1,t2。t1=newLadder(11,22,33);t2=newLadder(6,12,18);,0 xAA,t1,0 xDD,t2,0 xDD,Java具有“垃圾收集”機制,Java的運行環(huán)境周期地檢測某個實體是否已不再被任何對象所引用,如果發(fā)現(xiàn)這樣的實體,就釋放實體占有的內(nèi)存。因此,Java編程人員不必象C+程序員那樣,要時刻自己檢查哪些對象應(yīng)該釋放內(nèi)存。當(dāng)把變量t2中存放的引用賦給t1后,最初分配給對象t1的成員變量(實體)所占有的內(nèi)存就會被釋放。沒有實體的對象稱作空對象??諏ο蟛荒苁褂?,即不能讓一個空對象去調(diào)用方法產(chǎn)生行為。假如程序中使用了空對象,程序在運行時會出現(xiàn)異常:NullPointerException。由于對象是動態(tài)地分配實體,所以Java的編譯器對空對象不做檢查。因此,在編寫程序時要避免使用空對象。,返回,4.5成員變量,用關(guān)鍵字static修飾的成員變量稱作靜態(tài)變量或類變量,而沒有使用static修飾的成員變量稱作實例變量。例如,下述A類中,x是實例變量,而y是類變量。classAfloatx;/實例變量staticinty;/類變量類變量是與類相關(guān)聯(lián)的數(shù)據(jù)變量,也就是說,類變量是和該類所創(chuàng)建的所有對象相關(guān)聯(lián)的變量,改變其中一個對象的這個類變量就同時改變了其它對象的這個類變量。,因此,類變量不僅可以通過某個對象訪問也可以直接通過類名訪問。實例變量僅僅是和相應(yīng)的對象關(guān)聯(lián)的變量,也就是說,不同對象的實例變量互不相同,即分配不同的內(nèi)存空間,改變其中一個對象的實例變量不會影響其它對象的這個實例變量。實例變量必須通過對象訪問。下面例子2中,兩個“Lader”對象共享bottom。效果如圖4.7,2常量如果一個成員變量修飾為final,就是常量,常量的名字習(xí)慣用大寫字母,例如:finalintMAX;聲明常量時必須初始化。對于final修飾的成員變量,對象可以操作使用,但不能做更改操作。下面的例子給出了常量的用法。效果如圖4.9,返回,4.6方法,我們已經(jīng)知道,類體內(nèi)容可以有2種類型的成員:成員變量和方法。其中一部分方法稱作構(gòu)造方法,供類創(chuàng)建對象時使用,用來給出類所創(chuàng)建的對象的初始狀態(tài)。另一部分方法可分為實例方法和類方法,類所創(chuàng)建的對象可以調(diào)用這些方法形成一定的算法,體現(xiàn)對象具有某種功能。當(dāng)對象調(diào)用方法時,方法中出現(xiàn)的成員變量就是指分配給該對象的成員變量。對象不可以調(diào)用構(gòu)造方法,構(gòu)造方法是專門用來創(chuàng)建對象的。方法的定義包括兩部分:方法聲明和方法體。一般格式為:,方法聲明部分方法體的內(nèi)容1方法聲明和方法體最基本的方法聲明包括方法名和方法的返回類型,返回類型也簡稱作方法的類型。如:floatarea().,方法的名字必須符合標(biāo)識符規(guī)定。在給方法起名字時應(yīng)遵守以下習(xí)慣:名字如果使用拉丁字母,首寫字母使用小寫。如果由多個單詞組成,從第2個單詞開始的其它單詞的首寫字母使用大寫。例如floatgetTrangleArea()voidsetCircleRadius(doubleradius)等。方法聲明之后的一對大括號“”、“”以及之間的內(nèi)容稱作方法的方法體。類中的方法必須要有方法體,如果方法的類型是void類型,方法體中也可以不書寫任何語句。,2方法體的構(gòu)成方法體的內(nèi)容包括變量的定義和合法的Java語句,在方法體中聲明的變量以及方法的參數(shù)稱作局部變量,局部變量僅僅在該方法內(nèi)有效。方法的參數(shù)在整個方法內(nèi)有效,方法內(nèi)定義的局部變量從它定義的位置之后開始有效。寫一個方法和C語言中寫一個函數(shù)完全類似,只不過在這里稱作方法。局部變量的名字必須符合標(biāo)識符規(guī)定,遵守習(xí)慣:名字如果使用拉丁字母,首寫字母使用小寫。如果由多個單詞組成,從第2個單詞開始的其它單詞的首寫字母使用大寫。,3實例方法與類方法除構(gòu)造方法外,其他的方法可分為實例方法或類方法。方法聲明中用關(guān)鍵字static修飾的稱作類方法或靜態(tài)方法,不用static修飾的稱作實例方法。一個類中的方法可以互相調(diào)用:實例方法可以調(diào)用該類中實例方法或類方法;類方法只能調(diào)用該類的類方法,不能調(diào)用實例方法;如:A類中的max方法和getMaxSqrt方法是類方法;sum和min方法是實例方法。,實例方法可以操作成員變量,無論是實例變量或類變量;而類方法只能操作類變量不能操作實例變量,也就是說類方法中不能有操作實例變量的語句。二者為何有著這樣的區(qū)別呢?(1)實例方法必須通過對象來調(diào)用(2)類方法可以通過類名調(diào)用無論類方法或?qū)嵗椒?,?dāng)被調(diào)用執(zhí)行時,方法中的局部變量才被分配內(nèi)存空間,方法調(diào)用完畢,局部變量即刻釋放所占的內(nèi)存。下面的例子4,通過類名調(diào)用類方法。,4參數(shù)傳值當(dāng)方法被調(diào)用時,如果方法有參數(shù),參數(shù)必須要實例化,即參數(shù)變量必須有具體的值。在Java中,方法的所有參數(shù)都是“傳值”的,也就是說,方法中參數(shù)變量的值是調(diào)用者指定的值的拷貝。如果向方法的int型參數(shù)x傳遞一個int值,那么參數(shù)x得到的值是傳遞值的拷貝。方法如果改變參數(shù)的值,不會影響向參數(shù)“傳值”的變量的值。(1)基本數(shù)據(jù)類型參數(shù)的傳值下面的例子5中,向一個方法的基本型參數(shù)傳值。效果如圖4.11,(2)引用類型參數(shù)的傳值Java的引用型數(shù)據(jù)包括我們以前學(xué)習(xí)過的對象、數(shù)組以及后面將要學(xué)習(xí)的接口。當(dāng)參數(shù)是引用類型時,“傳值”傳遞的是變量的引用而不是變量所引用的實體。,圖4.10引用類型參數(shù)的傳值,實體,傳值,如果改變參數(shù)變量所引用的實體,就會導(dǎo)致原變量的實體發(fā)生同樣的變化,因為,兩個引用型變量如果具有同樣的引用,就會用同樣的實體。但是,改變參數(shù)的引用不會影響向其傳值的變量的引用。下面的例子6向一個方法的引用型參數(shù)傳值。效果如圖4.13,注意在上述例子6中,tom調(diào)用方法f把對象jerry的引用“傳值”給參數(shù)a后,對象jerry和對象a就具有同樣的成員變量,即同樣實體。因此,jerry和a就具有同樣的功能,也就是說a調(diào)用方法產(chǎn)生的行為和jerry調(diào)用同一方法產(chǎn)生的行為完全相同。當(dāng)對象a執(zhí)行a=null;后,a就不再有任何實體,變成一個空對象,如果再執(zhí)行:a.setLeg(100);就會引起NullPointerExcetion異常。但是,jerry的引用沒有發(fā)生任何變化,它依然引用著原來的實體,仍然可以調(diào)用方法產(chǎn)生行為。在下面的例子7中,“Cone”類在創(chuàng)建對象時,將一個“Circle”對象的引用“傳值”給“Cone”對象的“bottom”。效果如圖4.14,返回,4.8方法重載,方法重載是指一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。方法的返回類型和參數(shù)的名字不參與比較,也就是說,如果兩個方法的名字相同,即使類型不同,也必須保證參數(shù)不同。下面例4-8Area類中g(shù)etArea方法是一個重載方法。效果如圖4.15,返回,4.9this關(guān)鍵字,this是Java的一個關(guān)鍵字,可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。1在構(gòu)造方法中使用thisthis關(guān)鍵字可以出現(xiàn)在類的構(gòu)造方法中,代表使用該構(gòu)造方法所創(chuàng)建的對象。下述例子9中的構(gòu)造方法中出現(xiàn)了this,表示該對象在構(gòu)造自己時調(diào)用了方法cry()。2在實例方法中使用thisthis關(guān)鍵字可以出現(xiàn)在類的實例方法中,代表使用該方法的當(dāng)前對象。,我們已經(jīng)知道,實例方法可以操作成員變量。實際上,當(dāng)成員變量在實例方法中出現(xiàn)時,默認(rèn)的格式是:this.成員變量;意思是當(dāng)前對象的成員變量,如:classAintx;voidf()this.x=100;,在上述A類中的實例方法f中出現(xiàn)了this,this就代表使用f的當(dāng)前對象。所以,this.x就表示當(dāng)前對象的變量x,當(dāng)對象調(diào)用方法f時,將100賦給該對象的變量x。因此,當(dāng)一個對象調(diào)用方法時,方法中的成員變量就是指分配給該對象的成員變量。因此,通常情況下,可以省略成員變量名字前面的“this.”。我們知道類的實例方法可以調(diào)用類的其它方法,調(diào)用的默認(rèn)格式是:this.方法;,如:在上述B類中的方法f中出現(xiàn)了this,this代表使用方法f的當(dāng)前對象,所以,方法f的方法體中this.g()就是當(dāng)前對象調(diào)用方法g,也就是說,當(dāng)某個對象調(diào)用方法f過程中,又調(diào)用了方法g。由于這種邏輯關(guān)系非常明確,一個方法調(diào)用另一個方法時可以省略方法名字前面的“th
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目簽約協(xié)議書范本
- 草場租賃與生態(tài)補償機制協(xié)議
- 企業(yè)車輛事故責(zé)任免除與賠償協(xié)議
- 青島商鋪租賃協(xié)議書范本
- 綠色節(jié)能彩鋼活動房安裝施工安全保證合同
- 高端公寓租賃管理合同范本
- 中外合資餐飲品牌開發(fā)與推廣協(xié)議
- 草籽種植補貼與購銷保障合同
- 橋梁模態(tài)分析試驗專題報告
- 餐飲部管理運轉(zhuǎn)手冊
- 期末綜合試題 2024-2025學(xué)年下期初中英語人教版七年級下冊(新教材)
- 高中生物學(xué)業(yè)水平合格性考試:人教版必修1+必修2必背考點
- 安全生產(chǎn)應(yīng)急演練方案(合集)
- 2025江蘇揚州寶應(yīng)縣“鄉(xiāng)村振興青年人才”招聘67人筆試模擬試題含答案詳解
- 2025年甘肅高考真題化學(xué)試題(解析版)
- 中國政法大學(xué)《中國政治制度史》2023-2024學(xué)年第二學(xué)期期末試卷
- 超高玻璃吊裝方案(3篇)
- 2025年中考物理壓軸題分類匯編:單選題(電功率和電與磁綜合49題)原卷版+解析
- 東航j(luò)ava面試題及答案編程
- 醫(yī)學(xué)影像讀片試題及答案
- API RP 1175-2022 管道泄漏檢查計劃管理
評論
0/150
提交評論