Java語言基礎(chǔ)教程ppt410.ppt_第1頁
Java語言基礎(chǔ)教程ppt410.ppt_第2頁
Java語言基礎(chǔ)教程ppt410.ppt_第3頁
Java語言基礎(chǔ)教程ppt410.ppt_第4頁
Java語言基礎(chǔ)教程ppt410.ppt_第5頁
已閱讀5頁,還剩405頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java語言基礎(chǔ)教程,第一章 概述第二章 Java語言語法基礎(chǔ)第三章 對象與類第四章 繼承和多態(tài)第五章 抽象類接口與內(nèi)部類第六章 數(shù)組、字符串及容器第七章 異常處理第八章 JavaIO系統(tǒng)第九章 多線程第十章 圖形用戶界面,第1章 概述,面向?qū)ο蟪绦蛟O(shè)計,從計算機誕生到現(xiàn)在,程序設(shè)計語言從最初的機器語言、匯編語言到后來面向過程的結(jié)構(gòu)化高級語言,最后發(fā)展到面向?qū)ο蟮某绦蛟O(shè)計語言。在這個過程中,程序員逐步擺脫了機器的層面,可以在更抽象的層面上表達程序設(shè)計意圖。 面向過程程序設(shè)計的中心思想是用計算機能夠理解的邏輯來描述和表達待解決的問題及其具體的解決過程。數(shù)據(jù)結(jié)構(gòu)、算法是面向過程問題求解的核心。面向

2、過程程序設(shè)計可以精確、完備地描述具體的求解過程,但卻不足以把一個包含了多個相互關(guān)聯(lián)過程的復(fù)雜系統(tǒng)表述清楚,而面向?qū)ο蟪绦蛟O(shè)計則可以勝任這項工作。,什么是面向?qū)ο蟪绦蛟O(shè)計,面向?qū)ο蟪绦蛟O(shè)計(ObjectOriented Programming,OOP)代表了一種全新的程序設(shè)計思路和觀察、處理問題的方法。面向?qū)ο缶褪菍⑹澜缈醋魇怯梢幌盗斜舜岁P(guān)聯(lián)、相互之間能夠通信的對象所組成的,它將現(xiàn)實世界中實體反映到程序中,這樣就可以用編程語言來表達這個世界了。 所謂對象是一種看問題的觀點,是對現(xiàn)實世界中各種實體的一種抽象,它是現(xiàn)實世界中某個具體的物理實體在計算機邏輯中的映射和體現(xiàn)。對象具有自己的狀態(tài)和行為,通過

3、對消息的反映來實現(xiàn)一定的功能。,OOP的基本特征,1.封裝 封裝就是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)及對數(shù)據(jù)的操作封裝在一起。在OOP中,抽象數(shù)據(jù)類型是用類(class)這種結(jié)構(gòu)來代表的,類是基本的封裝單元。 2.繼承 繼承是OOP中最突出的特征之一,它是一種基于已有類創(chuàng)建新類的機制。通過繼承機制,一個新類可以通過對已有類進行修改和擴充來實現(xiàn),新類擁有已有類的所有成員變量和成員方法,而且還可以修改現(xiàn)有的成員和添加新的成員。 3.多態(tài) 多態(tài)也稱作動態(tài)綁定、后期綁定或運行時綁定。繼承允許將對象視為它自己本身的類型或其基類型來處理,因為它允許將多種類型(從同一基類導(dǎo)出的)視為同一類型。而多態(tài)則允許一種類型表

4、現(xiàn)出與其他相似類型之間的區(qū)別。,OOP的優(yōu)勢,1.簡單性 由于軟件對象可以對現(xiàn)實世界中的真實對象建模,所以減少了程序的復(fù)雜度,使得程序結(jié)構(gòu)變得既清晰又簡單。 2.模塊性 每個對象可構(gòu)成一個單獨的模塊,該模塊的內(nèi)部工作方式與系統(tǒng)的其他部分相分離。模塊性是OOP具有可重用性和可擴展性的基礎(chǔ)。 3.可重用 可重用性是指我們在一個項目中開發(fā)的模塊,不僅能夠在這個項目中使用,而且可以重復(fù)的在其他項目中使用。 4.可擴展 可擴展性是對現(xiàn)在應(yīng)用軟件提出的又一個重要要求,即要求應(yīng)用軟件能夠很方便、容易地進行擴充和修改。,了解Java,Java是Sun公司推出的新一代面向?qū)ο蟮木幊陶Z言。自從1996年初Java

5、 1.0版的正式發(fā)表,就迅速引起了整個計算機界的高度關(guān)注。 由于Java提供了強大的圖形、圖像、音頻、視頻、多線程和網(wǎng)絡(luò)交互能力,它已經(jīng)成為當(dāng)今推廣最快的最為流行的網(wǎng)絡(luò)編程語言。Java的出現(xiàn)引起了軟件開發(fā)的重大變革,成為推動IT業(yè)蓬勃發(fā)展的最新動力。它的出現(xiàn)對整個計算機軟件業(yè)的發(fā)展產(chǎn)生了重大而深遠的影響。,Java的特點,簡單 面向?qū)ο?平臺無關(guān)性 動態(tài) 分布式 多線程 健壯性 垃圾回收機制,Java虛擬機,Java虛擬機(Java Virtual Machine,JVM)是用軟件模擬實現(xiàn)的虛擬計算機。它定義了指令集、寄存器集、類文件結(jié)構(gòu)棧、垃圾收集堆、內(nèi)存區(qū)域等組件,提供了跨平臺能力的基礎(chǔ)

6、框架。在JVM上,有一個Java解釋器用來解釋Java編譯器編譯后的程序。程序員在編寫完程序后,通過Java編譯器將Java源程序編譯為字節(jié)代碼,字節(jié)代碼是一種與平臺無關(guān)的文件格式,它能夠被Java解釋器來執(zhí)行。任何一臺機器只要安裝了Java解釋器,就可以運行這個程序,而不管字節(jié)代碼是在何種平臺上生成的。,Java的核心技術(shù),1.Java Servlet Servlet是服務(wù)器端的Java小程序,Servlet全部由Java編寫并且生成Html文檔,它擴展了Web服務(wù)器的功能。當(dāng)客戶端發(fā)送請求時,服務(wù)器端便開始執(zhí)行Servlet程序。 2.JDBC JDBC(Java DataBase Con

7、nectivity)為訪問不同的數(shù)據(jù)庫提供了統(tǒng)一的途徑。像ODBC一樣,JDBC對開發(fā)者屏蔽了一些細節(jié)問題,使得JDBC對數(shù)據(jù)庫的訪問也具有平臺無關(guān)性。 3.JavaBean和EJB JavaBean實際上是用Java寫的控件,類似于微軟的ActiveX。EJB是企業(yè)級的JavaBean。它們提供了一個框架來開發(fā)和實施分布式商務(wù)邏輯,從而顯著地簡化了具有可伸縮性和高度復(fù)雜性的企業(yè)級應(yīng)用的開發(fā)。,4.JSP JSP(Java Server Pages)是Sun公司1999年推出的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),是一種運行于Web服務(wù)器端的腳本語言。JSP和Microsoft的ASP(Active Serv

8、er Pages)技術(shù)相似,不同的是編程語言:ASP采用VBScript,JSP采用Java。 5.XML XML(eXtensible Markup Language)是一種可以定義標(biāo)記的語言,主要用于在不同的商務(wù)過程中共享數(shù)據(jù)。雖然XML的發(fā)展和Java是相互獨立的,但它們的共同目標(biāo)都是平臺無關(guān)性。將Java與XML組和可以得到一個完美的具有平臺獨立性的解決方案。,Java開發(fā)環(huán)境的搭建,Java開發(fā)的核心就是JDK。JDK的全稱是Java開發(fā)工具包(Java Deveplepment Kit),它是由Java的開發(fā)工具、運行環(huán)境以及Java基礎(chǔ)類庫所組成的。JDK是Java開發(fā)所必不可少

9、的一個工具。我們可以在Sun公司的網(wǎng)站上下載JDK的安裝程序。根據(jù)應(yīng)用環(huán)境的不同,JDK可以分為三個不同的版本: J2SE:Java 2 Standard Edition,用于普通標(biāo)準(zhǔn)應(yīng)用程序的開發(fā); J2EE:Java 2 Enterprise Edition,用于企業(yè)級應(yīng)用程序的開發(fā); J2ME:Java 2 Micro Edition,用于移動設(shè)備、嵌入式設(shè)備上應(yīng)用程序的開發(fā)。,JDK和幫助文檔的安裝,JDK的安裝和其它應(yīng)用程序的安裝方式相同,這里不再贅述。我們還要在Sun公司網(wǎng)站上下載JDK幫助文檔的壓縮包,它是我們了解JDK的最直接最有效的途徑。下載完成后可以將其解壓縮到JDK安裝目

10、錄下的docs子目錄中,然后打開其中的index.html鏈接,就可以瀏覽JDK幫助文檔了。,查看和設(shè)置環(huán)境變量,1.查看環(huán)境變量 右鍵點擊“我的電腦” “屬性”“高級”“環(huán)境變量”“系統(tǒng)變量” 2.設(shè)置環(huán)境變量 path變量的作用指定我們執(zhí)行的命令程序所在的目錄。要將其設(shè)置為JDK安裝目錄下bin子目錄所在的路徑。 classpath變量的作用是指定Java虛擬機要執(zhí)行的類所在的目錄。要將其設(shè)置為用戶定義的類所在目錄的路徑,它的值可以有多個。,Java集成開發(fā)環(huán)境,目前Java開發(fā)領(lǐng)域的各種集成開發(fā)環(huán)境(Integration Developer Environment,IDE)呈現(xiàn)出百花齊

11、放的局面,下面我們介紹三種常用的Java集成開發(fā)環(huán)境:JCreator,JBuilder和Eclipse。,JCreator簡介,優(yōu)點:小巧實用 缺點:在J2EE開發(fā)、EJB、Web Services等方面有明顯的不足 JDK和幫助文檔的設(shè)定:安裝時設(shè)定和安裝后設(shè)定 JCreator的工程(Project)和工作空間(Workspace) JCreator利用工程管理相應(yīng)的源文件,一個工程由多個Java源文件和其他一些文件組成,Jcreator中工程文件的擴展名為.jcp。JCreator的工作空間用來管理工程,一個工作空間中可以包含多個工程,JCreator中工作空間文件的擴展名為.jcw。

12、,JCreator編輯界面的組成 文件視圖、類視圖和包視圖、代碼視圖、輸出視圖以及編譯按鈕 利用JCreator進行開發(fā)的步驟,JBuilder簡介,JBuilder是Borland公司開發(fā)的一套Java集成開發(fā)環(huán)境。利用JBuilder,可以方便的編寫、調(diào)試、運行Java程序,特別是圖形界面的程序。,JBuilder的特點,支持Swing、JSP、servlets、EJB、Web Service、XML等最新的Java技術(shù); 集成了多種主流服務(wù)器,可以快速開發(fā)企業(yè)應(yīng)用; 能用Servlets和JSP開發(fā)動態(tài)Web 應(yīng)用; 開放式集成開發(fā)環(huán)境框架,可以將第三方工具良好地集成進自身環(huán)境之中,從而

13、展IDE功能; JBuilder是100%的Java開發(fā)工具,對Windows、Linux與Solaris平臺上的開發(fā)提供跨平臺支持; 提供了團隊開發(fā)功能,集成了多種版本控制系統(tǒng); 引入了快速生成項目的UML(Unified Modeling Language,即統(tǒng)一建模語言)模型。,JBuilder 2006 的新特性,JBuilder 2006是專為加速企業(yè)級Java應(yīng)用而設(shè)計的。它基于Eclipse平臺,因此具有極強的靈活性和可擴展性。JBuilder 2006自帶JDK 1.5,它集成了幾乎所有的Java技術(shù),是全球領(lǐng)先的Java集成開發(fā)環(huán)境。對等協(xié)作功能是JBuilder 2006中

14、最大的新特性。對等協(xié)作功能可以實現(xiàn)對等伙伴之間的通信。此外,還包括共享調(diào)試、共享編輯、安全管理及遠程訪問等。這些功能大大降低了分布式團隊的協(xié)作成本和難度,提高了軟件的開發(fā)效率和開發(fā)質(zhì)量。,JBuilder應(yīng)用瀏覽器,啟動JBuilder 2006集成開發(fā)環(huán)境,首先呈現(xiàn)的用戶面前的開發(fā)界面稱為JBuilder應(yīng)用瀏覽器(AppBrowser),它有主菜單、工具欄、狀態(tài)欄、工程視圖、結(jié)構(gòu)視圖、代碼視圖、消息視圖和調(diào)試器等幾部分組成,我們可以在一個應(yīng)用瀏覽器窗口中實現(xiàn)大部分的開發(fā)功能,包括代碼編輯、可視化設(shè)計、編譯、調(diào)試等操作。,Eclipse簡介,在目前所有的IDE中,Eclipse可以說是最有發(fā)

15、展前途的產(chǎn)品之一。Eclipse是一個開放源代碼的、與NetBeans和Borland Jbuilder類似的一種基于Java的可擴展的開發(fā)平臺。 我們可以進入Eclipse的官方網(wǎng)站,點擊Downloads,下載一個Eclipse的壓縮包。目前最新的版本為3.2.2,但是3.2.2版本的多國語言包還沒有出來,所以我們可以下載一個稍早一點的版本3.2.1,Eclipse的安裝和運行,安裝Eclipse的步驟非常簡單,只需將下載的壓縮包直接解壓到你喜歡的路徑即可。然后將多國語言包解壓并將解壓出來的plugins文件夾和features文件夾去覆蓋ecli

16、pse文件夾下的同名文件夾即可。 在啟動Eclipse之前,需要首先安裝好JDK,并設(shè)置好path環(huán)境變量。安裝并設(shè)置好JDK后,我們再次啟動Eclipse,進入歡迎界面之前首先要選擇工作空間。 Eclipse的缺省歡迎界面中有五個按鈕,分別是“概述”、“新增內(nèi)容”、“樣本”、“教程”和“工作臺”。我們可以點擊位于界面右方的“工作臺”按鈕,進入工作臺界面。 Eclipse 工作臺窗口由多個窗格組成,窗格集合稱為透視(perspective)。默認(rèn)的透視圖是Java透視圖,此外還有CVS資源庫研究透視圖、Java類型層次結(jié)構(gòu)透視圖、Java瀏覽透視圖和插件開發(fā)透視圖等。我們還可以建立多個工作臺窗

17、口,并且能夠定制和復(fù)位透視圖。Java透視圖中還包括多個視圖,默認(rèn)的有包資源管理器、層次結(jié)構(gòu)、大綱、問題、Javadoc和聲明,此外還有Ant、導(dǎo)航器、進度和錯誤日志等多個視圖。,Eclipse的插件體系結(jié)構(gòu),Eclipse最有魅力的地方就在于它的插件體系結(jié)構(gòu)。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。在Eclipse中實現(xiàn)的絕大部分功能是由相應(yīng)的插件完成的,它附帶了一個標(biāo)準(zhǔn)的插件集。Eclipse的多國語言包其實就是一個插件,甚至用來開發(fā)Java程序的JDT(Java Development Tools ),也只不過是Eclipse系統(tǒng)中的一個普通插件而已。 雖然

18、大多數(shù)用戶只是將Eclipse當(dāng)作Java IDE來使用,但Eclipse的目標(biāo)不僅限于此,通過開發(fā)插件,它能擴展到任何語言的開發(fā),甚至能成為繪圖的工具Eclipse已經(jīng)開始提供C語言開發(fā)的功能插件,例如CDT(C Development Tools)。另外,Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,可以利用它開發(fā)自己的功能插件,同時也可以通過開發(fā)新的插件擴展現(xiàn)有插件的功能。,第2章 Java語言語法基礎(chǔ),Java是一種跨平臺的面向?qū)ο笳Z言,利用該語言可以生成獨立于平臺

19、的應(yīng)用程序。Java語言具有眾多優(yōu)點,如面向?qū)ο?、可移植、與硬件無關(guān)等。 我們將介紹Java語言最基本的內(nèi)容,先從Java編程基礎(chǔ)開始,介紹Java語言的基本語法然后,介紹幾種常用算法的示例,強化對Java語言的認(rèn)識。,2.1、Java標(biāo)識符、關(guān)鍵字、注釋與分隔符 2.2、Java的數(shù)據(jù)類型 2.3、Java運算符和表達式 2.4、Java控制結(jié)構(gòu) 2.5、小結(jié) 2.6、習(xí)題,第2章主要內(nèi)容,2.1.1標(biāo)識符與關(guān)鍵字 2.1.2注釋 2.1.3分隔符,2.1、Java標(biāo)識符、關(guān)鍵字、注釋與分隔符,程序員對程序中的各個元素加以命名時使用的命名記號稱為標(biāo)識符(identifier)包括:類名、變量

20、名、常量名、方法名、 Java語言中,標(biāo)識符是以字母,下劃線(_),美元符($)開始的一個字符序列,后面可以跟字母,下劃線,美元符,數(shù)字。 合法的標(biāo)識符 keywords javaName Java_Name sys_ value $java Java123 非法的標(biāo)識符 2mailjava#class char int,2.1.1標(biāo)識符與關(guān)鍵字,具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識符使用,這些標(biāo)識符稱為關(guān)鍵字。 abstract break byte boolean catch case class char continue default double do else extends

21、 false final float for finallyif import implements int interface instanceof long length native new null package private protected public final return switch synchronized short static super try true this throw throws threadsafe transient void while,2.1.1標(biāo)識符與關(guān)鍵字,在Java中,true、false和null都是小寫的。區(qū)別于C+中大寫的TR

22、UE、FALSE和NULL。 所有的數(shù)據(jù)類型所占用的字節(jié)數(shù)都是固定的,并且和實現(xiàn)無關(guān)的,因此在Java中沒有sizeof操作符。 不必死記這些關(guān)鍵詞,當(dāng)理解每個關(guān)鍵詞的含義后,自然就記住了所有的關(guān)鍵詞。,2.1.1標(biāo)識符與關(guān)鍵字,舉例: / 單行注釋,簡單的解釋語句含義. /* 多行注釋,用來說明更多的內(nèi)容,包括算法等. */ /* Java文檔注釋,可以通過javadoc生 * 成類和接口的HTML格式的幫助文檔. * 這種注釋有其特殊的格式(參見相關(guān)文檔) */,2.1.2注釋,2.1.3分隔符,Java中分隔符有空格、逗號、分號及行結(jié)束符,并且規(guī)定任意兩個相鄰標(biāo)識符、數(shù)字、保留字或兩個語

23、句之間必須至少有一個分隔符,以便編譯程序能識別。,2.2、Java的數(shù)據(jù)類型,2.2.1 Java基本數(shù)據(jù)類型(Primary Data Types) 2.2.2常量(Constant)和變量(Variable) 常量(Constant) 變量(Variable) 2.2.3數(shù)據(jù)類型的轉(zhuǎn)換,所有基本類型所占的位數(shù)都是確定的,并不因操作系統(tǒng)的不同而不同。 所有基本類型的關(guān)鍵詞都是小寫的。,數(shù)據(jù)類型所占位數(shù)數(shù)的范圍 char 160 65535 byte 8-2727-1 short 16-215215-1 int 32-231231-1 long 64-263263-1 f loat 32 3.

24、4e038 3.4e038 double 64 1.7e308 1.7e308,2.2.1 Java基本數(shù)據(jù)類型,布爾型數(shù)據(jù)只有兩個值true和false,且它們不對應(yīng)于任何整數(shù)值 布爾型變量的定義如: boolean b = true; 布爾型數(shù)據(jù)只能參與邏輯關(guān)系運算: ,2.2.1 布爾類型(boolean),字符型數(shù)據(jù)代表16位的Unicode字符 字符常量是用單引號括起來的一個字符 a B n u0030 字符型數(shù)據(jù)的取值范圍為 065535 或者說 u0000uFFFF u0000為缺省值 示例 char c1; 缺省值為0 char c2 = 0; 賦初值為字符0 char c3

25、= 32; 用整數(shù)賦初值為空格,2.2.1 字符類型(char),特殊字符的常量表示法: 反斜線(Backslash) 退格(Backspace)b 回車(Carriage return)r 進紙符(Form feed)f 制表符(Form feed)t 換行(New line)n 單引號(Single quote) 八進制數(shù)( 0377 )DDD Unicode字符uHHHH,2.2.1 字符類型(char),整型常量 1. 十進制整數(shù) 如123,456,0 2. 八進制整數(shù) 以0開頭,如0123表示十進制數(shù)83,011表示十進制數(shù)9。 3. 十六進制整數(shù) 以0 x或0X開頭,如0 x123

26、表示十進制數(shù)291,0X12表示十進制數(shù)18。 整型變量 類型為byte、short、int或long,byte在機器中占8位,short占16位,int占32位,long占64位。整型變量的定義如: int x=123; /指定變量x為int型,且賦初值為123 byte b = 8; short s = 10; long y = 123L; long z = 123l;,2.2.1 整數(shù)類型(byte, short, int, long),64位長整數(shù)以l或L結(jié)尾: 12l, -343L, 0 xfffffffffL 1L 32 等于 4294967296L 1 32 等于 0 沒有以l或

27、L結(jié)尾的數(shù)字,根據(jù)其實際值所屬范圍,可以被用作byte,short,或int型整數(shù) 以l或L結(jié)尾的數(shù)字,無論其實際值所屬范圍怎樣,都被用作long型整數(shù),2.2.1 整數(shù)類型(byte, short, int, long),示例 byte b1; 缺省值為0 byte b2 = 127; 賦初值為127 short s1 = (short)(b1 + b2); 強制類型轉(zhuǎn)換 short s2 = (short)(b1 + 123) 強制類型轉(zhuǎn)換 int n = b1 + b2; 不需要強制類型轉(zhuǎn)換 long l1 = 2343; 不需要強制類型轉(zhuǎn)換 long l2 = 4294967296L;

28、 必須用L或l結(jié)尾 long l3 = 65536*63356; 乘法運算越界,l3為0 long l4 = 65536L*63356; l4為4294967296L,2.2.1 整數(shù)類型(byte, short, int, long),實型常量 1. 十進制數(shù)形式 由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0.123, .123, 123.,123.0 2. 科學(xué)計數(shù)法形式 如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。 32位浮點數(shù)形式: 0.23f, 1.23E-4f , . 18F,2.2.1 浮點數(shù)類型,實型(float, double),實型變量

29、類型為float或double,float在機器中占32位,double占64位。實型變量的定義如: double d1 = 127.0; 賦初值為127 double d2 = 127; 賦初值為127 float f1 = 127.0f; 必須在數(shù)字后加f或F float f2 = 4.0e38f; 錯誤!32位浮點數(shù)不能超過 3.4028234663852886e38 float f3 = (float)d1; 必須強制類型轉(zhuǎn)換,2.2.1浮點數(shù)類型,實型(float, double),public class Assign public static void main (String

30、 args) int x , y ; byte b = 3; float z = 1.234f ; double w = 1.234 ; boolean flag = true ; char c ; c = a ; x = 120 ; y = 30; . ,2.2.1使用舉例,Java中 的 常 量 值 是 用 文 字 串 表 示 的,它 區(qū) 分 為 不 同 的 類 型,如 整 型 常 量 123,實 型 常 量 1.23,字 符 常 量 a ,布 爾 常 量 true、false以 及 字 符 串 常 量 This is a language.。 與 C、 C+不 同,Java中 不 能 通

31、 過 #define命 令 把 一 個 標(biāo) 識 符 定 義 為 常 量,而 是 用 關(guān) 鍵 字 final來 定義,定義常量的一般格式為: final 類型 常量標(biāo)識符 = 常數(shù)值; final int MAX_NUM = 100; final double PI = 3.1415926;,2.2.2常量和變量,程序中的基本存儲單元,其定義包括變量名、變量類型和作用域幾個部分,定義格式為: 類型 變量名 = 值 ; int n1 = 3, n2 = 4; Java中變量的缺省初值都是確定的: 布爾變量的初值為:false 整數(shù)變量的初值為:0 浮點數(shù)變量的初值為:0.0 引用(復(fù)合)變量的初值

32、為:null 在方法實現(xiàn)中定義的變量必須顯式的初始化。 變量的作用域 指可訪問變量的一段代碼,在程序中不同的地方聲明的變量具有不同的作用域:局部變量、類變量、方法參數(shù)、例外處理參數(shù)。在一定的作用域內(nèi),變量名必須唯一。,2.2.2常量和變量,自動類型轉(zhuǎn)換 整型、實型、字符型數(shù)據(jù)可以混合運算。運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進行運算,轉(zhuǎn)換從低級到高級: 低-高 byte,short,char int long float double,操作數(shù)1類型操作數(shù)2類型轉(zhuǎn)換后的類型 byte、short、charintint byte、short、char、intlonglong byte、sh

33、ort、char、int、longfloatfloat byte、short、char、int、long、floatdoubledouble,2.2.3數(shù)據(jù)類型的轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則: 不能對boolean類型進行類型轉(zhuǎn)換。 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。 在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強制類型轉(zhuǎn)換。 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度 int i = 8; byte b=(byte)i; (byte)255 = -1(byte)0 x5634 = 0 x34 浮點數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入 (int)23.7 = 23(int)-45.8

34、9f = -45,2.2.3數(shù)據(jù)類型的轉(zhuǎn)換,優(yōu)先級、結(jié)合性以及單/雙目運算 算術(shù)運算符 關(guān)系運算符 邏輯運算符 位運算符 賦值運算符 條件運算符 其他運算符,2.3Java運算符和表達式,優(yōu)先級、結(jié)合性以及單/雙目運算 1). , , () 9) else if(boolean-expression2) statements2; else statementsN; ,2.4.1 選擇語句:if-else,布爾表達式boolean-expression是任意一個返回布爾數(shù)據(jù)類型的表達式,而且必須是(比C或C +要嚴(yán)格)。 與C或C+一樣,每個單一語句后面都要有分號。為了增強程序的可讀性,應(yīng)將if

35、或else后的語句用括起來。 else子句是任選的,不能單獨作為語句使用,它必須和if語句配對使用,并且總是與離它最近的if配對。,int i1 = 123; int i2 = 456; if( i1i2 ) System.out.println(“The bigger one is: ”+i1); else System.out.println(“The bigger one is: ”+i2); ,2.4.1 選擇語句:if-else,switch (expression) case value1 : statements1; break; case valueN : statements

36、N; break; default : defaultStatements; ,2.4.1 選擇語句:switch,表達式expression的返回值類型必須是這幾種類型之一:int、byte、char、short。 case子句中的值valueI必須是常量,而且所有case子句中的值應(yīng)是不同的。 default子句是任選的。 break語句用來在執(zhí)行完一個case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行。 (如果某個case分支后沒有break語句,程序?qū)⒉辉僮霰容^而執(zhí)行下一個分支。) switch語句的功能可以用if-else語句來實現(xiàn),但某些情況下,使用switc

37、h語句更簡煉。,2.4.1 選擇語句: switch,int a = 100; int b = 20; int c; char oper = +; switch(oper) case +: c = a b; break; case -: c = a - b; break; default : c = a * b; break; ,2.4.1 選擇語句:switch,循環(huán)語句 while(當(dāng)型循環(huán)) initialization /初始化條件 while (termination) /循環(huán)條件 body; /循環(huán)體 iteration; /迭代,變更循環(huán)條件 當(dāng)表達式termination為tr

38、ue時,執(zhí)行中的語句,否則終止循環(huán)。,2.4.2循環(huán)語句:while,循環(huán)語句 do-while(直到型循環(huán)) initialization /初始化條件 do body; /循環(huán)體 iteration; /迭代,變更循環(huán)條件 while (termination) ; /循環(huán)條件 首先執(zhí)行一遍中的語句,當(dāng)表達式termination為true時,繼續(xù)執(zhí)行中的語句,否則終止循環(huán)。,2.4.2循環(huán)語句:do-while,循環(huán)語句 for(另一種當(dāng)型循環(huán)) for (initialization; termination; iteration) body; /循環(huán)體 initialization

39、/初始化條件 termination /循環(huán)條件 iteration /迭代,變更循環(huán)條件,2.4.2循環(huán)語句:for,for語句執(zhí)行時,首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。 初始化、終止以及迭代部分都可以為空語句(但分號不能省),三者均為空的時候,相當(dāng)于一個無限循環(huán)。 在初始化部分和迭代部分可以使用逗號語句,來進行多個操作。逗號語句是用逗號分隔的語句序列。 for( int i=0, int j=10; ij; i+, j-) ,2.4.2循環(huán)語句:for,int n = 1, sum = 0; w

40、hile ( n=10 ) sum = sum + n; n+; ,int n = 10, sum = 0; do sum += n; n-; while( n0);,int sum =0; for( int i=1; i=10; i+ ) sum += i; ,while循環(huán),do-while循環(huán),for循環(huán),2.4.2循環(huán)語句,continue語句用來結(jié)束本次循環(huán),跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行終止條件的判斷,以決定是否繼續(xù)循環(huán)。對于for語句,在進行終止條件的判斷前,還要先執(zhí)行迭代語句。它的格式為: continue; 也可以用continue跳轉(zhuǎn)到括號指明的外層循環(huán)中,這時的

41、格式為 continue outerLable;,2.4.3 跳轉(zhuǎn)語句: continue,outer: for( int i=0; i10; i+ ) /外層循環(huán) inner: for( int j=0; j10; j+ ) /內(nèi)層循環(huán) if( ij ) continue outer; /內(nèi)層循環(huán)結(jié)束 /外層循環(huán)結(jié)束,for( int i= 0; i 10; i+ ) if( i = 5 ) continue; ,2.4.3跳轉(zhuǎn)語句: continue,在switch語中,break語句用來終止switch語句的執(zhí)行,使程序從整個switch語句后的第一條語句開始執(zhí)行。 在循環(huán)語句中,bre

42、ak用于終止并跳出循環(huán),從緊跟著循環(huán)體代碼段后的語句執(zhí)行。 在Java中,可以為每個代碼塊加一個標(biāo)號,一個代碼塊通常是用大括號括起來的一段代碼。加標(biāo)號的格式為: BlockLabel: codeBlock; break語句的第二種使用情況就是跳出它所指定的塊,并從緊跟該塊后的第一條語句處執(zhí)行。 BlockLabel: codeBlock; break BlockLabel; codeBlock; ,2.4.3跳轉(zhuǎn)語句: break,a: /標(biāo)記代碼塊a b:/標(biāo)記代碼塊b c: /標(biāo)記代碼塊c break b; /這段語句將不執(zhí)行 /代碼塊c結(jié)束 /這段語句也不執(zhí)行 /代碼塊b結(jié)束 /從這段語

43、句開始執(zhí)行 /代碼塊a結(jié)束,2.4.3跳轉(zhuǎn)語句: break,return語句從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,并從緊跟該語句的下一條語句繼續(xù)程序的執(zhí)行。返回語句有兩種格式: return expression; /當(dāng)方法需要返回某種類型數(shù)據(jù)時 return; /當(dāng)方法的返回類型為void時 單獨一條return語句放在方法中間時,會產(chǎn)生編譯錯誤,因為其后的語句將不會執(zhí)行到。若真需要退出方法,可以通過將return語句嵌入某些語句(如if-else)來使程序在未執(zhí)行完方法中所有語句時退出。,2.4.3跳轉(zhuǎn)語句: return,2.5小結(jié),本章介紹Java的各種語法規(guī)則:各種數(shù)據(jù)類型(

44、包括簡單數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型),運算符(一元運算符,二元運算符,三元運算符以及特殊運算符)和表達式,流程控制(條件控制,循環(huán)控制,switch多分支控制,break語句,contiune語句等)。此外,針對具體的數(shù)據(jù)類型、運算符以及控制語句,我們都給出了相應(yīng)的實例以供大家更進一步的學(xué)習(xí)相關(guān)內(nèi)容。,練習(xí)(1),1.下列標(biāo)識符中,哪些是合法的變量名,哪些是不合法的變量名? (1)char (2)2abc (3)$_isTrue (4)i+j (5)_istrue(6)變量6 (7)String (8)3.14159 2.判斷下面的程序段是否正確,若有錯誤,錯在哪里,應(yīng)該如何改正,并且測試改正后的

45、輸出果。 public static void main(String args) ch = a; char ch; System.out.println(“ch=”+ch); ,練習(xí)(1),1.下列標(biāo)識符中,哪些是合法的變量名,哪些是不合法的變量名? (1)char (2)2abc (3)$_isTrue (4)i+j (5)_istrue(6)變量6 (7)String (8)3.14159 2.判斷下面的程序段是否正確,若有錯誤,錯在哪里,應(yīng)該如何改正,并且測試改正后的輸出果。 public static void main(String args) ch = a; char ch; S

46、ystem.out.println(“ch=”+ch); ,練習(xí)(2),3.寫出下面程序的運行結(jié)果。 /第2章習(xí)題3,Examplex2_3.java public class Example2_3 public static void main(String args) int x = 1,a = 0,b = 0; switch(x) case 0: b+; case 1: a+; case 2: a+,b+; System.out.prinln(“a=”+a); System.out.prinln(“b=”+b); ,4.寫出下面表達式的最后運算結(jié)果,并且令a = 1,b = 2,c =3

47、,d = false。 (1)a+=b-/+c; (2)d = !(a=-b/b+ca!=c; 5.編寫Java程序,計算小于一個整數(shù)的全部素數(shù)并輸出。 6.編寫Java程序,計算sum = 1!+2!+10!。,練習(xí)(3),練習(xí)(4),7.編寫Java程序,輸出從公元1990年到2007年所有閏年的年號,每輸出兩個年號換一行。判斷年號是否為閏年的條件是: (1)若年號能被4整除,而不能被100整除,則是閏年; (2)若年號能被400整除也是閏年。,練習(xí)(5),8.利用for循環(huán)編寫一個程序,將如下圖案分別打印輸出。 * * * * * * *,練習(xí)(6),9.編寫一個方法來計算正方形的面積和

48、周長。 10.編寫程序找出所有的水仙花數(shù);水仙花數(shù)是三位數(shù),它的各位數(shù)字的立方和等于這個三位數(shù)本身。,下課!,第三章 對象與類,3.1 類與對象 3.2 定義類 3.3 成員變量的作用域 3.4 方法重載 3.5 創(chuàng)建對象 3.6 構(gòu)造方法 3.7 this關(guān)鍵字 3.8 初始化問題 3.9 static 關(guān)鍵字 3.10 對象的清理 3.11 訪問控制修飾符 3.12 具體隱藏實現(xiàn) 3.13 參數(shù)傳遞 3.14 總結(jié),3.1 定義類,傳統(tǒng)程序設(shè)計語言的不足 數(shù)據(jù)和對數(shù)據(jù)的操作相分離 面向?qū)ο笤O(shè)計的思想 什么是對象 一切都是對象 對象與類的關(guān)系 類是對象的模版,對象是類的實例,3.2 定義類,

49、類是組成程序的基本單元,定義了自己的類就是定義了要使用的對象的類型。,例:定義一個汽車類: class Car int color; int door; int speed; void start() void brake() 聲明一個汽車類的引用變量: Car myCar;,聲明類的語法: 修飾符 class 類名稱 /成員變量 /方法 ,Java基本數(shù)據(jù)類型,Java數(shù)據(jù)類型包括基本數(shù)據(jù)類型和引用類型,包裝器類型把基本數(shù)據(jù)類型數(shù)據(jù)“包裝”成對象,從 int類型創(chuàng)建一個Integer對象:int myInt; Integer myInteger = new Integer(myInt); 從

50、包裝對象中取出基本類型值: myInt = myIValue();,Java基本數(shù)據(jù)類型,第一個Java程序,程序3.1 Rectangle.java class Rectangle int a,b; int getArea() return a*b; void locate(int x,int y) System.out.println(The position s(+x+,+y+); public static void main(String args) Rectangle r1=new Rectangle(); r1.locate(3,4); r1.a=2; r1.

51、b=3; int area=r1.getArea(); System.out.println(Area of r1 is:+area); ,第一個Java程序,main方法是程序的入口 包含main方法的類是Java應(yīng)用程序的主類 一個Java源文件可以包含多個類,但同一個Java源文件只有主類可以聲明為public Java源文件的命名必須與主類同名,3.3成員變量的作用域,在Java中變量的作用域是由大括號組成的程序塊決定 在不嵌套的程序塊中可以多次聲明相同變量 在嵌套的程序塊中不允許重復(fù)聲明同名的變量 聲明在方法中的變量為局部變量,與實例變量重名的局部變量會覆蓋實例變量,其作用域為整個方

52、法體。 見程序3.2 TestScoping.java,作用域舉例, int x= 1; int y=2 /xy可用 / x可用y超出作用域 ,合法的聲明: int x=1; int x=2; ,不合法的嵌套聲明: int x=1; int x=2; ,3.4方法重載,方法重載(Overload)是指一個類中可以定義參數(shù)列表不同但名字相同的多個方法,調(diào)用時,會根據(jù)不同的參數(shù)列表來選擇對應(yīng)的方法 。,重載的方法名字必須相同 重載的方法參數(shù)必須不同 當(dāng)一個重載方法被調(diào)用時,Java 用參數(shù)的類型和(或)數(shù)量來表明實際調(diào)用的重載方法的版本。每個重載方法的參數(shù)的類型和(或)數(shù)量必須是不同的。雖然每個重

53、載方法可以有不同的返回 類型,但返回類型并不足以區(qū)分所使用的是哪個方法。當(dāng)Java 調(diào)用一個重載方法時,參數(shù)與調(diào)用參數(shù)匹配的方法被執(zhí)行。 見程序3.3 TestOverload.java 程序3.4 TestOverload1.java,被重載的方法必須有不同的參數(shù)列表,前面例子區(qū)分重載方法的參數(shù)采用了或者數(shù)量不同,或者類型不同,參數(shù)順序不同雖然也可以重載,但是容易產(chǎn)生歧義 。例:,程序3.5 TestOverload2.java public class TestOverload2 void print(int a,float b) System.out.println(Print int

54、a and float b: + a + + b); void print(float a,int b) System.out.println(Print float a and int b: + a + + b); public static void main(String args) TestOverload2 obj = new TestOverload2(); obj.print(1,2); ,3.5創(chuàng)建對象,先聲名引用變量 Rectangle r1; 然后創(chuàng)建對象賦值給r1: r1= new rectangle(); 聲明引用變量的同時產(chǎn)生一個對象賦給它: Rectangle r1

55、=new Rectangle(); 引用變量r1“代表”了一個矩形對象,我們就可以使用引用變量加句點形式訪問對象的成員了,在Java中基本類型變量存儲在棧的內(nèi)存結(jié)構(gòu)中 int x=10; boolean y=true;,引用型變量內(nèi)儲存著對象實例的地址 聲明兩個矩形類引用變量r1、r2 :Rectangle r1,r2; r1、r2沒有指向任何對象實例,系統(tǒng)默認(rèn)賦初值null,產(chǎn)生一個新對象實例并賦值給r1: r1= new rectangle(); r2=r1;,在java中字符串類型數(shù)據(jù)是按照對象來處理的 兩種方式 顯式和隱式創(chuàng)建 Java為了加快程序的執(zhí)行速度,把隱式創(chuàng)建的字符串對象放在

56、棧中一個特殊區(qū)域字符串池(String Pool)中,相同內(nèi)容的字符串對象只保留一份 。,String str1=new String(“Hello java!”); String str2=”Hello Java!”,程序3.6 TestString.java public class TestString public static void main(String args) String str1=new String(Hello Java!); String str2=str1; String str3=Hello Java!; String str4=Hello Java!; Sy

57、stem.out.println(str1= =str2); System.out.println(str1= =str3); System.out.println(str3= =str4); 輸出結(jié)果: true false true,3.6構(gòu)造方法,構(gòu)造方法是創(chuàng)建對象時調(diào)用的特殊方法 方法名必須與要創(chuàng)建對象的類名相同 不允許聲明返回類型,即使聲明為void也是不正確的 如果類中并沒有定義構(gòu)造方法,Java會自動地給你添加一個無參的缺省構(gòu)造方法 可以自定義重載的多個構(gòu)造方法,在創(chuàng)建對象時使實例多樣化。 例:程序3.7 Student.java,3.7 this關(guān)鍵字,public Stude

58、nt(int age ) System.out.println(Invoke constructor with age.); age=age; ,以上構(gòu)造方法中出現(xiàn)age=age的奇怪語句,this關(guān)鍵字用來解決這個問題。 this引用指向的是其本身所在方法的當(dāng)前對象。以上構(gòu)造方法若采用this關(guān)鍵字則修改為: public Student(int age ) System.out.println(Invoke constructor with age.); this.age=age; this.age=age意指把參數(shù)age的值賦給類成員變量age。,3.8初始化問題,如果程序員使用了缺省的構(gòu)造方法并且沒有在類中初始化成員變量,創(chuàng)建對象時系統(tǒng)會對各種類型的成員變量按表3.3自動進行初始化賦予一個默認(rèn)值。,用構(gòu)造方法完成初始化,

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論