配套課件-Java程序設(shè)計簡明教程_第1頁
配套課件-Java程序設(shè)計簡明教程_第2頁
配套課件-Java程序設(shè)計簡明教程_第3頁
配套課件-Java程序設(shè)計簡明教程_第4頁
配套課件-Java程序設(shè)計簡明教程_第5頁
已閱讀5頁,還剩286頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java程序設(shè)計Java程序設(shè)計簡明教程*Java 程序設(shè)計2第1章 Java語言及其開發(fā)環(huán)境 Java是20世紀(jì)90年代初問世的一種純面向?qū)ο蟮挠嬎銠C語言,在短短的幾年內(nèi)風(fēng)靡全球,從嵌入式系統(tǒng)到網(wǎng)絡(luò)編程,都得到了空前廣泛的應(yīng)用。 1.1 Java的誕生與發(fā)展1.1.1 Internet與Web Internet的迅猛發(fā)展始于20世紀(jì)90年代,所以20世紀(jì)90年代又被稱為Internet時代,也稱網(wǎng)絡(luò)時代。 萬維網(wǎng)(World Wide Web,WWW,又稱為Web)是Internet上一項發(fā)展最快的網(wǎng)絡(luò)多媒體信息服務(wù);它作為Internet上新一代用戶界面,摒棄了以往純文本方式的信息交互手段

2、,采用超文本(HyperText)方式。萬維網(wǎng)包括WWW服務(wù)器和WWW瀏覽器。 1.1.2 Java的誕生與發(fā)展 1993年萬維網(wǎng)空前流行起來,Sun公司發(fā)現(xiàn)了用Java向Web頁中添加“動態(tài)內(nèi)容”的潛在需求。1994年,Sun公司決定將Java語言用在WWW開發(fā)中,并取得了設(shè)計上的成功。Java出現(xiàn)以前,萬維網(wǎng)只是文本和靜態(tài)圖形;Java出現(xiàn)以后,Web頁變得有了聲音、動畫和交互性,而且不久又出現(xiàn)了視頻圖像和三維圖像,Web頁變“活”了。因為Java的平臺獨立性,使Java程序適應(yīng)了Internet上多樣化的服務(wù)器站點環(huán)境,Java程序既可以在Windows平臺,也可以在Unix、Linux

3、等平臺上運行,體現(xiàn)了Sun公司宣傳的“Write Once,Run Anywhere”(一次編寫,隨處運行)的跨平臺特征。 *Java 程序設(shè)計51.1.3 Java的應(yīng)用 Java開發(fā)小組把Java按特性分為基本版、移動版和企業(yè)版三個版本,每版本有一個軟件開發(fā)包(Software Development Kit,SDK)。Java的基本版本叫Java 2標(biāo)準(zhǔn)版(Java 2 Standard Edition,J2SE)它包含建立Java應(yīng)用程序或者Applet所需的應(yīng)用程序編程接口(API)。Java2移動版(The Java 2 Mobile Edition,J2ME)包含創(chuàng)建無線Java

4、應(yīng)用程序的API。還有Java2企業(yè)版(The Java 2 Enterprise,J2EE)是J2SE的增強版本,包含建立多層架構(gòu)應(yīng)用程序API。 *Java 程序設(shè)計61.2 Java與C、C+的聯(lián)系與區(qū)別 1.2.1 Java與C+ C+和Java這兩種語言是設(shè)計用來解決不同問題的。 Java語言的許多基本結(jié)構(gòu)與C+是相似的,有時甚至是相同的。 Java沒有指針 Java帶有自動的垃圾收集器,這是在C/C+中沒有的功能 在Java中,一個類只能有一個父類,但是可以實現(xiàn)多個接口,這樣既達到多重繼承的目的,又保證了結(jié)構(gòu)比多重繼承更加清晰。 *Java 程序設(shè)計71.2.2 Java與C Ja

5、va是純面向?qū)ο蟮某绦蛟O(shè)計語言,Java語言中程序設(shè)計的單元是類,從類中創(chuàng)建一個一個實例對象。Java編程人員著重創(chuàng)建用戶自定義的類。每一個類均可包含數(shù)據(jù)屬性和若干操作數(shù)據(jù)的函數(shù)。一個類的函數(shù)部分稱為方法。 Java源程序編譯后生成的字節(jié)碼文件就相當(dāng)于C源程序編譯后Windows上的exe可執(zhí)行文件,JVM(Java Virtual Machine,Java虛擬機)的作用類似Windows操作系統(tǒng)。在Windows上運行的是exe文件,在JVM上運行的是Java字節(jié)碼文件,即編譯后生成的后綴為.class的文件。 *Java 程序設(shè)計81.3 Java語言的特點 1跨平臺 2面向?qū)ο?3使用簡

6、單 4強大的網(wǎng)絡(luò)功能 5解釋型 6健壯性(Robust) 7分布式計算 8安全 9多線程 10無線應(yīng)用技術(shù) *Java 程序設(shè)計91.4 Java程序的類型及其不同的編程模式 用Java書寫的程序有兩種類型:Java應(yīng)用程序(Java Application)和Java小應(yīng)用程序(Java Applet)。 Java應(yīng)用程序必須得到Java虛擬機的支持才能夠運行。Java小應(yīng)用程序則需要客戶端瀏覽器的支持。Java小應(yīng)用程序運行之前必須先將其嵌入HTML文件的和標(biāo)記中。當(dāng)用戶瀏覽該HTML頁面時,Java小應(yīng)用程序?qū)姆?wù)器端下載到客戶端,進而被執(zhí)行。 *Java 程序設(shè)計10Applicat

7、ion的基本編程模式: Class用戶自定義的類名 /定義類 public static void main(String args) /定義main()方法 方法體*Java 程序設(shè)計11Applet的基本編程模式: impor java.awt.Graphics; /引入java.awt系統(tǒng)包中的Graphics類 import java.applet.Applet; /引入java.applet系統(tǒng)包中的Applet類class 用戶自定義的類名 extends Applet /定義類 public void paint(Graphics g) /調(diào)用Applet類paint()方法 方

8、法體 *Java 程序設(shè)計12Applet和Application是Java程序的兩種基本類型,從源代碼的角度來看,Applet和Application有以下兩個基本的不同點。一個Applet類必須定義一個從Applet類派生的類;Application則沒有這個必要。 一個Application必須定義一個包含main的方法,以控制它的執(zhí)行,即程序的入口;Applet不會用到main方法,它的執(zhí)行是由Applet類中的幾個系統(tǒng)方法來控制的。 *Java 程序設(shè)計131.5 建立Java開發(fā)環(huán)境 Java程序在運行時需要Java虛擬機的支持,Java虛擬機內(nèi)置于JRE運行環(huán)境(J2SE Run

9、time Environment)和JDK開發(fā)工具包(Java Development Kit)等Java軟件中。如果在Windows操作系統(tǒng)中安裝了JRE軟件,就能在個人電腦中運行Java程序;如果安裝了JDK軟件,則不但能運行Java程序,還可以編譯Java程序。JDK包含了JRE的功能,所以只要安裝JDK就夠了。*Java 程序設(shè)計141.5.1 JDK的獲得與安裝 /javaee/index.jsp1.5.2 運行環(huán)境的配置 正確安裝了JDK以后,需要對系統(tǒng)做一定的設(shè)置。 右擊“我的電腦”打開快捷菜單,選擇“屬性”命令,打開“系統(tǒng)特性”對話框 選擇“高級”選擇卡,單擊“環(huán)境變量”按鈕*

10、Java 程序設(shè)計151.6 Java應(yīng)用程序的開發(fā)與運行1.6.1 Java應(yīng)用程序開發(fā)過程簡介 要創(chuàng)建一個Java程序,需要三個基本步驟:(1)創(chuàng)建帶有文件擴展名.java的源文件。(2)利用Java編譯器生成文件擴展名為.class的字節(jié)碼文件。(3)Application程序利用Java解釋器運行該字節(jié)碼文件,Applet利用Java自帶查看器或瀏覽器運行嵌入字節(jié)碼文件的HTML文件。 *Java 程序設(shè)計16Java編譯器是JDK中的javac.exe,將java源程序編譯成字節(jié)碼文件。使用語法:javac類名.java 按回車鍵即可。如果源程序沒有錯誤,則屏幕上沒有輸出,否則將顯示

11、出錯信息。 Java解釋器是JDK中的java.exe,解釋和執(zhí)行Java應(yīng)用程序。使用語法:java 類名 按回車即可。 對于Applet程序來說,需要HTML文件的配合。使用語法:appletviewer HTML文件名.html 按回車即可。 *Java 程序設(shè)計171.6.2 Java Application程序示例及運行 public class HelloWorld public static void main(String args) System.out.println(“Hello,Java World!”); /結(jié)束main方法的定義 Java程序是由類或類的定義組成。類

12、構(gòu)成了Java程序的基本程序單位。創(chuàng)建一個類是Java程序的首要工作,而且類名要和所使用的文件名完全一樣,包括字母的大小寫。Applicaton中有一個顯著標(biāo)記就是必須定義一個main()主方法 *Java 程序設(shè)計181.6.3 Java Applet程序示例及運行 import javax.swing.JApplet; /加載系統(tǒng)類JAppletimport java.awt.Graphics; /加載系統(tǒng)類Graphicspublic class WelcomeApplet extends JApplet public void paint(Graphics g) g.drawStrin

13、g(Welcome to Java Programming!,25,25); /結(jié)束paint方法的定義 /結(jié)束類WelcomeApplet的定義*Java 程序設(shè)計19 appletviewer WelcomeApplet.html 與應(yīng)用程序一樣,每一個Java Applet至少由一個類定義組成。 java.applet中有一個傳統(tǒng)的Applet類,它沒有包括在Java最新的GUI構(gòu)件javax.swing包中。*Java 程序設(shè)計201.6.4 開發(fā)Java應(yīng)用程序注意事項在Java應(yīng)用程序時,以下幾點務(wù)必注意:(1)所有的Java語句必須以“;”結(jié)束。(2)Java區(qū)分大小寫,拼寫時要

14、注意關(guān)鍵字和標(biāo)識符構(gòu)成字母的大小寫。(3)花括號成對出現(xiàn)。在寫左花括號時,立即再寫一個右花括號。這樣有助于防止漏寫右花括號。類名稱后面的花括號標(biāo)識著類定義的開始和結(jié)束。(4)習(xí)慣上,類名應(yīng)以首字母大寫開頭,變量以小寫字母開頭,變量名有多個單詞第一個單詞后邊的每個單詞首字母應(yīng)大寫。當(dāng)讀一個Java程序時,尋找以大寫字母開頭的標(biāo)識符,這些通常代表Java類。 *Java 程序設(shè)計21(5)程序段中適當(dāng)增加空白行會增加程序的可讀性。在定義方法內(nèi)容的花括號中,將整個內(nèi)容部分縮進一層,使程序結(jié)構(gòu)清晰,程序易讀。編譯器會忽略這些空白行和空格字符。(6)在程序中,一行最好只寫一條語句。Java允許一個長句分

15、割寫在幾行中,但是不允許從標(biāo)識或字符串的中間分割。(7)文件名與public類名在拼寫及大小寫上必須保持一致。(8)如果一個.java文件含有多于一個public類,則是一個錯誤。(9)不以.java為擴展名的文件名是一個錯誤。(10)運行appletviewer時,文件擴展名不是.htm或.html是一個錯誤,這將導(dǎo)致無法使applectviewer裝載Applet。*Java 程序設(shè)計22第2章 Java語言基礎(chǔ) 2.1 Java語言的基本組成 Java語言主要由標(biāo)識符、關(guān)鍵字、直接量、運符符和分隔符6種元素線成。這6種元素有著不同的語法含義和組成規(guī)則,它們互相配合,共同完成Java的語義

16、表達。2.1.1 標(biāo)識符 在對程序中的各個元素(如變量、方法、類等)加以命名時使用的命名記號稱為標(biāo)識符。 *Java 程序設(shè)計23 Java語言中,標(biāo)識符是一個字符序列,它分為兩類:一類是用戶自己定義使用的,其作用是用于標(biāo)識常量、變量、文件、類和方法等的名字;另一類是關(guān)鍵字,也叫保留字。 在Java中,所有的標(biāo)識符都必須以字母(AZ、az)、下劃線“_”或美元符號“$”開頭,后面可以包含字母、數(shù)字、下劃線和美元符號。Java對標(biāo)識符的有效字符個數(shù)沒有限定。 *Java 程序設(shè)計242.1.2 關(guān)鍵字 關(guān)鍵字是Java語言本身使用的標(biāo)識符,它有特定的語法含義。所有的Java關(guān)鍵字將不能被用作用戶

17、使用的標(biāo)識符,如for、while、boolean等都是Java語言的關(guān)鍵字。 2.1.3 分隔符 分隔符是用來區(qū)分源程序中的基本成分,可使編譯器確認(rèn)代碼在何處分隔。分隔符有注釋、空白符和普通分隔符三種。 *Java 程序設(shè)計251注釋 (1)單行注釋,以“/”開頭到本行末的所有字符被系統(tǒng)理解為注釋,不予編譯。(2)塊注釋,以“/*”開始,最后以“*/”結(jié)束,中間可寫多行。 2空白符 3普通分隔符 普通分隔符和空白符的作用相同,用來區(qū)分程序中的各種基本成分,但它在程序中有確定的含義,不能忽略。 *Java 程序設(shè)計262.2 數(shù)據(jù)類型 Java是一種強類型語言。每個變量、每個表達式都有一個類型

18、,每個類型都被嚴(yán)格定義。所有的賦值,無論是顯式的還是通過參數(shù)進行傳遞,都要進行類型的一致性檢查。在其他一些語言中,對不一致的數(shù)據(jù)類型沒有自動進行強制轉(zhuǎn)換的功能。Java編譯器檢查所有的表達式和參數(shù)以確保其類型的一致性。在編譯器對類完成編譯之前,任何錯誤的匹配都必須糾正過來。 Java中的數(shù)據(jù)類型(data types)可分為兩大類,一類稱為基本數(shù)據(jù)類型,另一類稱為構(gòu)造數(shù)據(jù)類型。 *Java 程序設(shè)計272.2.1 基本數(shù)據(jù)類型數(shù)據(jù)類型決定了程序處理和存儲數(shù)據(jù)的方式。Java有8種基本數(shù)據(jù)類型。它們被分為4組:整型:byte,short,int和long;浮點型:float和double;字符型

19、:char;布爾型:boolean。 可以直接使用這些類型本身或用它們構(gòu)造自己的數(shù)組或類類型。 *Java 程序設(shè)計282.2.2 直接量 在Java中,程序中使用的常量稱為一個直接量。所謂常量是在程序運行期間不可改變的量,又稱為最終量(final)。Java的每種基本數(shù)據(jù)類型都有直接量。 2.2.3 變量 變量是內(nèi)存中的一塊空間,提供可以存放信息和數(shù)據(jù)的地方,具有記憶數(shù)據(jù)的功能。變量的值在程序運行過程中是可變的。變量是由標(biāo)識符、類型和可選的初始值組合定義。 *Java 程序設(shè)計291聲明變量Java是強類型語言,所有變量在使用之前必須聲明。變量聲明的基本形式如下所示:type identif

20、ier=value,identifier=value; 2. 變量的作用域或生命周期變量在程序中聲明的位置隱含地指出了該變量的作用域。按作用域劃分,Java中變量可以歸納為以下3種類型:成員變量; 局部變量;方法參數(shù)。 *Java 程序設(shè)計30 成員變量是類或?qū)ο蟮某蓡T,它是在類中,但不是在類的某個方法中聲明的變量。成員變量的作用域是整個類,在類的方法中也可以使用它們。另外,類的成員變量有靜態(tài)變量和實例變量之分。當(dāng)類的成員變量被static修飾時,它就是靜態(tài)變量,否則是實例變量。實例變量在定義時是不能夠賦初值的,它只能夠在該類被實例化為對象時利用構(gòu)造方法進行賦值。而靜態(tài)成員變量可以在類定義時進

21、行賦值。 *Java 程序設(shè)計31 局部變量是在一個語句塊(一對花括號)中聲明的,并且不能被該塊以外的代碼使用。例如,任何在方法中定義的變量就是一個局部變量,它只能在聲明它的方法中使用。 方法參數(shù)是方法(或構(gòu)造方法)的變元,用于將相應(yīng)的數(shù)據(jù)傳遞給方法(或構(gòu)造方法)。方法參數(shù)的作用域是它作為參數(shù)的整個方法(或構(gòu)造方法)。 *Java 程序設(shè)計323. 最終變量最終變量是指在程序運行過程中其值不變的量,它類似于一些程序設(shè)計語言中的“常量”。定義最終變量的方式有兩種:(1)在聲明變量的類型前面加final關(guān)鍵字,并同時進行初始化,如下所示: final double PI=3.14159;(2)在聲

22、明變量的類型前面加final關(guān)鍵字,在必要時再進行初始化,例如: final double PI; PI=3.14159; *Java 程序設(shè)計334. 變量類型的轉(zhuǎn)換 (1)自動轉(zhuǎn)換 如果兩個類型兼容,Java將自動完成轉(zhuǎn)換。 (2)強制轉(zhuǎn)換不兼容類型 在Java不能進行自動轉(zhuǎn)換的情況下,需要使用直接的強制轉(zhuǎn)換。例如,當(dāng)把一個int值賦給一個byte變量時,由于byte小于int,因此需要使用強制轉(zhuǎn)換。因為目標(biāo)類型小于源類型,有時把這種強制類型轉(zhuǎn)換叫做變窄轉(zhuǎn)換。 *Java 程序設(shè)計342.3 運算符與表達式 對于數(shù)據(jù)進行的操作稱為運算;表示各種不同運算的符號稱為運算符;參與運算的數(shù)據(jù)稱為操

23、作數(shù)。 2.3.1 賦值運算符 賦值運算符對應(yīng)了賦值運算,即賦予程序里的變量或?qū)ο笠欢ǖ膬?nèi)容。簡單的賦值運算是把一個表達式的值直接賦給一個變量或?qū)ο螅褂玫馁x值運算符是“=”,其格式如下: 變量或?qū)ο?表達式; *Java 程序設(shè)計352.3.2 算術(shù)運算符 Java語言的算術(shù)運算符有一元算術(shù)運算符和二元算術(shù)運算符兩種。1. 一元算術(shù)運算符 Java的一元算術(shù)運算符包括以負(fù)運算(-)、增量(+)和減量(-)三種。取負(fù)運算是改變某個數(shù)的正負(fù)符號,如原來是正數(shù),則取負(fù)運算后的結(jié)果為負(fù)數(shù);如原來是負(fù)數(shù),則取負(fù)運算后的結(jié)果為正數(shù)。增量是操作數(shù)加1(當(dāng)操作數(shù)為浮點數(shù)時加1.0),減量是操作數(shù)減1(當(dāng)操作

24、數(shù)為浮點數(shù)時減1.0) *Java 程序設(shè)計362. 二元算術(shù)運算符 Java的二元算術(shù)運算符有加(+)、減(-)、乘(*)、除(/)、求模運算符(%)。前面4個運算符是做一般的加、減、乘、除四則運算,求模運算符(%)也叫取余運算符。 對于兩個都是整數(shù)類型的操作數(shù),“/”表示整除,即結(jié)果舍棄小數(shù)部分,只保留整數(shù)部分;否則做實數(shù)除法運算。 *Java 程序設(shè)計37需要注意的問題:(1)兩個二元運算符不能放在一起。例如,5*%6就是一個無效的表達式。(2)括號可用來改變運算順序。例如表達式(6+4)/(2+3),首先是計算6+4和2+3,得10/5,最后求得結(jié)果為2。(3)括號中也可以包含括號。當(dāng)

25、括號中嵌套括號時,首先計算最內(nèi)層括號中的表達式。從內(nèi)向外依次進行求值。 (4)乘號*不能省略。例如,表達式(3+2)(3+4)是無效的,正確形式應(yīng)為(3+2)*(3+4)。 *Java 程序設(shè)計382.3.3 關(guān)系運算符 關(guān)系運算實際上就是比較運算,運算結(jié)果是布爾值。如果兩個運算對象符合關(guān)系運算符所要示的比較關(guān)系,則關(guān)系運算結(jié)果為true,否則為false。2.3.4 邏輯運算符 邏輯運算符用來表示操作數(shù)的邏輯關(guān)系,其運算結(jié)果也是用布爾值表示的。當(dāng)邏輯關(guān)系成立時,其運算結(jié)果為true;反之為false。在Java中,邏輯運算符有三種。*Java 程序設(shè)計39 邏輯運算符“&”和“|”有時也被稱

26、為捷徑運算符或短路運算符。對“|”運算,如果左邊的表達式值為true,則不必對運算符右邊的表達式再進行運算,整個表達式的結(jié)果就為true;對“&”運算,如果左邊的表達式的值為false,則不必對運算符右邊的表達式再進行運算,整個表達式的結(jié)果就為false。 邏輯運算符的優(yōu)先級比算術(shù)運算符低。 *Java 程序設(shè)計402.3.5 條件運算符 Java語言與C語言一樣提供了高效簡便的三元條件運算符“?:”。該運算符的一般形式為: exp1?exp2:exp3; 其中,exp1、exp2、exp3是表達式。要注意冒號的用法和位置。表示在計算exp1后,如果結(jié)果為真,則計算exp2并將結(jié)果作為整個表達

27、式的值;如果exp1的計算結(jié)果為假,則計算exp3并以它的結(jié)果作為整個表達式的值。 *Java 程序設(shè)計412.3.6 位運算符1. 按位運算 位運算符用來對二進制位進行操作,其操作數(shù)只能為整型或字符型。 (1)“”是按位取反運算符 (2)“&”是按位與運算符 (3)“|”是按位或運算符 (4)“”是按位異或運算符 *Java 程序設(shè)計422. 移位運算 “移位”,就是將操作數(shù)以二進制比特位為單位,一起向某個方向移動。位運算的操作數(shù)和結(jié)果都是整型量。在進行移位操作時,左移位運算符“”,左邊的空位一律填0,低位舍棄。 *Java 程序設(shè)計432.3.7 其他運算符 除上述運算符外,Java語言中

28、還有一些其他的運算符,如“.”、“new”、“( )”、“” 2.3.8 運算符的優(yōu)先級 當(dāng)表達式里有很多種運算符號的時候,運算的次序 *Java 程序設(shè)計442.4 Math類的常用操作 Java的E和圓周率PI表示如下:Math.E=2.718281828459045Math.PI=3.14159263589793min、max取最小、最大值操作 System.out.println(“Math.max(4,6)”=”+Math.max(4,6); 結(jié)果: Math.max(4,6)=6 *Java 程序設(shè)計452. 絕對值操作 System.out.println(“Math.abs(6

29、.8)=”+Math.abs(6.8); 3. 四舍五入操作語法形式 Math.round() Math.rint() Math.ceil() Math.floor()round()方法與rint()都是四舍五入操作;ceil()方法是向上取數(shù);floor()方法是向下取數(shù)。 *Java 程序設(shè)計464. 冪與對數(shù)操作語法形式 Math.exp(val)常數(shù)E的val次方,如EvalMath.pow(vall,val2)vall的val2次數(shù),如valval2Math.log(val)以常數(shù)E為底求val的對數(shù),如logEval *Java 程序設(shè)計475三角函數(shù)操作 Math類提供了正弦、余

30、弦、正切函數(shù)以及它們的反函數(shù),它們不能接受角度值,只能輸入弧度值。將弧度轉(zhuǎn)變?yōu)榻嵌鹊姆椒ㄊ莟oDegrees();將角度轉(zhuǎn)變?yōu)榛《鹊姆椒╰oRadians()。l 語法形式Math.sin(double) 求正弦值Math.cos(double) 求余弦值Math.asin(double) 求反正弦值Math.acos(double) 求反余弦值Math.atan(double) 求反正切值*Java 程序設(shè)計48 2.5 Java的輸入輸出 2.5.1 標(biāo)準(zhǔn)輸入/輸出方法 Java系統(tǒng)類System是一個最終類,它的屬性和方法都是靜態(tài)的,在程序中引用直接以System為前綴即可。System

31、類的一個重要功能就是提供標(biāo)準(zhǔn)輸入/輸出。一般情況下,數(shù)據(jù)標(biāo)準(zhǔn)輸入的來源為鍵盤,標(biāo)準(zhǔn)輸出的目的地為屏幕。 *Java 程序設(shè)計491. 標(biāo)準(zhǔn)輸出方法 System類含有標(biāo)準(zhǔn)打印流PrintStream類的成員變量out,通過調(diào)用它的print、println或write方法來輸出各種類型的數(shù)據(jù)。標(biāo)準(zhǔn)輸出方法不產(chǎn)生輸出異常,這一點與標(biāo)準(zhǔn)輸入方法不同。 print和println方法的不同之處僅在于println輸出后換行而print不換行。 *Java 程序設(shè)計50class ch0207 public static void main(String args) Object o=”an exam

32、ple”; char c=a,b,c,d,e; byte b=f,g,h,i,j; System.out.println(true); System.out.println(C); System.out.println(100); System.out.println(200000L); System.out.println(13.6F); System.out.println(2346.99D); System.out.println(“a student”); System.out.println(o); System.out.println(c); System.out.println(

33、 ); System.out.write(b0); System.out.flush(); *Java 程序設(shè)計512. 標(biāo)準(zhǔn)輸入方法 鍵盤是標(biāo)準(zhǔn)輸入設(shè)備,用戶通常用鍵盤輸入數(shù)據(jù)。System類含有標(biāo)準(zhǔn)輸入流的成員變量in,可以調(diào)用它的read方法來讀取鍵盤數(shù)據(jù)。輸入比輸出更容易出錯。一個錯誤的輸入將會導(dǎo)致程序的崩潰(程序中斷或退出)。程序運行時發(fā)生的錯誤稱為異常。 *Java 程序設(shè)計52 class ch0208 public static void main(String args)throws java.io.IOException char c; System.out.println

34、(“Please input a char:”); c=(char)System.in.read(); /從標(biāo)準(zhǔn)輸入讀入一個字節(jié)的信息并返回給一個字符變量 System.out.println(“Receive char=”+c); *Java 程序設(shè)計53 2.5.2 流式交互輸入輸出import java.io.*; public class ch0211 public static void main(String args)throws IOException InputStreamReader reader=new InputStreamReader(System.in); Buff

35、eredReader input=new BufferedReader(reader); /* System.in代表系統(tǒng)缺省的標(biāo)準(zhǔn)輸入(即鍵盤),首先把它轉(zhuǎn)換成InputStreamReader類的對象reader,然后轉(zhuǎn)換成BufferedReader類的對象input,使原來的比特輸入變成緩沖字符輸入*/ System.out.print(“Enter your name:”); String name=input.readLine(); /*readLine()方法讀取用戶從鍵盤輸入的一行字符并賦值給字符串對象name*/ System.out.println(“Hello,”+nam

36、e+”!”); /字符串回顯示在屏幕上*Java 程序設(shè)計54 從鍵盤輸入直到屏幕輸出,涉及System.in、reader、input、name和System.out5個對象,其中System.in和System.out在系統(tǒng)類System中定義。除了name對象,其他對象在系統(tǒng)中負(fù)責(zé)傳遞字節(jié)的字符,這些對象被稱為流對象。就像一條水流,數(shù)據(jù)在它們當(dāng)中按照一定的順序流動。 *Java 程序設(shè)計552.5.3 GUI圖形界面輸入方法 import javax.swing.JOptionPane; /import語句用于加載類庫 public class ch0212 public static

37、void main(String args) JOptionPane.showMessageDialog(null,” Hello,Java World!”); /類JOptionPane中的方法showMessageDialog的調(diào)用 System.exit(0); /使用預(yù)定義類System的靜態(tài)方法exit結(jié)束程序 *Java 程序設(shè)計56程序說明: Java的一個強大之處在于它提供了一套豐富的預(yù)定義類,程序設(shè)計人員可以使用它們而不必重新開發(fā)。Java許多預(yù)定義被成組地編進相關(guān)類目錄,稱作包。這些包的全體稱為Java類庫或Java應(yīng)用程序編程接口(Java API)。所有JavaAPI中

38、的包存儲在目錄java或javax下,該目錄又有許多子目錄,包括swing(javax的一個子目錄)。類JOptionPane包含在包javax.swing中。 *Java 程序設(shè)計572.5.4 自定義輸入方法 import java.io.*;import mp.Op3;public class ch0215 public static void main(String args) throws IOException int f=OValue( ); System.out.println(2*f=+2*f); float ff=Op3.floatValue( ); System.out.

39、println(2*ff=+2*ff); String s=Op3.stringValue( ); System.out.println(你鍵入的字符串是:+s); *Java 程序設(shè)計58第3章 程序控制結(jié)構(gòu) 算法(algorithm)是“在優(yōu)先步驟內(nèi)求解某一問題所使用的一組定義明確的有序的規(guī)則”,即編寫程序的思路。程序是依據(jù)算法使用計算機程序設(shè)計語言編寫的文本,它是語句的集合。制定程序中各語句的執(zhí)行次序稱為程序流程控制,即程序的控制結(jié)構(gòu)。程序的控制結(jié)構(gòu)分為順序、選擇、循環(huán)及異常處理結(jié)構(gòu)。*Java 程序設(shè)計593.1 Java程序控制結(jié)構(gòu) 程序控制指定程序中語句的執(zhí)行順序。到目前為止,前面

40、做過的程序都是順序執(zhí)行的。然而,通常遇到的情況都要求提供語句執(zhí)行的選擇步驟。If 半徑radius 為負(fù),則 程序顯示輸入錯誤的信息;else 程序計算面積并顯示結(jié)果; *Java 程序設(shè)計603.2 條件語句Java有幾種條件語句:簡單if語句,ifelse語句,嵌套if語句,switch語句和條件表達式。3.2.1簡單if語句簡單if語句只在條件為真時執(zhí)行一個操作。其語法如下if(布爾表達式)語句(組); *Java 程序設(shè)計613.2.2 ifelse語句 當(dāng)指定條件為真時簡單if語句執(zhí)行一個操作,當(dāng)條件為假時什么也不干。 if(布爾表達式) 布爾表達式為真時執(zhí)行的語句(組);else

41、布爾表達式為假時執(zhí)行的語句(組);*Java 程序設(shè)計623.2.3 if語句的嵌套 if或ifelse語句中的語句可以是任意合法的Java語句,包括其他if或ifelse語句。內(nèi)層的if語句稱為嵌套(nested)在外層if語句中。內(nèi)層if語句又可以包含另一個if語句,事實上嵌套的深度沒有限制。 *Java 程序設(shè)計633.2.4 switch語句swithch (switch-expression) case value1:statement(s)1; break; case value2:statement(s)2; break; case valueN:statement(s)N; b

42、reak; default: statement(s)-for-default; *Java 程序設(shè)計64switch語句遵從下述規(guī)則:l 表達式switch-expression必須能計算出一個char、byte、short或int型值,并且必須用括號括住它。l Value1,ValueN必須與switch-expression的值具有相同的數(shù)據(jù)類型。要注意Value1,ValueN都是常量表達式,也就是說在表達式中不能有變量,如1+x是不容許的。l 當(dāng)switch-expression的值與case語句的值相匹配時,將從該case語句開始執(zhí)行,直到遇到一個break語句或到達switch語

43、句的末端。*Java 程序設(shè)計65l 關(guān)鍵字break是可選的。Break語句立即終止整個switch語句。l 默認(rèn)情況(default)是可選的,它用來執(zhí)行指定情況與switch-expression都不匹配時的操作。case語句是順序檢測的,這些case的順序(包括默認(rèn)情況)是無所謂的。但是,將所有情況按照邏輯順序排列并把默認(rèn)情況放在最后是良好的編程風(fēng)格。 *Java 程序設(shè)計663.2.5 條件表達式 variable=booleanExpression?expression1:expression2;(變量=布爾表達式?表達式1:表達式2) 符號?和:在條件表達式中同時出現(xiàn)時,它們構(gòu)成

44、一個條件運算符(conditional operator),也稱為三目運算符(ternary)。它是Java中唯一的一個三目運算符。 *Java 程序設(shè)計673.3 循環(huán)結(jié)構(gòu) 循環(huán)(loop)是控制語句塊重復(fù)執(zhí)行的結(jié)構(gòu)。循環(huán)中要重復(fù)執(zhí)行的語句稱為循環(huán)體(loop body)。循環(huán)體的一次執(zhí)行稱為一次循環(huán)迭代(iteration of the loop)。每個循環(huán)包含一個循環(huán)條件(loop-continuation-condition),它是控制循環(huán)體執(zhí)行的布爾表達式。每次選代之后都要重新計算循環(huán)條件。若條件為真,重復(fù)執(zhí)行循環(huán)體,若條件為假,循環(huán)終止。 *Java 程序設(shè)計683.3.1 whi

45、le循環(huán)while循環(huán)的語法如下: while(循環(huán)條件continue-condition) /循環(huán)體 語句(組); 如果循環(huán)體只有一條語句或沒有語句,while循環(huán)以及其他循環(huán)中的花括號可以省略。*Java 程序設(shè)計69 循環(huán)條件是一個布爾表達式,它必須放在括號中。在循環(huán)體執(zhí)行前總是先計算循環(huán)條件,若條件為真,執(zhí)行循環(huán)體,若條件為假,整個循環(huán)中斷并且程序控制轉(zhuǎn)移到while循環(huán)語句后的語句。例: int count=0; while(count100) System.out.println(“Welcome to Java!”); count+; *Java 程序設(shè)計703.3.2 do_

46、while循環(huán) do_while循環(huán)是while循環(huán)的變體。它的語法如下:do /循環(huán)體; 語句(組);while(循環(huán)條件); *Java 程序設(shè)計71 先執(zhí)行循環(huán)體,再計算循環(huán)條件,若計算結(jié)果為真,再執(zhí)行循環(huán)體,若為假,則終止do_while循環(huán)。While循環(huán)與do_while循環(huán)的主要差別在于循環(huán)體的計算和循環(huán)條件的執(zhí)行順序不同。while循環(huán)條件do_while循環(huán)具有相同的表達能力,有時一種比另一種更方便。 *Java 程序設(shè)計723.3.3 for循環(huán)一般地,for循環(huán)語法如下:for(初始化操作;循環(huán)條件;每次循環(huán)后的操作) / 循環(huán)體; 語句(組); for循環(huán)語句以關(guān)鍵字f

47、or開始,然后是括號括住的初始化操作、循環(huán)條件和每次循環(huán)后的操作,以及括在花括號中的循環(huán)體。初始化操作循環(huán)條件和每次循環(huán)后的操作用分號分隔。 *Java 程序設(shè)計73 一般情況下,for循環(huán)使用一個變量來控制循環(huán)體的執(zhí)行次數(shù)和終止條件。這個變量稱為控制變量(control variable)。通常,初始化操作初始化控制變量,每次循環(huán)后的操作增加或減少控制變量,而循環(huán)條件檢驗控制變量是否達到終止值。 *Java 程序設(shè)計74import javax.swing.JOptionPane;public class ch0303public static void main (String args)

48、 float sum =0; for (float i=0.01f; i=1.0f; i=i+0.01f) sum+=i; JOptionPane.showMessageDialog(null,The sum is +sum,Example 3.3 Output,JOptionPane.INFORMATION_MESSAGE);*Java 程序設(shè)計753.3.4 循環(huán)嵌套 嵌套循環(huán)由一個外層循環(huán)和一個或多個內(nèi)層循環(huán)組成。每當(dāng)外層循環(huán)重復(fù)時,就重新進入內(nèi)部循環(huán),并執(zhí)行所有需要的迭代。 3.3.5 循環(huán)結(jié)構(gòu)小結(jié) 一個循環(huán)程序結(jié)構(gòu)由四部分組成:初始化、循環(huán)條件、循環(huán)體和循環(huán)結(jié)束處理。 *Java 程

49、序設(shè)計76 初始化部分只在進入循環(huán)前執(zhí)行一次,完成循環(huán)前的準(zhǔn)備工作,如設(shè)置計算變量的初值、設(shè)置循環(huán)變量的初值,保證正確進入循環(huán)計算。 循環(huán)條件部分取決于循環(huán)計算繼續(xù)與否,它包含在循環(huán)結(jié)構(gòu)中,反復(fù)執(zhí)行。循環(huán)條件是指循環(huán)繼續(xù)的條件,它是一個邏輯表達式。滿足循環(huán)條件繼續(xù)執(zhí)行循環(huán)體,否則終止循環(huán),轉(zhuǎn)向循環(huán)結(jié)構(gòu)出口。 循環(huán)體是反復(fù)執(zhí)行的部分,它又分成兩部分:執(zhí)行迭代或窮舉的計算部分和循環(huán)變量的修改部分,遺忘循環(huán)變量的修改會出現(xiàn)“死循環(huán)”。 *Java 程序設(shè)計77設(shè)計循環(huán)程序結(jié)構(gòu)應(yīng)注意:(1)正確設(shè)置循環(huán)變量的初值,應(yīng)保證進入循環(huán);(2)如果循環(huán)變量的初值在循環(huán)體中設(shè)置,則為“死循環(huán)”;(3)循環(huán)體中不

50、可忘記包含循環(huán)變量的修改部分,并且保證循環(huán)變量趨向不滿足循環(huán)條件的方向的修改,否則會出現(xiàn)“死循環(huán)”;(4)避免使用實數(shù)型的循環(huán)變量和實數(shù)相等比較的循環(huán)條件,否則會出現(xiàn)“死循環(huán)”。 *Java 程序設(shè)計783.4 跳轉(zhuǎn)語句 跳轉(zhuǎn)語句break和continue,可以用在循環(huán)語句中為循環(huán)提供附加控制。其作用是:l break:立刻終止包含它的最內(nèi)層循環(huán)。通常與if語句一起使用。l continue:只結(jié)束當(dāng)前迭代,將程序控制轉(zhuǎn)移到循環(huán)體末尾。通常與if語句一起使用。 在switch語句中已經(jīng)用過關(guān)鍵字break,也可以將break和continue用在循環(huán)語句之中。 *Java 程序設(shè)計79pub

51、lic class ch0305 public static void main(String args) int sum=0; int number=0; while(number=100) break; System.out.println(The number is +number); System.out.println(The sum is +sum); *Java 程序設(shè)計80public class ch0306 public static void main(String args) int sum=0; int number =0; while(number20) numbe

52、r+; if(number=10|number=11) continue;sum+=number; System.out.println(The sum is +sum); *Java 程序設(shè)計81public class ch0307 public static void main(String args) System.out.println(21世紀(jì)的前十個閏年是:); int n=1; for(int year=2000;year3000;year+=4) if(year%100=0&year%400!=0) continue; if(n10) System.out.print(yea

53、r+,); n+; else System.out.println(year); break; *Java 程序設(shè)計823.5 常見問題的求解 任何可計算性問題的解決過程,都可以轉(zhuǎn)化為按指定順序執(zhí)行的一系列操作。通過確定要執(zhí)行的操作,并安排操作執(zhí)行的次序來解決問題的步驟稱為算法。程序流程圖、偽碼可以幫助程序員,在用某種編程語言編寫程序之前開發(fā)算法,更好地“思考”程序總體結(jié)構(gòu)。算法本身與編程語言無關(guān),語言只是實現(xiàn)算法的工具。 *Java 程序設(shè)計833.5.1 迭代算法迭代就是不斷由已知值推出新值,直到求解為止。顯然,迭代算法是利用計算機的高速運算能力和循環(huán)程序來實現(xiàn)。一般來說迭代由3個環(huán)節(jié)組成

54、:l 迭代初始值;l 迭代公式; 迭代終止條件。 *Java 程序設(shè)計84 class ch0309 public static void main(String args) float t=1,s=0; /迭代初始值 for(int i=0;i64;i+) s+=t; /迭代計算公式 t*=2; /迭代計算公式 System.out.println(sum= +s+t 263=+t/2); *Java 程序設(shè)計853.5.2 窮舉算法 窮舉也稱枚舉,是最常用的算法之一,它的基本思想是一一列舉各種可能進行的測試,從中找出符合條件的解。計算機能夠?qū)崿F(xiàn)高速運算,是由于它借助于循環(huán)結(jié)構(gòu)實現(xiàn)窮舉,它比

55、人工操作更為有效。 盡管計算機可以實現(xiàn)高速運算,但設(shè)計窮舉算法時,仍希望盡量縮小窮舉的規(guī)模?;蛘哒f,在保證思路嚴(yán)密,清晰,有條理,不漏掉解的前提下,盡量減小窮舉的規(guī)模。 *Java 程序設(shè)計86class ch0311 public static void main(String args) System.out.println(百、十、個位數(shù)的立方和就是該三位數(shù):); for(int i=1;i9;i+) for(int j=0;j9;j+) for(int k=0;k9;k+) int s=i*100+j*10+k; if(i*i*i+j*j*j+k*k*k=s) System.out.p

56、rintln(i=+i+,j=+j+,k=+k+,s=+s); *Java 程序設(shè)計873.5.3 復(fù)雜程序解決方案和方法 隨著要求編程解決的問題復(fù)雜程度的增加,面向?qū)ο蟪绦蛟O(shè)計應(yīng)運而生。面向?qū)ο蟪绦蛟O(shè)計方法,首先是使用“分而治之”的方法,使得程序的開發(fā)更好管理,然后利用程序的重用性,可以將已有的程序作為構(gòu)件創(chuàng)建新的程序,提高程序的可靠性,提高軟件開發(fā)的效率。 1.類的方法成員Java是純面向?qū)ο蟪绦蛟O(shè)計語言,方法是類的成員之一。類的方法和C語言的函數(shù)十分相似,但方法的定義和調(diào)用都遵循面向?qū)ο蟮囊?guī)則。 *Java 程序設(shè)計882.方法的調(diào)用 按方法的定義可分成:實例方法、靜態(tài)(類)方法和主類方

57、法。 實例方法是類的成員方法,必須在實例化后才能調(diào)用,并由類的實例(對象)冠名調(diào)用,稱給對象發(fā)消息。實例方法能對該類中的實例變量進行操作,也可以對類變量進行操作。 *Java 程序設(shè)計893結(jié)構(gòu)化編程(SP)解決方案 在結(jié)構(gòu)化程序設(shè)計(Structured Programming)中,對復(fù)雜問題求解采用“分而治之”,功能模塊分解的方法。即將應(yīng)用程序分解為一系列功能相對獨立的模塊,主程序調(diào)用處理模塊解決復(fù)雜問題。C語言采用函數(shù)作為模塊設(shè)計工具,Java提供模塊設(shè)計的工具是方法。 *Java 程序設(shè)計90class ch0312 public static void main(String arg

58、s) int a=48,b=27,g; g=result(a,b); if(g=-1) System.out.println(+a+和+b+無最大公約數(shù)!); else System.out.println(+a+和+b+的最大公約數(shù)為:+g); static int result(int a,int b) /輾轉(zhuǎn)相除求最大公約數(shù)模塊 int u,v,r; u=a; v=b; r=u%v; while(r!=0) System.out.println(u=+u+,v=+v+,r=+r); u=v; v=r; r=u%v; if(v=1) return -1; else return v; *J

59、ava 程序設(shè)計914.內(nèi)部類(internal class)解決方案 在類中定義的類稱內(nèi)部類或稱被包含的類,內(nèi)部類與包含類處于同一程序文件中,它能共享包含類的成員,結(jié)構(gòu)清晰、緊湊。如果包含類是應(yīng)用程序的主類,則它必須是靜態(tài)(static)類,否則編譯出錯。 *Java 程序設(shè)計92class ch0314 static int a=48,b=27; public static void main(String args) Zdgys s=new Zdgys(); System.out.println(+a+和+b+的最大公約數(shù)為:+s.result(); static class Zdgys

60、 public int result( ) int u,v,r; u=a; v=b; r=u%v; while(r!=0) u=v; v=r; r=u%v; return v; *Java 程序設(shè)計935.外部類解決方案 6.遞歸算法 在數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu)中經(jīng)常見到遞歸定義,遞歸就是“自己”直接或間接地定義或調(diào)用“自己”,或“自己”由“自己”部分地組成。 *Java 程序設(shè)計94 class factor /求n階乘的外部服務(wù)類 public long factorial(long n) if(n=1) return 1; /遞歸終止條件 else return n*factorial(n-1);

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論