版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象程序設計
第1章Java概述第2章Java編程基礎第3章Java面向對象基礎第4章面向對象高級特性第5章面向對象高級特性第6章Java常用類第7章Java集合第8章圖形用戶界面開發(fā)第8章圖形用戶界面開發(fā)-作業(yè)案例第9章多線程第10章Java網(wǎng)絡程序設計第11章IO(輸入輸出)第12章JDBC技術全套可編輯PPT課件Java程序設計-課程說明課程基本信息總學時/總學分:44學時/3學分理論學時:28上機學時:16課程類別:專業(yè)必修課考試類型:院考閉卷筆試:平時比例(作業(yè)、考勤)+末考比例:40%+60%面向對象程序設計-課程說明《面向對象程序設計》是計算機學科各專業(yè)的核心編程課程本課程是計算機學科(軟件工程,網(wǎng)絡工程,信息安全,計算機科學與技術)等專業(yè)的一門核心專業(yè)必修課,是Java高級程序設計、移動開發(fā)、Web程序設計、云開發(fā)等課程的先修課。Java是一門面向對象的編程語言,功能強大、簡單易用且應用范圍較廣。其主要內容有:(1)程序設計基礎:數(shù)據(jù)類型、控制結構、方法、數(shù)組等的基本概念、操作和應用;(2)面向對象基礎:封裝、繼承、多態(tài)等特性的基本原理、操作及應用;(3)面向對象深入及應用:抽象類、接口的基本概念及應用,輸入和輸出流,Java集合,圖形化界面設計(4)多線程、網(wǎng)絡編程、數(shù)據(jù)庫編程。第1章Java概述
本章內容1.1認識Java1.2JDK的使用1.3Java語言的集成開發(fā)環(huán)境1.1認識Java1.1.1什么是Java在認識Java之前,先了解兩個基本概念。1.軟件開發(fā)軟件開發(fā)是根據(jù)用戶要求建造軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項包括需求捕捉、需求分析、設計、實現(xiàn)和測試的系統(tǒng)工程。軟件是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合,分為系統(tǒng)軟件和應用軟件。軟件一般使用某種程序設計語言來實現(xiàn),通常采用相應的開發(fā)工具進行開發(fā)。2.計算機語言語言是人與人之間用于溝通的一種方式。例如,中國人與中國人用普通話溝通;中國人要和英國人交流,需要學習英語。計算機語言是人與計算機交流的方式。如果人要與計算機交互,需要學習計算機語言。計算機語言有很多種,如C、C++、Java、Python、PHP等。計算機語言(1)C/C++程序設計語言
大中型游戲大多使用C/C++作為程序設計語言。C/C++是所有程序設計人員公認的功能強大的程序設計語言,也是運行時速度比較快的語言。(2)JAVA程序設計語言Java程序具有跨平臺的優(yōu)點,程序的移植性好,所以Java非常適合進行游戲制作。對于大型網(wǎng)絡游戲來說,使用Java語言設計則不具備速度優(yōu)勢。(3)FlashActionScriptFlashActionScript屬于一種腳本語言,通常嵌入在Flash文件中,負責對Flash動畫流程進行控制。使用FlashActionScript設計出來的游戲畫面精美,容量也較小,所以在小游戲的設計領域迅速走紅。(4)C#程序設計語言
C#(讀做“Csharp”)是由C++和Java發(fā)展演化而來的程序語言,同時具備了兩種語言的尤點,既支持面向對象程序設計,又具有很高的運行速度。1.1認識JavaJava語言版本Java語言發(fā)展到今天,有多個版本。1995年5月23日,SUN公司將Oak語言重新命名為Java,1996年1月23日Sun公司推出JDK1.0,標志著Java正式誕生。Java語言第一次提出了“WriteOnce,RunAnywhere”的口號。1998年12月4日,JDK迎來了一個里程碑式的版本JDK1.2,工程代號為Playground(競技場),Sun在這個版本中把Java技術體系拆分為3個發(fā)展方向。(1)面向桌面應用開發(fā)的J2SE(Java2PlatformStandardEdition,標準版):包含構成Java語言核心的類,如數(shù)據(jù)庫連接、接口定義、輸入/輸出和網(wǎng)絡編程,主要用于開發(fā)一般個人電腦上的應用軟件。(2)面向手機等移動終端開發(fā)的J2ME(Java2PlatformMicroEdition,微型版):包含J2SE中的一部分類,用于消費類電子產(chǎn)品的軟件開發(fā),如呼機、智能卡、手機、PDA和機頂盒。(3)面向企業(yè)級應用開發(fā)的J2EE(Java2PlatformEnterpriseEdition,企業(yè)版):包含J2SE中的所有類,還包含用于開發(fā)企業(yè)級應用的類,如EJB、Servlet、JSP、XML和事務控制,也是現(xiàn)在Java應用的主要方向,用于開發(fā)企業(yè)級應用軟件。1.1認識JavaJava語言版本自從JDK1.3開始,Sun維持了一個習慣:大約每隔兩年發(fā)布一個JDK的主版本,以動物命名,期間發(fā)布的各個修正版本則以昆蟲作為工程名稱。2009年4月20日,Oracle公司宣布正式以74億美元的價格收購Sun公司,Java商標從此正式歸Oracle所有。2011年7月28日,Oracle公司發(fā)布JavaSE7(JDK1.7)。2014年3月18日,Oracle公司發(fā)布JavaSE8(JDK1.8),市場主流版本。2019年9月,Oracle公司發(fā)布JavaSE13(JDK13)。最新的版本是2021年3月16日,Oracle公司發(fā)表發(fā)布JavaSE16(JDK16),僅支持6個月,屬于短期版本。2022年3月推出JDK19。1.1認識Java1.1.2Java語言的特點Java的語法從C語言繼承而來,Java許多面向對象的特性都受到C++的影響。事實上,Java語言完全面向對象,摒棄了C和C++的不足。1.簡單易用2.面向對象3.分布式4.解釋型5.健壯6.可移植性7.擁有較高的性能8.具有多線程處理能力1.1認識Java1.1.3Java語言的應用1.桌面GUI應用程序2.移動應用程序3.嵌入式系統(tǒng)4.Web應用程序5.企業(yè)應用程序6.科學應用1.2JDK的使用Sun公司提供一套Java開發(fā)工具,簡稱JDK(JavaDevelopmentKit)。JDK是程序員使用Java語言編寫Java程序所需的開發(fā)工具包,是提供給程序員使用的。JDK包含了運行環(huán)境JRE(JavaRuntimeEnvironment),同時還包含了編譯Java源碼的編譯器javac,還包含了很多Java程序調試、分析和打包的工具,以及Java程序編寫所需的文檔和demo例子程序。由于JDK8比較穩(wěn)定,是目前市場上主流的JDK版本,本書將針對JDK8版本進行講解和運用。JDK和JRE如果僅需要運行Java程序,只需僅僅安裝JRE就可以。如果需要編寫Java程序,需要安裝JDK。JRE工具中只包含Java運行工具,不包含Java編譯工具。1.2JDK的使用1.2.1JDK的安裝從Oracle官方網(wǎng)站下載相應的IDK安裝文件。1.下載安裝JDK的安裝包從Oracle官網(wǎng)/java/technologies/javase-downloads.html下載安裝文件“jdk-8u201-windows-x64.exe",下載好JDK的安裝包之后,雙擊運行該文件1.2JDK的使用1.2.1JDK的安裝2.JDK環(huán)境變量的配置JDK的安裝包安裝完畢后,需進行環(huán)境變量的配置。1.2JDK的使用1.2.1JDK的安裝2.JDK環(huán)境變量的配置JDK的安裝包安裝完畢后,需進行環(huán)境變量的配置。從Windows系統(tǒng)中啟動命令提示符窗口cmd,執(zhí)行Java–version命令,驗證JDK是否安裝成功,看到圖中JDK版本信息則說明JDK安裝成功。1.2JDK的使用1.2.2Java程序運行機制1.Java程序運行過程Java程序開發(fā)過程涉及Java源文件(.java文件)、字節(jié)碼文件(.class文件)、機器碼指令。Java源文件被編譯成能被Java虛擬機執(zhí)行的字節(jié)碼文件。Java程序運行機制示意圖如圖所示。1.2JDK的使用1.2.2Java程序運行機制2.Java虛擬機(JavaVirtalMachine)Java虛擬機JVM是一個可以執(zhí)行Java字節(jié)碼的虛擬機進程,或者可以說是一個虛擬的計算機,具有指令集并使用不同的存儲區(qū)域,負責執(zhí)行指令,管理數(shù)據(jù)、內存、寄存器。Java虛擬機機制屏蔽了底層運行平臺的差別,實現(xiàn)了“一次編譯,到處運行”。1.2JDK的使用1.2.3Java程序的開發(fā)過程1.編寫Java源程序文件用記事本編寫一個“HelloWorld”小程序來驗證,保存為HelloWorld.java。
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("HelloHelloWorld");
}
}2.編譯Java源程序文件打開命令提示符窗口,在命令提示符窗口中輸入:cd程序所在文件夾例如cdc:\HellojavacHelloWorld.java3.運行Java程序命令提示符窗口中再輸入javaHelloworld運行編譯好的class字節(jié)碼文件。1.3Java語言的集成開發(fā)環(huán)境IDE集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment)能夠幫助開發(fā)人員輕松編寫和調試程序。一個好的IDE具有許多強大的功能,可以幫助我們編寫代碼,包括調試,編輯,切換視圖,代碼管理等。Eclipse是目前最流行的Java語言開發(fā)工具。Eclipse具有強大的代碼編排功能,可以幫助程序開發(fā)人員完成語法修正、代碼修正、補全文字、信息提示等編碼工作,大大提高了程序開發(fā)的效率。Eclipse目前亦有人通過插件使其作為其他計算機語言比如C++、PHP、Python等語言開發(fā)工具。1.3Java語言的集成開發(fā)環(huán)境在這里同樣以Helloworld.java程序為例,來說明如何使用Eclipse來進行Java程序的開發(fā)。(1)新建Java項目“File”→“New”→“JavaProject”,創(chuàng)建一個Java項目(2)新建Java類鼠標右鍵單擊項目下的src文件夾,選擇“New”→“Class”(3)運行Java程序單擊PackageExplorer視圖中HelloWorld.java文件,在彈出的菜單中選擇“RunAs”→“JavaApplication”運行程序。也可以選中要運行的文件,直接單擊工具欄中綠色的三角按鈕
運行程序1.3Java語言的集成開發(fā)環(huán)境EclipseNetBeansNetBeans是Sun公司(2009年被甲骨文收購)在2000年創(chuàng)立的開放源代碼供開發(fā)人員和客戶社區(qū)的家園,旨在構建世界級的JavaIDE。NetBean開發(fā)環(huán)境提供了豐富的產(chǎn)品文檔和培訓資源以及大量的第三方插件。IntelliJIDEAIntelliJIDEA是一款綜合的Java編程環(huán)境,被許多開發(fā)人員和行業(yè)專家譽為市場上最好的IDE。它提供了一系列最實用的的工具組合:智能編碼輔助和自動控制,支持J2EE,Ant,JUnit,SVN和Git集成,非平行的編碼檢查和創(chuàng)新的GUI設計器。本章小結1.計算機語言2.JDK的使用3.Java語言的集成開發(fā)環(huán)境4.使用Eclipse開發(fā)Java項目第2章Java編程基礎
本章內容2.1標識符與數(shù)據(jù)類型2.2常量與變量2.3運算符和表達式2.4邏輯控制語句2.5Java數(shù)組和應用2.6Java方法2.1標識符與數(shù)據(jù)類型2.1.1關鍵字關鍵字是Java語言里事先定義好并賦予特殊含義的英文單詞,在程序設計中不能再將其定義成別的用途。2.1.2標識符標識符是程序員定義的有效字符序列,用來標志自己定義的變量名、符號常量名、對象名、數(shù)組名和類名等。標識符的命名應遵循以下規(guī)則。(1)只能由字母、數(shù)字、美元$和下劃線組成,第一個字符不能是數(shù)字字符。可以使用漢字,但一般不建議使用。(2)不能是Java中的關鍵字。(3)中間不能有空格。(4)不要太長,一般以不超過31個字符為宜。(5)標識符的命名最好遵循Java推薦的命名規(guī)范,如常量命名全部采用大寫字母,類名每個單詞首字母大寫,屬性與方法名從第二個單詞開始首字母大寫等。(6)Java語言使用Unicode標準字符集下面是不合法的標識符:D.S.Name,#323,57S9,c<d,-W在Java中,字母的大小寫是有區(qū)別的。例如,Add、add和ADD分別表示不同的標識符。2.1.3數(shù)據(jù)類型數(shù)據(jù)類型決定了該數(shù)據(jù)所占用的存儲空間、所表示的數(shù)據(jù)范圍和精度,以及所能進行的運算。Java的數(shù)據(jù)類型大致可分為兩類,一類是基本數(shù)據(jù)類型,另一類是引用數(shù)據(jù)類型。基本數(shù)據(jù)類型包括整型、字符型、浮點型和布爾型等;引用數(shù)據(jù)類型包括類、接口、數(shù)組、枚舉等,如圖2-1所示。2.2常量與變量2.2.1常量常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。例如,數(shù)字1、字符'a'、浮點數(shù)3.2等都是常量。在Java中,常量包括整型常量、浮點型常量、布爾常量、字符常量等。1.整型常量整型常量是整數(shù)類型的數(shù)據(jù),有二進制、八進制、十進制和十六進制4種表示形式。二進制0b01101100、0B10110101八進制0342十六進制0x25AF在程序中為了標明不同的進制,數(shù)據(jù)都有特定的標識,八進制必須以0開頭,如0711、0123;十六進制必須以0x或0X開頭,如0xaf3、0Xff;整數(shù)以十進制表示時,第一位不能是0。2.2.1常量2.浮點數(shù)常量浮點數(shù)常量就是在數(shù)學中用到的小數(shù),浮點數(shù)分為單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)兩種類型。其中,單精度浮點數(shù)后面以F或f結尾,而雙精度浮點數(shù)則以D或d結尾。當然,在使用浮點數(shù)時也可以在結尾處不加任何的后綴,此時JVM會默認浮點數(shù)為double類型的浮點數(shù)。浮點數(shù)常量還可以通過科學計數(shù)的形式表示,如456,可以表示成4.56E2。2.34f2.342.2.1常量3.字符常量字符常量用于表示一個字符,一個字符常量要用一對英文半角格式的單引號(')括起來。字符常量可以是英文字母、數(shù)字、標點符號、以及由轉義序列表示的特殊字符。Java有兩種字符常量,即一般字符常量如'A'、'$'、''(空格)和轉義字符常量。'\101'表示大寫A字符,'\u4F60'表示漢字'你'轉義字符名
稱功
能\a響鈴用于輸出響鈴\b退格(Backspace鍵)用于退回一個字符\f換頁用于輸出\n換行符用于輸出\r回車符用于輸出\t水平制表符(Tab鍵)用于輸出\v縱向制表符用于制表\\反斜杠字符用于表示一個反斜杠字符\'單引號用于表示一個單引號字符\"雙引號用于表示一個雙引號字符\dddddd是ASCII碼的八進制值,最多三位用于表示該ASCII碼代表的字符\uhhhhUnicode轉義字符,4個十六進制值用于表示一個Unicode編碼的字符表2-3Java常用的轉義字符2.2.1常量4.字符串常量字符串常量用于表示一串連續(xù)的字符,一個字符串常量要用一對英文半角格式的雙引號(“”)括起來。例如:"HelloWorld","My\nJava","Howoldareyou?1234"5.布爾常量布爾常量即布爾型的值,常用于邏輯判斷。布爾常量有true和false兩個值。6.null常量null常量只有一個值null,表示對象的引用為空。7.常量的定義Java中必須用final關鍵字聲明一個常量。final關鍵字表示這個值一旦被賦值,不能再更改。final數(shù)據(jù)類型常量名=缺省值;finalintSTUDENT_NUM=10;習慣上,常量的名字全部大寫,詞與詞之間用下劃線分隔。2.2.2變量變量是指在程序運行過程中其值可以改變的量。變量是有名字的,在內存中占據(jù)一定的存儲單元。在Java語言中使用變量之前必須先定義它的數(shù)據(jù)類型,根據(jù)其數(shù)據(jù)類型的不同,可分為不同類別的變量,如字符型變量、整型變量、浮點型變量等。變量只有在其作用域中才能起到作用,而離開此作用域時,局部變量將會被清空。當程序進入一個方法時,其中的局部變量將會被創(chuàng)建,在一個作用域中,即一個方法(函數(shù))中,變量名是唯一的,不允許重復。1.定義變量inta,b,c; //定義三個整型變量a,b,cfloatf; //定義一個單精度實型變量fcharc1,c2,c3; //定義三個字符型變量c1,c1,c3intwidth=30; //定義變量及賦值intheight; //定義變量height=40; //給變量賦值變量經(jīng)定義以后,便可以對其賦值和使用,若在使用前沒有賦值,則在編譯時會指出語法錯誤。2.2.2變量2.基本數(shù)據(jù)類型的變量(1)整型byteb=127;shorts=123;inti=5000;(2)浮點型Java中的浮點型包括float和double兩種,在內存中float占用4字節(jié)即32位,用F、f表示。而double占用8字節(jié)即64位,用帶D或d或不加后綴的數(shù)值表示。floatf=18.5f; //定義變量及賦值doublemoney=57.8;2.2.2變量2.基本數(shù)據(jù)類型的變量(3)布爾值型現(xiàn)實生活中的“真”和“假”邏輯判斷是通過布爾值(boolean)來表示的,其值為true和false。boolean值并沒有指定其在內存空間中的大小,而僅是通過true和false來表示。booleanflag=true;(4)字符型字符型(char)存放的對象只能為一個字符,而每個字符占用內存空間的大小為16比特位(2個字節(jié))。聲明字符型需要用單引號把字符括起來,例如:charc='定'; //定義變量c及賦值charb='a'; //定義變量b及賦值chard='\u4F60';
//定義變量d及賦值漢字'你'
2.3運算符和表達式表達式由變量、運算符和數(shù)字等組合而成,例如:area=width*height;按運算符在表達式中與運算對象的關系(連接運算對象的個數(shù))可分為:單目運算(一元運算符,只需一個操作數(shù))。雙目運算(二元運算符,需兩個操作數(shù))。三目運算(三元運算符,需三個操作數(shù))。按運算符的運算性質又可分為算術運算符、關系運算符、邏輯運算符等。
2.3.1算術運算符和算術表達式1.基本算術運算符+(加法運算符,或正值運算符,如1+2,+3)-(減法運算符,或負值運算符,如1-2,-3)*(乘法運算符,如1*2)/
(除法運算符,如1/2)%(模運算符或稱求余運算符,如7%3=1)
2.自增和自減(增1和減1)運算符自增和自減運算符都是單目運算符,它們表示為++和--,運算結果是將操作數(shù)增1或減1。這兩個運算符都有前置和后置兩種形式。前置形式是指運算符在操作數(shù)的前面,后置形式是指運算符在操作數(shù)的后面。例如:a++; //等價于a=a+1++a; //等價于a=a+1a--; //等價于a=a-1--a; //等價于a=a-12.3.1算術運算符和算術表達式2.自增和自減(增1和減1)運算符inta=3;intb=++a; //相當于a=a+1;b=a;System.out.println(a+""+b); //結果為:44intc=a++; //相當于c=a;a=a+1;System.out.println(a+""+c); //結果為:542.3.1算術運算符和算術表達式inta=3;intb=++a; //相當于a=a+1;b=a;System.out.println(a+""+b); //結果為:44intc=a++; //相當于c=a;a=a+1;System.out.println(a+""+c); //結果為:542.3.2賦值運算符和賦值表達式1.賦值運算符賦值運算符“=”的一般格式為:
變量=表達式;它表示將其右側的表達式求出結果,賦給其左側的變量。例如:inti;i=3*(4+5); //i的值變?yōu)?7賦值運算符的結合性是從右至左的,因此程序中可以出現(xiàn)連續(xù)賦值的情況。例如,下面的賦值是合法的:
inti,j,k;
i=j=k=10; //i,j,k都賦值為102.復合賦值運算符表2-4是一些常用的復合賦值運算符。2.3.2賦值運算符和賦值表達式2.復合賦值運算符表2-4中的非直接賦值運算符在執(zhí)行速度上快于一般的賦值方式,即A-=B相當于A=A-B,而前者的執(zhí)行速度卻快于后者。
inta=12,x=3,y;a+=a; //表示a=a+a=12+12=24;y*=x+2;
//表示y=y*(x+2);而不是y=y*x+2;2.3.3關系運算符和關系表達式關系運算符用于兩個值進行比較,運算結果為true(真)或false(假)。Java中的關系運算符如下:<(小于)
<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)關系運算符都是雙目運算符,其結合性是從左到右,<、<=、>和>=這4個運算符的優(yōu)先級相同,==和!=運算符的優(yōu)先級相同,前4個運算的優(yōu)先級高于后兩個。關系運算符的優(yōu)先級低于算術運算符。例如:a+b>c 等價于 (a+b)>ca!=b>c 等價于 a!=(b>c)2.3.4邏輯運算符和邏輯表達式Java中常用的三種邏輯運算符是:&&(邏輯與,二元運算符)a&&b||(邏輯或,二元運算符)a||b!(邏輯非,一元運算符)!a注意短路運算a&&ba||b2.3.5位運算符和位運算表達式位(bit)是計算機中表示信息的最小單位,一般用0和1表示。一個字符在計算機中占一個字節(jié),一個字節(jié)由8個二進制組成。位運算符對操作數(shù)按其二進制形式逐位進行運算,參加位運算的操作數(shù)必須為整數(shù)。相應的運算規(guī)則為:按位與:0&0=00&1=01&0=01&1=1,即只要按位有一個為0,按位與&的結果就為0。按位或:0|0=00|1=11|0=11|1=1,即只要按位有一個為1,按位或|結果就為1。按位異或:0^0=00^1=11^0=11^1=0,即按位相同為0,不同為1。2.3.5位運算符和位運算表達式1.按位與(&)變量c的值為2。2.3.5位運算符和位運算表達式2.按位或(|)變量c的值為19。2.3.5位運算符和位運算表達式3.按位異或(^)變量c的值為17。2.3.5位運算符和位運算表達式4.按位求反(~)5.左移(<<)2.3.5位運算符和位運算表達式6.右移(>>)a=12a>>3注意:“>>>”運算符的含義同“>>”類似,但其是無符號移位,左側補0。2.3.6條件運算符和條件表達式條件運算符“?:”是Java中唯一一個三目運算符,該運算符需要三個操作數(shù)。表達式1?表達式2:表達式3其中,當表達式1為true時,結果為表達式2;當表達式1為false時,結果為表達式3。例如inta=6,b=7,m;m=a<b?a:b//m=62.3.7運算符優(yōu)先級運算符參與運算的先后順序,通常把這種順序稱作運算符的優(yōu)先級。2.3.8類型轉換1.自動類型轉換(隱式類型轉換)當把一個低級數(shù)據(jù)類型轉換成高級數(shù)據(jù)類型時,即占用內存空間字節(jié)小的轉換成占用內存空間字節(jié)大
的數(shù)據(jù),Java執(zhí)行的為自動類型轉換,在程序中不需要作任何說明,如把byte類型轉換成int類型就屬于這種情況。byteb=3;intx=b;
2.強制類型轉換(顯式類型轉換)當把高級數(shù)據(jù)類型轉換成低級的數(shù)據(jù)類型時,稱為強制類型轉換,但是此時會出現(xiàn)數(shù)據(jù)缺失的情況。強制類型轉換必須作出明確的說明,即讓虛擬機明白這是強制轉換,否則會出現(xiàn)錯誤。(轉換類型)變量名inta=10;byteb=(byte)a;如果在轉換時數(shù)據(jù)超出了轉換類型的取值范圍,那么將會造成數(shù)據(jù)“溢出”,導致轉換失敗,例如:inta=200;byteb=(byte)a;2.3.9打印語句把結果顯示到控制臺上。System.out.println("helloxmj"); //在控制臺上打印helloxmjSystem.out.print("hello");System.out.println("xmj");利用print()方法打印信息后不能換行再打印下面一段信息,而是直接在同一行中打印出來,但是println()方法可以自動換行。2.3.10Java語言注釋1.以“/*”開頭并以“*/”結尾的注釋形式可以跨越多行代碼,中間為注釋內容,這種注釋方式也稱為多行注釋,例如:/*這是測試部分請讀者注意*/注釋的內容不會被編譯,所以也可以把上面的分行注釋改寫成單行,例如:/*這是測試部分請讀者注意*/2.單行注釋,以“//”開頭,后面緊跟注釋內容,此內容必須和“//”符號在同一行,例如://這是測試部分請讀者注意3.文檔注釋,其也稱為多行注釋,以“/**”開頭,以“*/”結尾,也可以跨越多行代碼,中間為注釋內容,此注釋方式可以把注釋內容轉化為超文本文件,這里需要用到Java中的Javadoc命令,例如:/**這是測試部分*請讀者注意*/注意:如果利用文檔注釋“/**…*/”注釋某個變量,當在IDE工具中把鼠標移動到此變量上面時,會出現(xiàn)注釋的內容,這樣可以方便程序員更快地知道此變量的含義。2.4邏輯控制語句在Java中包括的邏輯控制語句有if…elseswitchforwhiledo…whilebreakreturn2.4.1選擇結構語句選擇結構語句有if…elseswitch1.if…else語句if(布爾表達式)
語句1或者if(布爾表達式)
語句2else
語句3if…else是邏輯語句中最簡單的一個,而其中的else是作為可選項出現(xiàn)的if語句在某些情況下可以用條件運算符“?:”來簡化表達。例如,求兩個數(shù)a、b中較大的數(shù),采用if語句如下:if(a>b)c=a;elsec=b;也可用條件運算符實現(xiàn):c=a>b?a:b;2.4.1選擇結構語句2.if…else語句的嵌套一個if…else語句可實現(xiàn)二選一分支,if…else語句的嵌套則可以實現(xiàn)多選一的多路分支情況。
if(表達式1)語句1;elseif(表達式2)語句2;elseif(表達式3)語句3;…elseif(表達式n)語句n;else語句n+1;Java獲得鍵盤輸入Java獲得鍵盤輸入可以使用Scanner類的方法。通常需要經(jīng)過3個步驟。①在程序開頭導入類:importjava.util.Scanner;②輸入之前創(chuàng)建Scanner類對象:Scannerscanner=newScanner(System.in);System.in是標準輸入流對象,對應標準輸入設備即鍵盤。③輸入數(shù)據(jù)賦給相應的變量。輸入不同類型的數(shù)據(jù)要用不同的方法,這些方法都是以next開頭的,如nextInt()用來輸入int類型數(shù)據(jù),nextByte()用來輸入byte類型數(shù)據(jù),nextDouble()用來輸入double類型數(shù)據(jù),等等。讀者可以通過JavaAPI幫助文檔查看所要使用的方法。例如鍵盤輸入成績score如下:Scannerscanner=newScanner(System.in);score=scanner.nextInt();//鍵盤輸入成績2.4.1選擇結構語句switch語句被稱為多路分支語句,雖然使用if…else嵌套語句可以實現(xiàn)多路分支,但是嵌套過多,會導致程序不便于閱讀,而使用switch語句,邏輯結構顯示更加整潔。switch(變量值){case常量1:
語句1break;case常量2:
語句2break;//…default:
語句nbreak;}注意:通過上面的語句可以看到,每個case后面都有一個break結尾,這是為了使執(zhí)行流程跳到switch末尾,其中break是可選的,如果省略break語句,則會繼續(xù)執(zhí)行下面的case語句。2.4.2循環(huán)結構語句1.while和do…while語句while語句也為循環(huán)語句,其實現(xiàn)方法為:當循環(huán)開始時,條件判斷為true,此循環(huán)將一直進行下去,條件判斷為false時循環(huán)才會結束,并且每執(zhí)行一次循環(huán)體都會重新計算條件判斷。do…while循環(huán)和while循環(huán)的區(qū)別就在于其一定會執(zhí)行一次,而while循環(huán)并不一定會循環(huán)(當條件判斷表達式開始就為false時)。2.4.2循環(huán)結構語句1.while和do…while語句【例2.3】求sum=1!+2!+3!+…+n!,當sum≥1000時n的值?!纠?.4】輸入一個非負的整數(shù),將其反向后輸出。例如,輸入24789,變成98742輸出。【例2.5】輸入兩個正整數(shù),求它們的最大公約數(shù)。2.4.2循環(huán)結構語句2.for語句for循環(huán)語句是程序中用到最多的邏輯控制語句,其實現(xiàn)方法為初始化變量值,然后對此變量值進行條件判斷,而且在每次循環(huán)后都進行指定的變量修改?!纠?.7】打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個“水仙花數(shù)”,因為153=13+53+33。2.4.3循環(huán)的嵌套Java的三種循環(huán)語句可以相互嵌套,構成循環(huán)嵌套。(1)循環(huán)嵌套時,外層循環(huán)和內層循環(huán)間是包含關系,即內層循環(huán)必須被完全包含在外層循環(huán)中,不得交叉。(2)當程序中出現(xiàn)循環(huán)嵌套時,程序每執(zhí)行一次外層循環(huán),則其內層循環(huán)必須循環(huán)所有的次數(shù)(即內層循環(huán)結束)后,才能進入到外層循環(huán)的下一次循環(huán)?!纠?.8】輸出一個金字塔圖形,如圖2-8所示。2.4.3循環(huán)的嵌套【例2.9】輸出九九乘法表,如圖2-9所示。2.4.4跳轉語句功能是改變程序的流程,使程序從其所在的位置轉向另一處執(zhí)行。Java提供了跳轉語句包括break語句、continue語句和return語句。1.break語句break語句的一般格式為:break;該語句只能用于兩種情況:(1)用在switch結構中,當某個case分支執(zhí)行完后,使用break語句跳出switch結構。(2)用在循環(huán)結構中,用break語句來結束循環(huán)。如果放在嵌套循環(huán)中,則break語句只能結束其所在的那層循環(huán)?!纠?.10】任意輸入若干個正整數(shù)(不多于50個),計算已輸入正整數(shù)之和,直到輸入了負數(shù)為止。2.4.4跳轉語句2.continue語句continue語句的一般格式為:continue;該語句只能用在循環(huán)結構中。當在循環(huán)結構中遇到continue語句時,則跳過continue語句后的其他語句,結束本次循環(huán),并轉去判斷循環(huán)控制條件,以決定是否進行下一次循環(huán)?!纠?.11】輸出0~100之間所有不能被3整除的數(shù)。break和continue可以控制循環(huán)語句的流程,其中break為退出循環(huán),不再執(zhí)行下面剩余的循環(huán)部分,而continue則是停止當前循環(huán),跳轉到循環(huán)起始位置開始下面的循環(huán)部分。2.4.4跳轉語句3.return語句return語句被稱為返回語句,其有兩種作用:一是指定方法的返回值,二是可以結束方法的執(zhí)行,直接從方法中跳出。publicclassExample2_12{publicstaticvoidmain(String[]args){
inti=0; //定義初始值while(i<3){ //判斷循環(huán)條件i++;
//變量自增if(i==2) //當i為2時return; //跳出方法(1)System.out.println("循環(huán)內部"+i);}System.out.println("循環(huán)外部"+i);}}把(1)其中的return修改成break和continue,然后運行相應代碼2.5Java數(shù)組和應用引入數(shù)組就不需要在程序中定義大量變量,大大減少了程序中變量的數(shù)量,使程序精煉,而且數(shù)組含義清楚,使用方便,明確地反映了數(shù)據(jù)間的聯(lián)系。2.5.1Java數(shù)組定義和創(chuàng)建1.定義數(shù)組定義數(shù)組格式如下:數(shù)組元素類型[]數(shù)組名;或數(shù)組元素類型
數(shù)組名[];//為了和C++兼容,不建議使用int[]array;//定義了一個int數(shù)組,名字為array,元素類型為intdoublescore[];//定義了一個double數(shù)組,名字為score,元素類型為double2.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組(1)new關鍵字使用new關鍵字,并指定數(shù)組元素的個數(shù)(數(shù)組的長度),以確定在堆空間分配內存空間的大小。使用格式如下:數(shù)組名=new數(shù)組元素類型[數(shù)組元素個數(shù)];例如:int[]array;array=newint[5];也可以定義數(shù)組和創(chuàng)建數(shù)組合并在一起,用一條語句實現(xiàn):int[]array=newint[5];//合二為一,元素初值為02.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組數(shù)組名=new數(shù)組元素類型[]{元素初值列表};int[]array=newint[]{1,2,3,4,5};2.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組(2)初始化的方式創(chuàng)建數(shù)組在定義數(shù)組的時候,可以不使用new關鍵字,直接給出初始化的元素初值列表,系統(tǒng)將先按照初值的個數(shù)在堆內存中創(chuàng)建數(shù)組對象,然后將初值依次存儲在數(shù)組元素中。數(shù)組元素類型[]數(shù)組名={元素初值列表};例如:int[]array={1,2,3,4,5};【例2.13】理解數(shù)組引用性質2.5.2使用數(shù)組1.數(shù)組元素的使用數(shù)組元素的使用方式:
數(shù)組名[下標]2.遍歷數(shù)組中的元素Java還提供foreach循環(huán)語句。該語句提供一種簡單、明了的方法來循環(huán)訪問數(shù)組的元素。使用foreach語句的一般形式如下:for(數(shù)據(jù)類型
循環(huán)變量:數(shù)組或集合名){//循環(huán)體}int[]mya={1,2,3,4,5,6};
for(inti:mya)
System.out.print(""+i);2.5.2使用數(shù)組3.一維數(shù)組的應用(1)遞推問題(2)排序問題
【例2.13】用數(shù)組來求Fibonacci數(shù)列問題。Fibonacci數(shù)列是1,1,2,3,5,8,13,21,34,…
【例2.14】編寫程序,用冒泡法對10個數(shù)排序(按由小到大的順序)。2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建二維數(shù)組的定義有很多方式。第一種方式:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[行的個數(shù)][列的個數(shù)];下面以第一種方式聲明一個數(shù)組,如下所示。int[][]xx=newint[3][4];2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建第二種方式:數(shù)據(jù)類型[][]數(shù)組名=newint[行的個數(shù)][];下面以第二種方式聲明一個數(shù)組,如下所示。int[][]xx=newint[3][];定義中只聲明了此二維數(shù)組由3個元素組成,其中每個元素是一維數(shù)組,需要繼續(xù)創(chuàng)建每個元素。例如:xx[0]=newint[1];xx[1]=newint[2];xx[2]=newint[3];2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建第三種方式:數(shù)據(jù)類型[][]數(shù)組名={{第0行初始值},{第1行初始值},...,{第n行初始值}};下面以第三種方式聲明一個數(shù)組,如下所示。int[][]xx={{1,2},{3,4,5,6},{7,8,9}};2.5.3多維數(shù)組2.二維數(shù)組中元素的訪問二維數(shù)組中元素的訪問也是通過索引的方式。二維數(shù)組元素的表示形式為:數(shù)組名[行下標][列下標]以下普通for循環(huán)的方式輸出數(shù)組arry的所有元素值。int[][]arry=newint[3][4];
for(i=0;i<3;i++){//先遍歷行
for(j=0;j<4;j++)//在每一行,逐一遍歷各個列
System.out.print(arry[i][j]+"");//從遍歷的行和列獲取二維數(shù)組的元素內容
System.out.println();}3.二維數(shù)組的應用輸出九行楊輝三角形2.5.4Arrays類在Java中,數(shù)組實際上是對象。Arrays類是所有數(shù)組類型的抽象基類型,位于java.util包中,使用時需要導入(importjava.util.Arrays),在Java中用作所有數(shù)組的基類,提供創(chuàng)建、操作、搜索和排序數(shù)組的方法。1.length屬性2.sort()方法3.fill()方法4.toString()和deepToString()方法5.copyOf()和copyOfRange()方法2.6Java方法方法就是一段可以重復調用的代碼。在Java中,定義一個方法的語法格式如下:修飾符返回值類型方法名(參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2,...){
執(zhí)行語句 ... return返回值;}【例2.17】演示方法的定義與調用。2.6Java方法2.6.2方法的重載所謂方法重載,就是在同一個作用域內方法名相同但參數(shù)個數(shù)或者參數(shù)類型不同的方法。例如,在同一個作用域內同時定義三個add()方法,這三個add()方法就是重載的方法?!纠?.18】演示重載方法的定義與調用,在該案例中,定義三個add()方法,分別用于實現(xiàn)兩個整數(shù)相加、三個整數(shù)相加以及兩個小數(shù)相加的功能。定義了三個同名的add()方法,但它們的參數(shù)個數(shù)或類型不同,從而形成了方法的重載。在main()方法中調用add()方法時,通過傳入不同的參數(shù)便可以確定調用哪個重載的方法,如add(1,2)調用的是add(intx,inty)方法。需要注意的是,方法的重載與返回值類型無關。本章小結1.常量與變量2.運算符和表達式3.邏輯控制語句4.Java數(shù)組第3章Java面向對象基礎
本章內容3.1面向對象程序設計的思想和概念3.2Java語言的類和對象3.3構造方法3.4this關鍵字3.5static關鍵字3.6包3.7綜合案例——模擬猜拳游戲3.8綜合案例——酒店客房管理3.1面向對象程序設計的思想和概念
面向對象程序設計(ObjectOrientedProgramming,OOP)是軟件系統(tǒng)設計與實現(xiàn)的方法,這種方法既吸取了結構化程序設計的絕大部分優(yōu)點,又考慮了現(xiàn)實世界與面向對象空間的映射關系,所追求的目標是將現(xiàn)實世界的問題求解盡可能的簡單化。在自然界和社會生活中,一個復雜的事物總是由很多部分組成的。面向對象程序設計方法提出了一些全新的概念,如類和對象、封裝、繼承和多態(tài)3.1面向對象程序設計的思想和概念3.1.1類和對象的概念1.類面向對象方法中的“類”,是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了抽象的描述,其內部包括屬性和行為兩個主要部分。2.對象面向對象方法中的對象,是描述系統(tǒng)中某一客觀事物的一個實體。對象由一組屬性和一組行為構成。屬性是用來描述對象靜態(tài)特征的數(shù)據(jù)項,而行為是用來描述對象動態(tài)特征的操作序列。類和對象的關系就像模具與產(chǎn)品之間的關系,一個屬于某類的對象稱為該類的一個實例,如張三就是人這個類的一個實例,或是這個類的具體表現(xiàn)。對象和類對象和類屬性(數(shù)據(jù)成員、成員變量)3.1面向對象程序設計的思想和概念3.1.2面向對象的三大特性1.封裝與數(shù)據(jù)隱藏在Java中,封裝是通過類來實現(xiàn)的。類是描述具有相同屬性和方法的對象的集合,定義了該集合中每個對象所共有的屬性和方法。封裝也是面向對象方法中的一個重要原則。2.繼承繼承(inheritance)是面向對象程序設計能夠提高軟件開發(fā)效率的重要原因之一,也是軟件規(guī)模化的一個重要手段。子類的對象擁有其父類的全部屬性和行為,稱為子類對父類的繼承。例如,人們認識了汽車的特征之后,再考慮小轎車時,因為知道小轎車也是汽車,于是認為小轎車具有汽車的全部一般特征,從而可以把精力用于發(fā)現(xiàn)和描述小轎車不同于一般汽車的獨有的那些特征。3.1面向對象程序設計的思想和概念3.1.2面向對象的三大特性3.多態(tài)性面向對象的通信機制是消息,面向對象技術是通過向未知對象發(fā)送消息來進行程序設計的。當一個對象發(fā)出消息時,對于相同的消息,不同的對象具有不同的反應能力。這樣,一個消息可以產(chǎn)生不同的響應效果,這種現(xiàn)象稱為多態(tài)性。在操作計算機時,“雙擊鼠標左鍵”這個操作可以很形象地說明多態(tài)性的概念。不同的對象會有不同的反應。“文件夾”對象“可執(zhí)行文件”對象音樂文件多態(tài)
Animal類Dog類Bird類Fish類動物會“動”act行為不同3.1面向對象程序設計的思想和概念3.1.3面向對象和面向過程的區(qū)別C語言是一個結構化語言,它的重點在于算法和數(shù)據(jù)結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進行運算處理得到輸出(或實現(xiàn)過程(事務)控制),面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調用就可以了。面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。五子棋游戲為例講解面向過程的設計五子棋面向過程的設計思路就是首先分析問題的步驟:①開始游戲,②黑子先走,③繪制畫面,④判斷輸贏,⑤輪到白子,⑥繪制畫面,⑦判斷輸贏,⑧返回步驟②,⑨輸出最后結果。把上面每個步驟用分別的函數(shù)來實現(xiàn),問題就解決了。面向對象的設計而面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為①黑白雙方,這兩方的行為是一模一樣的;②棋盤系統(tǒng),負責繪制畫面;③規(guī)則系統(tǒng),負責判定諸如犯規(guī)、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規(guī)則系統(tǒng))來對棋局進行判定。好處:功能擴展容易加入悔棋的功能僅僅改動(棋盤對象)
五子棋游戲改為圍棋游戲,區(qū)別就是規(guī)則面向過程的設計【例3.1】面向過程編程的方法實現(xiàn)輸入圓的半徑,求圓的周長和面積。①輸入半徑r;②計算周長=2*π*r;③計算面積=pi*r2;④輸出半徑、周長、面積。importjava.util.Scanner;publicclassExample3_1{publicstaticvoidjisuan(intr){System.out.println("theradiusis:"+r);System.out.println("theareais:"+r*r*3.14);System.out.println("thegirthis:"+2*r*3.14);}publicstaticvoidmain(String[]args){intr;System.out.println("inputtheradius:");Scannerscanner=newScanner(System.in);System.out.print("請輸入第半徑:");r=scanner.nextInt();//鍵盤輸入
jisuan(r);}}面向對象的設計設計圓類對象實例importjava.util.Scanner;classCircle{doubleradius;voidsetRadius(doubler){radius=r;}voidgetGirth(){System.out.println("theareais:"+2*radius*3.14);}voidgetArea(){System.out.println("theareais:"+radius*radius*3.14);}};publicclassExample3_2{publicstaticvoidmain(String[]args){Circlec;//對象實例
c.setRadius(3);c.getGirth();c.getArea();}}3.2Java語言的類和對象在Java程序中類和對象是最基本、最重要的單元。類表示某類群體的一些基本特征抽象,對象表示一個個具體的事物。學生可以看作是一個類,小明、李華、大軍都是學生類型的對象。類用于描述多個對象的共同特征,它是對象的模板。對象用于描述現(xiàn)實中的個體,它是類的實例。對象是根據(jù)類創(chuàng)建的,一個類可以對應多個對象。3.2.1類的定義class類名{
成員變量;//靜態(tài)變量(類變量)和實例變量
成員方法;}成員變量用于描述對象的特征,成員變量也被稱作對象的屬性;成員方法用于描述對象的行為,可簡稱為方法。類名首字母大寫,駝峰描述法DrawCicle3.2.1類的定義學生類定義的示例代碼如下所示。classStudent{Stringname; //定義String類型的變量nameintage=22; //定義int類型的變量ageStringsex; //定義String類型的變量sex//定義sayHello
()方法
voidsayHello(){System.out.println("大家好,我是"+name+"!");}}定義梯形類Lader類,里面計算面積方法--行為UML圖3.2.1類的定義在Java中,定義在類中的變量被稱為成員變量,定義在方法中的變量被稱為局部變量。classStudent{intage=20; //類中定義的變量被稱作成員變量voidsayHello(){intage=30; //方法內部定義的變量被稱作局部變量System.out.println("大家好,我"+age+"歲了,我在看書!");
}
voidsayHello2(){
System.out.println(“大家好,我”+age+“歲了,我在看書!”);//age=?}}3.2.2對象的創(chuàng)建與使用對象(Object)是實際世界中存在的個體或概念實體,它表示世界中某個具體的事物,如一個電腦、一本書等事物都屬于對象。classStudent{Stringname; //定義String類型的變量nameintage; //定義int類型的變量ageStringsex; //定義String類型的變量sex//定義sayHello
()方法
voidsayHello(){System.out.println("大家好,我是"+name+"!");}}3.2.2對象的創(chuàng)建與使用1.對象的創(chuàng)建在Java程序中可以使用new關鍵字創(chuàng)建對象,具體格式如下:類名對象名稱;對象名稱=new類名();classStudent{Stringname; //定義String類型的變量name//定義sayHello
()方法
voidsayHello(){System.out.println("大家好,我是"+name+"!");}}Studentstu;stu
=newStudent();3.2.2對象的創(chuàng)建與使用2.對象屬性和方法的訪問通過“.”運算符實現(xiàn),格式如下:對象名稱.屬性名對象名稱.方法名
classStudent{ Stringname;//聲明姓名屬性 voidsayHello(){
System.out.println("大家好,我是"+name); }}publicclassExample3_4{publicstaticvoidmain(String[]args){ Studentstu1=newStudent();//創(chuàng)建第一個Student對象
Studentstu2=newStudent();//創(chuàng)建第二個Student對象
="小明";
//為stu1對象的name屬性賦值
stu1.sayHello();
//調用對象的方法
="小華";
stu2.sayHello(); }}3.2.2對象的創(chuàng)建與使用classStudent{ Stringname;//聲明姓名屬性 voidsayHello(){
System.out.println("大家好,我是"+name); }}publicclassExample3_4{publicstaticvoidmain(String[]args){ Studentstu1=newStudent();//創(chuàng)建第一個Student對象
Studentstu2=newStudent();//創(chuàng)建第二個Student對象
="小明";//為stu1對象的name屬性賦值
stu1.sayHello();//調用對象的方法
="小華";
stu2.sayHello(); }}對象的引用【例3.5】對象的引用傳遞。classStudent{Stringname; //聲明姓名屬性
intage; //聲明年齡屬性
voidsayHello(){System.out.println("大家好,我是"+name+",年齡"+age);}}publicclassExample3_5{publicstaticvoidmain(String[]args){Studentstu1=newStudent();//聲明stu1對象并實例化
Studentstu2=null;//聲明stu2對象,但不對其進行實例化
stu2=stu1;
//stu1給stu2分配空間使用權。
="小明";//為stu1對象的name屬性賦值
stu1.age=20;stu1.sayHello();//調用對象的方法
stu2.age=50;stu2.sayHello();}}3.3構造方法
在Java中提供了一個特殊的成員方法——構造方法(也稱為構造函數(shù)),通過構造方法可以為對象的屬性初始化。創(chuàng)建一個類時都會提供一個默認的構造方法,即無參的構造方法,這里構造方法的名字和類名相同,而且沒有返回值。構造方法名稱前不能有任何返回值類型(包括void類型)的聲明。不能在構造方法中使用return返回一個值,但是可以單獨寫return語句作為方法的結束。1.構造方法的定義構造方法是類的一個特殊成員方法,在類實例化對象時自動調用?!纠?.6】創(chuàng)建一個類名為Student的類,其擁有一個不帶參數(shù)的構造方法Student()?!纠?.7】創(chuàng)建一個類名為Student的類,其擁有一個帶參數(shù)的構造方法Student()。3.3構造方法
2.構造方法重載與普通方法一樣,構造方法也可以重載。當一個方法名相同而參數(shù)不同時,則說明方法重載。重載是為了可以使用同一個方法名來實現(xiàn)多種功能,默認構造方法和帶參構造方法也是重載?!纠?.8】構造方法的重載和普通成員方法的重載。3.4this關鍵字
注意Java中有一個特殊的對象實例為this,其只能在方法內部使用,表示調用這個方法的對象實例。Java中的this關鍵字語法比較靈活,其主要作用有以下2種。(1)使用this關鍵字訪問成員變量。(2)使用this關鍵字調用本類的構造方法。1.使用this關鍵字訪問成員變量【例3.9】this關鍵字訪問成員變量。3.4this關鍵字
2.使用this關鍵字調用構造方法構造方法是在實例化對象時被Java虛擬機自動調用,在程序中不能像調用其他成員方法一樣調用構造方法,但可以在一個構造方法中使用“this(參數(shù)1,參數(shù)2…)”的形式調用其他的構造方法。【例3.10】this關鍵字調用構造方法。應注意以下幾點:①只能在構造方法中使用this調用其他的構造方法,不能在成員方法中通過this調用其他構造方法。②在構造方法中,使用this調用構造方法的語句必須位于第一行,且只能出現(xiàn)一次。3.5static關鍵字
在Java中,static關鍵字是一個修飾符,用于修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來優(yōu)化程序性能;被static關鍵字修飾的方法或者成員變量不需要依賴于對象來進行訪問,只要類被加載就可以通過類名去進行訪問。3.5.1靜態(tài)成員變量在類中,用static聲明的成員變量為靜態(tài)成員變量,也稱為類變量。靜態(tài)成員變量是屬于類的,也就是從類被創(chuàng)建好后便一直存在,其生命周期與其所在的類相同,在整個應用程序執(zhí)行期間都有效。若一個類有多個對象實例,那么這些實例會共享該靜態(tài)成員變量。同時在類不創(chuàng)建實例對象的情況下,同樣可以用類名訪問該靜態(tài)成員變量的值。【例3.11】訪問靜態(tài)成員變量。3.5static關鍵字
3.5.2靜態(tài)方法static修飾的方法一般稱作靜態(tài)方法,也稱為類方法。由于靜態(tài)方法不依賴于任何對象就可以進行訪問,因此對于靜態(tài)方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕期春夢的健康宣教
- 《設尋租理論王》課件
- 社會媒體營銷的總結與展望計劃
- 線上藝術教學的創(chuàng)新嘗試計劃
- 科學管理班級時間的有效方式計劃
- 如何實現(xiàn)部門間的年度協(xié)同目標計劃
- 森林防火安全培訓
- 制定財務風險控制的措施計劃
- 如何分析企業(yè)財務數(shù)據(jù)計劃
- 頭孢類抗菌藥物相關行業(yè)投資規(guī)劃報告
- 中層管理干部團隊-執(zhí)行力與領導力提升培訓課件
- 明史十講學習通超星期末考試答案章節(jié)答案2024年
- 文化地理學習通超星期末考試答案章節(jié)答案2024年
- 2024年中國產(chǎn)蛋鴨濃縮料市場調查研究報告
- 2024-2030年全球及中國數(shù)據(jù)科學平臺行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2023-2024學年部編版道德與法治三年級上冊期末檢測題及答案(共3套)
- 職業(yè)健康及環(huán)境安全培訓(共70張課件)
- 多源異構日志關聯(lián)與融合
- 節(jié)電設備產(chǎn)品營銷計劃書
- 《幼兒教師的教育智慧:來自實踐現(xiàn)場的傾聽與對話》札記
- 注冊安全工程師建筑施工專業(yè)實務
評論
0/150
提交評論