版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java程序設(shè)計(jì)
第一講Java概述(上〕計(jì)算機(jī)信息與工程學(xué)院學(xué)習(xí)建議多思考,結(jié)合面向?qū)ο蟮膶?shí)例多動(dòng)手,寫程序很重要,從根本的開始,上課時(shí)帶練習(xí)本多上機(jī),上機(jī)調(diào)試程序是對(duì)所編程序的驗(yàn)證,根據(jù)出錯(cuò)信息找到缺乏一步一步學(xué)習(xí),跟上課程進(jìn)度信心和興趣很重要掌握編程思想是嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)態(tài)度的訓(xùn)練之一為以后的繼續(xù)學(xué)習(xí)或者從事計(jì)算機(jī)方面的工作打下根底課程目標(biāo)通過本課程學(xué)習(xí),掌握J(rèn)ava語言的根底知識(shí),理解和掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的根本思想,熟練地使用Java語言進(jìn)行簡(jiǎn)單程序的編寫、編譯以及調(diào)試工作,為以后能夠獨(dú)立進(jìn)行程序開發(fā)打下良好的根底,為本專業(yè)以后的開展創(chuàng)造條件,并通過安徽省計(jì)算機(jī)水平考試二級(jí)Java。課程目標(biāo)〔續(xù)〕知識(shí)方面:了解Java語言程序設(shè)計(jì)根底知識(shí)、產(chǎn)生背景及其主要特點(diǎn)理解Java面向?qū)ο缶幊痰母舅枷爰捌涮卣髡莆認(rèn)ava語言的數(shù)據(jù)類型、常量、變量、數(shù)組、表達(dá)式,Java語言的程序控制結(jié)構(gòu)以及編程的根本方法掌握異常處理、Java輸入輸出流和多線程編程知識(shí)了解網(wǎng)絡(luò)編程和數(shù)據(jù)庫(kù)開發(fā)知識(shí)技能方面:獨(dú)立編寫簡(jiǎn)單的Java應(yīng)用程序獨(dú)立編寫簡(jiǎn)單的Java小應(yīng)用程序〔JavaApplet〕應(yīng)用AWT和Swing常用組件設(shè)計(jì)圖形化用戶界面Java異常處理機(jī)制的簡(jiǎn)單應(yīng)用編寫簡(jiǎn)單的多線程程序使用Java輸入輸出流,實(shí)現(xiàn)對(duì)文件的處理理論教學(xué)大綱與內(nèi)容Java根底知識(shí)。Java語言的歷史與現(xiàn)狀、Java語言的特點(diǎn);Java程序的根本結(jié)構(gòu);Java開發(fā)環(huán)境;標(biāo)識(shí)符、常量和變量;Java根本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式;賦值語句。Java流程控制及遞歸。分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu);break語句、continue語句、return語句;遞歸。面向?qū)ο蟪绦蛟O(shè)計(jì)。面向?qū)ο缶幊痰母靖拍詈吞匦?;類的根本組成和使用;對(duì)象和方法的生成和使用;構(gòu)造方法;成員變量;繼承、封裝、多態(tài)的根本概念和應(yīng)用。常用類、包、接口的使用。包的創(chuàng)立與引用;接口的定義、實(shí)現(xiàn)和繼承;Collection類和抽象類;String類、StringBuffer類、System類、Math類、Random類、Vector類。異常處理。異常的類型;聲明異常、拋出異常、捕獲異常;try和catch語句;finally語句;自定義異常。理論教學(xué)大綱與內(nèi)容〔續(xù)〕Java圖形用戶界面設(shè)計(jì)。GUI概念;字體與顏色的操作;AWT常用組件應(yīng)用;Swing常用組件應(yīng)用;窗口與面板容器;布局管理器;事件處理。Applet小程序設(shè)計(jì)。Applet概念;Applet的程序框架;Applet與HTML;向Applet傳遞參數(shù);Java在多媒體中的應(yīng)用;Applet與Application區(qū)別。Java輸入輸出流。流和根本輸入輸出流的概念;File類;FileInputStream和FileOutputStream類;ByteArrayInputStream和ByteArrayOutputStream類;FileReader和FileWriter類;BufferedReader和BufferedWriter類、RandomAccessFile類。多線程。多線程的概念;線程的創(chuàng)立;線程的生命周期;線程的同步和控制。網(wǎng)絡(luò)編程和數(shù)據(jù)庫(kù)編程根底實(shí)驗(yàn)教學(xué)實(shí)驗(yàn)作用與目的上機(jī)操作是本課程必不可少的實(shí)踐環(huán)節(jié)。主要目的是鍛煉和培養(yǎng)實(shí)際操作技能和解決實(shí)際問題的能力。要求掌握J(rèn)ava語言程序設(shè)計(jì)、調(diào)試、運(yùn)行方法,理解面向?qū)ο蟪绦蛟O(shè)計(jì)的根本思想,能夠編寫Applet程序并理解其在網(wǎng)頁中的應(yīng)用,熟練構(gòu)建GUI圖形用戶界面;理解Java語言中異常的根本處理方法,能夠進(jìn)行多線程編程,能夠簡(jiǎn)單運(yùn)用Java語言進(jìn)行文件處理;能夠應(yīng)用Java編寫一個(gè)小型的應(yīng)用系統(tǒng)。實(shí)驗(yàn)要求根據(jù)完成課內(nèi)各項(xiàng)實(shí)驗(yàn)任務(wù),認(rèn)真填寫實(shí)驗(yàn)報(bào)告,記錄實(shí)驗(yàn)的運(yùn)行過程和結(jié)果。實(shí)驗(yàn)前要認(rèn)真復(fù)習(xí)上課講述的內(nèi)容,預(yù)習(xí)實(shí)驗(yàn)教程,按照實(shí)驗(yàn)要求準(zhǔn)備程序。實(shí)驗(yàn)時(shí),認(rèn)真調(diào)試程序,思考程序運(yùn)行結(jié)果。課后應(yīng)完成每個(gè)實(shí)驗(yàn)的思考與練習(xí)題,進(jìn)一步提高應(yīng)用和實(shí)踐能力。上機(jī)時(shí)不準(zhǔn)做與課程無關(guān)的事情參考文獻(xiàn)與資料:///:///,SunMicrosystems:///,sun中國(guó)技術(shù)社區(qū):///J2SE的幫助文檔呂鳳翥,馬皓編著,Java語言程序設(shè)計(jì),清華大學(xué)出版社,2006年BruceEckel著,陳昊鵬饒假設(shè)楠等譯,Java編程思想(第3版),機(jī)械工業(yè)出版社,2005年引例介紹兩個(gè)引例調(diào)色板,YinLi1加載圖片,YinLi2〔機(jī)器要安裝JDK和JCreator后,才能運(yùn)行)回憶數(shù)制,二進(jìn)制,十進(jìn)制,八進(jìn)制,十六進(jìn)制高級(jí)語言分類,機(jī)器語言,匯編語言,高級(jí)語言語言翻譯程序,解釋和編譯程序Excel中函數(shù)的應(yīng)用本講課程教學(xué)目標(biāo)了解Java的歷史了解Java特點(diǎn)理解Java平臺(tái)無關(guān)性的含義掌握J(rèn)avaapplication的結(jié)構(gòu)掌握J(rèn)avaapplication編輯、編譯與運(yùn)行的方法學(xué)會(huì)寫Javaapplication的結(jié)構(gòu)學(xué)會(huì)()的用法主要內(nèi)容Java的開展Java的特點(diǎn)Java運(yùn)行環(huán)境Java應(yīng)用程序舉例小結(jié)作業(yè)和實(shí)驗(yàn)Java的開展〔一〕Java是由SunMicrosystems的JamesGosling所領(lǐng)導(dǎo)的開發(fā)小組設(shè)計(jì)的。最初的版本是1991年的橡樹〔Oak〕,其目標(biāo)是設(shè)計(jì)獨(dú)立于平臺(tái)且能夠嵌入到不同的消費(fèi)類電子產(chǎn)品的程序。隨著Internet及WWW的開展,Web也需要在不同的環(huán)境不同的平臺(tái)上進(jìn)行程序的移植,這個(gè)變化導(dǎo)致了Oak的轉(zhuǎn)型及Java的誕生。1995年,Sun公司對(duì)Oak進(jìn)行了修改,用于開發(fā)Internet應(yīng)用程序,并將其命名為Java。Java的開展〔二〕Java的主要版本:Java2被分成J2SE、J2EE和J2ME三種平臺(tái)。J2SE,即Java2PlatformStandardEdition—Java2標(biāo)準(zhǔn)版,是一種開發(fā)和部署平臺(tái),提供了編寫桌面應(yīng)用程序所有必需的功能。J2EE,即Java2PlatformEnterpriseEdition—Java2企業(yè)版。J2EE是針對(duì)Internet環(huán)境下企業(yè)級(jí)應(yīng)用推出的一種全新概念的模型,適合于開發(fā)效勞器端應(yīng)用程序或者大型ERP系統(tǒng)等。J2ME,即Java2PlatformMicroEdition—Java2微型版。應(yīng)用于各種各樣的消費(fèi)電子產(chǎn)品上,例如智能卡、、PDA、電視機(jī)頂盒等方面。Java的特點(diǎn)Java是簡(jiǎn)單的容易學(xué)習(xí)和使用Java是面向?qū)ο蟮拿嫦驅(qū)ο蟪绦蛟O(shè)計(jì)的核心是類和對(duì)象,類是Java的根底Java是結(jié)構(gòu)中立的平臺(tái)無關(guān)性Java是平安的由于其多層的平安機(jī)制,系統(tǒng)得到了保護(hù)Java是可移植的一次開發(fā)可以在不同平臺(tái)上使用Java中一個(gè)對(duì)象的組成三角形邊長(zhǎng)1邊長(zhǎng)2邊長(zhǎng)3方法1:周長(zhǎng)方法2:面積
Java的平臺(tái)無關(guān)性即是結(jié)構(gòu)獨(dú)立的Java源文件經(jīng)過編譯之后生成字節(jié)碼文件.class,然后JVM解釋執(zhí)行該字節(jié)碼文件,而不是直接生成.exe可執(zhí)行文件,所以java是平臺(tái)無關(guān)的。
Java應(yīng)用程序舉例public
class
Simple
{
public
static
void
main(String[]
args)//輸出一個(gè)字符串{System.out.println("Thisisasimpleprogram!");}}注釋輸出結(jié)果類名或文件名Java應(yīng)用程序結(jié)構(gòu)(一)類,如Simple為類名。Java程序由一個(gè)或多個(gè)類組成。文件擴(kuò)展名是.Java。Java程序是大小寫敏感的。方法與main()方法,如System.println()是用于輸出字符串的方法。注意:每個(gè)Java應(yīng)用程序必須有一個(gè)main()方法作為入口。標(biāo)識(shí)符與關(guān)鍵字,如class、public、args等。如類的命名關(guān)鍵字是已系統(tǒng)定義好的,不能用于定義其他標(biāo)識(shí)符。語句,如println("Thisisasimpleprogram!")一條語句表示一個(gè)操作,語句后用”;”號(hào)結(jié)束。注釋,有三種//、/**/、/***/。在程序中適當(dāng)添加注釋,增加程序的可讀性,有助于理解程序。Java應(yīng)用程序結(jié)構(gòu)(二)塊,使用”{”和”}”表示其開始和結(jié)束。塊可以嵌套。Java應(yīng)用程序開發(fā)過程一個(gè)Java程序的開發(fā)過程通常包括創(chuàng)立、編譯、運(yùn)行等幾個(gè)階段。文本編輯器編輯程序,并命名為Simple.java。命令javacSimple.javajavac.exe編譯Simple.java文件,產(chǎn)生字節(jié)碼文件Simple.class。命令javaSimplejava.exe運(yùn)行字節(jié)碼文件,產(chǎn)生結(jié)果在JCreator集成環(huán)境中編輯、編譯和運(yùn)行,不需要鍵入命令。但需要將其環(huán)境參數(shù)設(shè)置好。
Java和JCreator運(yùn)行環(huán)境Java程序開發(fā)環(huán)境一般要提供編輯、編譯與運(yùn)行工具。Java程序的編輯可以使用任何一個(gè)編輯器,編譯與運(yùn)行那么通過Sun公司提供的Java開發(fā)工具箱JDK〔JavaDevelopmentToolkit〕進(jìn)行。JDK是一個(gè)簡(jiǎn)單的命令行工具集,包括軟件庫(kù)、編譯Java源程序的編譯器、執(zhí)行字節(jié)碼的解釋器以及其他的一些實(shí)用工具。JCreator是一個(gè)集編輯、編譯和運(yùn)行的集成環(huán)境,參考書后附錄1下載地址,://JDK和JCreator安裝演示,注意環(huán)境變量的設(shè)置。JCreator中演示程序Javaapplet的開發(fā)過程創(chuàng)立并編譯applet創(chuàng)立調(diào)用applet的HTML文件,如右圖。瀏覽applet在DOS命令行使用命令appletviewersimpleapplet.html用WWW瀏覽器在JCreator中運(yùn)行,不需要鍵入這些命令<html><head><title>TheexampleofJavaapplet</title></head><body><appletcode=”SimpleApplet.class”width=200height=50></applet></body></html>applet程序組成import語句導(dǎo)入語句,此處導(dǎo)入系統(tǒng)標(biāo)準(zhǔn)類類類繼承和關(guān)鍵字extends關(guān)鍵字extends表示程序中定義的類是緊隨其后的類〔已經(jīng)存在的類〕的擴(kuò)展。類SimpleApplet是Java中類Applet的擴(kuò)展,那么擴(kuò)展類SimpleApplet繼承了Applet類的所有功能與屬性。方法paint()和類Graphicspaint〔在有的語句中稱為函數(shù)〕方法是自定義的方法Javaapplet不是一個(gè)獨(dú)立的程序,需要在圖形方式下運(yùn)行。
編寫代碼時(shí)的幾點(diǎn)注意大小寫的區(qū)別標(biāo)點(diǎn)符號(hào)用半角養(yǎng)成良好的編程習(xí)慣用注釋語句采用縮進(jìn)格式小結(jié)課程相關(guān)內(nèi)容Java的起源與開展Java的根本特點(diǎn)Java環(huán)境Javaapplication的結(jié)構(gòu)和運(yùn)行第2講Java概述〔下〕及根本數(shù)據(jù)類型本講教學(xué)目標(biāo)和內(nèi)容掌握J(rèn)avaapplet的編輯、編譯、運(yùn)行方法理解Javaapplication與Javaapplet的聯(lián)系與區(qū)別初步了解類和對(duì)象的概念了解面向?qū)ο蟪绦蛟O(shè)計(jì)的方法理解關(guān)鍵字和標(biāo)識(shí)符掌握J(rèn)ava編程的根本元素:根本數(shù)據(jù)類型理解常量、變量及其應(yīng)用上講內(nèi)容回憶Java特點(diǎn)面向?qū)ο蟮娜齻€(gè)特征Java運(yùn)行環(huán)境Javaapplication結(jié)構(gòu)和運(yùn)行過程Javaapplet結(jié)構(gòu)Javaapplet程序舉例
//文件名SimpleApplet.javaimport;publicclassSimpleApplet{publicvoidpaint(Graphicsg){g.drawString(“Thisisasimpleapplet!”,15,15);}}程序編譯產(chǎn)生SimpleApplet.classpaint()和drawString()兩個(gè)方法Javaapplet的開發(fā)過程創(chuàng)立并編譯applet創(chuàng)立調(diào)用applet的HTML文件,如右圖。瀏覽applet在DOS命令行使用命令appletviewersimpleapplet.html用WWW瀏覽器在JCreator中運(yùn)行,不需要鍵入這些命令<html><head><title>TheexampleofJavaapplet</title></head><body><appletcode=”SimpleApplet.class”width=200height=50></applet></body></html>JCreator下運(yùn)行AppletJavaApplication與AppletJavaapplication特點(diǎn)Javaapplication程序是獨(dú)立完整的程序在命令行調(diào)用獨(dú)立的解釋器軟件即可運(yùn)行Javaapplication程序Javaapplication程序的主類必須有一個(gè)定義格式如下,publicstaticvoidmain〔Stringarsg[]〕的main()方法,這是Javaapplication程序執(zhí)行的入口點(diǎn)。Javaapplet特點(diǎn):Javaapplet程序是在WWW瀏覽器環(huán)境下運(yùn)行,即不是完整的獨(dú)立運(yùn)行程序。運(yùn)行Javaapplet程序的解釋器不是獨(dú)立的軟件,而是嵌在WWW瀏覽器中作為瀏覽器軟件的一局部。Javaapplet程序中不需要有main()方法,但是Javaapplet程序的主類必須是類庫(kù)中已定義好的類Applet或JApplet的子類。Javaapplet程序可以直接利用瀏覽器或者appletviewer運(yùn)行圖形用戶界面,而Javaapplication程序必須另外書寫專門代碼來創(chuàng)立自己的圖形界面。applet程序組成import語句導(dǎo)入語句,此處導(dǎo)入系統(tǒng)標(biāo)準(zhǔn)類類類繼承和關(guān)鍵字extends關(guān)鍵字extends表示程序中定義的類是緊隨其后的類〔已經(jīng)存在的類〕的擴(kuò)展。類SimpleApplet是Java中類Applet的擴(kuò)展,那么擴(kuò)展類SimpleApplet繼承了Applet類的所有功能與屬性。兩個(gè)方法paint()和類Graphicspaint〔在有的語句中稱為函數(shù)〕方法drawString()Javaapplet不是一個(gè)獨(dú)立的程序,需要在圖形方式下運(yùn)行。JCreator下運(yùn)行Applet編寫代碼時(shí)的幾點(diǎn)注意大小寫的區(qū)別標(biāo)點(diǎn)符號(hào)用半角養(yǎng)成良好的編程習(xí)慣用注釋語句采用縮進(jìn)格式面向?qū)ο蟪绦蛟O(shè)計(jì)(一)對(duì)象對(duì)象的屬性決定了對(duì)象是什么,行為決定了對(duì)象能夠做什么。在具體的程序設(shè)計(jì)中,對(duì)象的屬性是一些數(shù)據(jù)域的集合,行為那么是方法的集合。也就是說,對(duì)象是數(shù)據(jù)及其處理方法的一個(gè)封裝。面向?qū)ο蟪绦蛟O(shè)計(jì)(二)類是一個(gè)模板,對(duì)象是模板的一個(gè)產(chǎn)品。類決定了對(duì)象的結(jié)構(gòu),對(duì)象是類的一個(gè)具體實(shí)例,一個(gè)類可以有許多不同的對(duì)象,這些對(duì)象具有共同的屬性。先定義類,再有對(duì)象面向?qū)ο蟮娜齻€(gè)特性繼承、封裝和多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)過程第一章小結(jié)介紹了Java的起源與開展,討論了Java的根本特點(diǎn),通過具體的例子分析了Javaapplication及Javaapplet的組成,并討論了它們的關(guān)系。初步介紹了面向?qū)ο蟪绦蛟O(shè)計(jì)的根本方法,簡(jiǎn)單地說明了類及對(duì)象等概念。Java由于其開放源碼策略及其平臺(tái)無關(guān)性的特點(diǎn)已使其成為目前主流的開發(fā)工具。所謂的平臺(tái)無關(guān)性是指編寫一次程序就可以在任何平臺(tái)上運(yùn)行。Java是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,內(nèi)置了圖形程序設(shè)計(jì)、輸入輸出功能,支持網(wǎng)絡(luò)和多線程編程。每一個(gè)Java程序都是一個(gè)類的定義,每一個(gè)application必須有一個(gè)main()方法,是application運(yùn)行的入口。Javaapplet在Web瀏覽器中運(yùn)行,其根本結(jié)構(gòu)與application相同。為了運(yùn)行applet,必須創(chuàng)立一個(gè)調(diào)用applet的HTML文件,該文件通過<applet>標(biāo)記,指定applet字節(jié)碼文件等屬性。為了保證Web的平安性,需要在applet中增加適當(dāng)?shù)钠桨部刂?。面向?qū)ο蟪绦蛟O(shè)計(jì)語言主要使用類、對(duì)象和方法設(shè)計(jì)程序,它具有三個(gè)根本特性:封裝、繼承和多態(tài)。程序設(shè)計(jì)的根本過程通常由分析、設(shè)計(jì)、編碼、測(cè)試與運(yùn)行等5個(gè)步驟組成,比較而言,編碼是最簡(jiǎn)單的工作。在學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí),分析工作相對(duì)要簡(jiǎn)單一些,重點(diǎn)是設(shè)計(jì)類與對(duì)象。本章是一個(gè)概括性的介紹,相關(guān)內(nèi)容在本書的后續(xù)章節(jié)中詳細(xì)地說明。第二章教學(xué)目標(biāo)在程序中定義適宜的標(biāo)識(shí)符理解3種根本數(shù)據(jù)類型并能正確地使用根據(jù)需要定義變量正確地構(gòu)造表達(dá)式第二章引例三角形的三條邊,計(jì)算它的周長(zhǎng)與面積。分析:可以借鑒逐步求精的方法將一個(gè)大的問題分解為假設(shè)干個(gè)小問題,逐步逼近問題的解決方案。根據(jù)第1章討論的知識(shí),我們知道Java程序是由類組成的。因此可以將問題轉(zhuǎn)化為“設(shè)計(jì)一個(gè)計(jì)算三角形周長(zhǎng)與面積的類”。由于暫時(shí)還沒有學(xué)習(xí)類與對(duì)象的概念,我們先假設(shè)類已經(jīng)定義好了,直接考慮如何根據(jù)需要處理數(shù)據(jù)。引例〔續(xù)〕//文件名Ex2_1.javaimportjava.io.*;publicclassEx2_1{publicstaticvoidmain(String[]args){inta,b,c,p,s;floatarea;a=8;b=5;c=10;p=a+b+c;s=p/2area=(float)Math.sqrt((s-a)*(s-b)*(s-c)*s);System.out.println("Thelengthofthreesideis“+a+","+b+","+c);System.out.println("Thesidesoftriangleis:"+p);System.out.println("Theareaoftriangleis:"+area);}}引入類定義主類定義main()方法聲明變量給變量a、b、c賦值計(jì)算周長(zhǎng)和面積問題的設(shè)計(jì)思考1.第1步求精輸入三角形三條邊的邊長(zhǎng);計(jì)算周長(zhǎng)和面積;輸出結(jié)果。2.第2步求精確定輸入三角形三條邊的邊長(zhǎng)a、b和c的方法;根據(jù)公式p=a+b+c計(jì)算周長(zhǎng)p,令s=p/2;根據(jù)海倫公式area=((s-a)(s-b)(s-c)s)1/2,計(jì)算面積area;輸出結(jié)果。標(biāo)識(shí)符標(biāo)識(shí)符可以由字母、數(shù)字、下劃線〔_〕及美元符號(hào)〔$〕按一定的順序組合而成,但不能以數(shù)字開頭。例如,average、table12及$price等均為有效的標(biāo)識(shí)符,而5_step那么為非法標(biāo)識(shí)符。Java語言對(duì)標(biāo)識(shí)符還有如下規(guī)定標(biāo)識(shí)符的長(zhǎng)度不限,但不宜過長(zhǎng)。一般遵循“見名知義”原那么,即為標(biāo)識(shí)符取一個(gè)能代表其意義的名稱。標(biāo)識(shí)符區(qū)分字母的大小寫。如Student和student是兩個(gè)不同的標(biāo)識(shí)符。標(biāo)識(shí)符不能是關(guān)鍵字。引例中的標(biāo)識(shí)符關(guān)鍵字關(guān)鍵字是指被系統(tǒng)所保存使用并賦予特定意義的一些標(biāo)識(shí)符,這些關(guān)鍵字不能被編程人員用作標(biāo)識(shí)符。它們只能按照預(yù)先定義好的方式使用,不能作為其他用途。引例中的關(guān)鍵字。Java根本數(shù)據(jù)類型Java中的數(shù)據(jù)類型分為根本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型兩類。根本數(shù)據(jù)類型包括數(shù)值型、字符型及布爾型。復(fù)雜數(shù)據(jù)類型包括類、接口和數(shù)組等,也稱為引用類型,即通過對(duì)象的創(chuàng)立,獲得引用類型的值。引例中相關(guān)數(shù)據(jù)類型數(shù)值型(一)Java的數(shù)值型數(shù)據(jù)又分為整數(shù)和浮點(diǎn)數(shù)兩種類型,整數(shù)不帶小數(shù)點(diǎn),浮點(diǎn)數(shù)含有小數(shù)點(diǎn)。整數(shù)有byte(字節(jié)型)、short(短整型)、int(整型)及l(fā)ong(長(zhǎng)整型)等4種。浮點(diǎn)型數(shù)據(jù)有float(單精度浮點(diǎn)型)和double(雙精度浮點(diǎn)型)兩種。在數(shù)值后加l或L表示該數(shù)值是long類型,Java默認(rèn)所有的浮點(diǎn)值屬于double類型的數(shù)據(jù)。如果需要處理float類型的數(shù)據(jù)必須在數(shù)值后面加一個(gè)F或者f,例如:inti=3;intj=8;floatk=5.0f;longm=26l;數(shù)值型(二)存儲(chǔ)數(shù)據(jù)要占用一定的存儲(chǔ)空間,不同類型的數(shù)據(jù)所占用的存儲(chǔ)空間不同。所有數(shù)值類型依據(jù)其占用的內(nèi)存空間大小進(jìn)行區(qū)分。在設(shè)計(jì)程序的過程中,程序員需要選擇大小適宜的變量類型,否那么有可能造成內(nèi)存空間的浪費(fèi)。字符型Java中的字符型數(shù)據(jù)用char表示,它的值用16個(gè)bit來存儲(chǔ),取值范圍是0~65536。它表示的是Unicode碼表所定義的國(guó)際化字符集中所收集的所有字符。Java中的字符可以比較大小,類似于ASCII碼的大小比較。例如,chargrade1='A',grade2='B';Java用單引號(hào)來表示字符型數(shù)據(jù)。如'A'、'c'、'#'、'&'與'9'等等。布爾型布爾型〔boolean〕是一種表示邏輯值的簡(jiǎn)單數(shù)據(jù)類型。它的取值只能是常量true或false這兩個(gè)值中的一個(gè),在存儲(chǔ)器中占8個(gè)bit。通常用于程序中的一些邏輯判斷從而對(duì)程序的運(yùn)行進(jìn)行控制。例如,根據(jù)成績(jī)的及格線60分,判斷考試是否通過。intgrade;booleanpassing;if(grade>=60)passing=true;elsepassing=false;本講小結(jié)繼續(xù)第一章內(nèi)容,JavaApplet由引例開始說明第二章內(nèi)容標(biāo)識(shí)符關(guān)鍵字?jǐn)?shù)值型、字符型、布爾型賦值語句第3講Java數(shù)據(jù)類型和表達(dá)式(上)上機(jī)存在的問題步驟不清楚,文件位置較亂,文件名與類名不一致,大小寫常寫錯(cuò),注釋符刪除不全(綠字為注釋),給出如下具體步驟:在最后一個(gè)盤符建立文件夾Java翻開JCreator建立application方法File-New-File-”FileType”-JavaClasses”-”JavaClass”-Name(文件名就是類名,不用擴(kuò)展名),在Location位置選擇剛剛建立的文件夾Java,存放自己的文件單擊Finish后,在編輯區(qū)輸入程序。上機(jī)存在的問題(續(xù))建立applet方法創(chuàng)立applet類,F(xiàn)ile-New-File-”FileType”-JavaClasses”-”AppletClass”-Name在Location位置選擇剛剛建立的文件夾Java,存放自己的applet文件單擊Finish后,在編輯區(qū)輸入程序,按F5編譯運(yùn)行創(chuàng)立HTML文件,F(xiàn)ile-New-File-”FileType”-”other”-HTMLApplet”在Location位置選擇剛剛建立的文件夾Java,存放自己的HTML文件單擊Finish后,在編輯區(qū)輸入程序,填入applet類文件,按F5編譯運(yùn)行DOS提示符下運(yùn)行Java方法用編輯工具,如記事本編寫MyFirstJava.java;DOS提示符下鍵入:javacMyFirstJava.java編譯源程序;在DOS提示符下鍵入:javaMyFirstJava運(yùn)行源程序。課堂練習(xí)編寫Java程序,在屏幕上顯示“Howareyou?”和“I’mfine.Thankyou!”。編寫Java小程序,參考上述Javaapplet例程,在屏幕中央輸出兩行語句“Hello,China!”和“Hello,Asia!”上節(jié)課程回憶第一章簡(jiǎn)單回憶常量、變量和賦值語句本講主要內(nèi)容和教學(xué)目標(biāo)理解常量、變量的應(yīng)用理解類型轉(zhuǎn)換,會(huì)運(yùn)用自動(dòng)轉(zhuǎn)換運(yùn)算符和表達(dá)式概念算術(shù)運(yùn)算符和算術(shù)表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式綜合舉例常量(一)常量〔constant〕,顧名思義就是在程序運(yùn)行過程中其值不會(huì)被改變的量,常量也叫常數(shù),也被稱為“字面量”。在Java語言中,常量按其數(shù)據(jù)類型可分為整型常量、浮點(diǎn)型常量、字符型常量、字符串常量與布爾型常量等5種類型。整型常量和浮點(diǎn)型常量都屬于數(shù)值型。字符型常量是指Unicode字符集中的所有單個(gè)字符,包括可以打印的字符和不可打印的控制字符。常量(二)字符型常量的表示形式有四種:(1)以單引號(hào)括起來的單個(gè)字符,如‘a(chǎn)”。(2)以單引號(hào)括起來的“\”加三位八進(jìn)制數(shù),形為'\ddd',其中d可以是0~7中的任一個(gè)數(shù),如'\141'表示字符'a'。其中ddd的取值范圍只能在八進(jìn)制數(shù)的000~777之間,因而它不能表示出Unicode字符集中的全部字符。(3)以單引號(hào)括起來的"\u"加四位十六進(jìn)制數(shù),可以表示出Unicode字符集中的所有字符。(4)對(duì)于那些不能被直接包括的字符以及一些控制字符。Java中的轉(zhuǎn)義字符轉(zhuǎn)義序列含義轉(zhuǎn)義序列含義\'單引號(hào)\f換頁\"雙引號(hào)\n換行\(zhòng)\反斜杠\r回車鍵\b退格\t水平制表符importjava.io.*;publicclassExer1_2{publicstaticvoidmain(Stringargs[]){chari='';System.out.println("Inputaintergerorcharacter:");try{i=(();}catch(IOExceptione){ }System.out.println("Theinputis\'"+i+"\'");}}常量(三)字符串常量就是用雙引號(hào)括起來的由零到多個(gè)字符組成的字符序列。如“HelloWorld!”,“Iamaprogrammer.\n”等。字符常量的八進(jìn)制、十六進(jìn)制表示法和轉(zhuǎn)義序列在字符串中同樣可用。布爾型常量只有兩個(gè)值,true和false。
常量定義格式:
final
數(shù)據(jù)類型常量名稱=常量值;常量舉例publicclassEx2_2{publicstaticvoidmain(Stringargs[]){finalintDay=30;finaldoublePay=45.6;finalStringStr="Itisbegin!";doubletotal;total=Day*Pay;System.out.println(Str);("*_________________________*");System.out.println("Day="+Day+"\tPay="+Pay);System.out.println("total="+total);}}定義了三個(gè)常量變量變量〔variables〕是Java程序中的一個(gè)根本存儲(chǔ)單元,是在程序運(yùn)行過程中其值可以改變的量。一個(gè)變量蘊(yùn)含有三個(gè)含義:變量的名稱。變量的名稱簡(jiǎn)稱變量名,變量名是用戶自己定義的標(biāo)識(shí)符,它說明了變量的存在性和唯一性;變量的屬性。即變量的數(shù)據(jù)類型;變量的初值。變量的值是指存放在變量名所標(biāo)記的存儲(chǔ)單元中的數(shù)據(jù)。例如,intmath=78,english=80;賦值語句賦值語句的一般形式為:floatvalue,price;value=0.0f;//value初值為0price=0.5f;value=12*price;變量名=表達(dá)式;賦值語句執(zhí)行的過程中,先計(jì)算出表達(dá)式的值,然后把該值存儲(chǔ)到賦值運(yùn)算符〔=〕左邊的變量所代表的存儲(chǔ)單元,并覆蓋其原有的值。publicclassEx2_3{publicstaticvoidmain(Stringargs[]){bytea=10;shortb=020;intc=0x30;bytee=129;floatff=1.234f;doubledd=34.56d;("字節(jié)型變量的值:a="+a);("短整型變量的值:b="+b);("整型變量的值:c="+c);("長(zhǎng)整型變量的值:d="+d);("單精度度浮點(diǎn)型的值:ff="+ff);("雙精度浮點(diǎn)型的值:dd="+dd);}}
程序中定義了數(shù)值型的四種變量和浮點(diǎn)型的兩種變量,注意這六種類型變量定義的關(guān)鍵字,分別是它們的數(shù)據(jù)類型。程序中定義了的變量b和c分別以八進(jìn)制和十六進(jìn)制表示,輸出結(jié)果以十進(jìn)制數(shù)表示,因此結(jié)果為b=16和c=48。
變量舉例
publicclassEx2_4{publicstaticvoidmain(Stringargs[]){charc1='a';charc2='\141';charc3='\u0061';charc4='\\';booleanf1=true,f2;f2=4<3;("字符型變量的值:c1="+c1+""c2="+c2+"c3="+c3);("字符型變量的值:c4="+c4);("布爾型變量的值:f1="+f1+"f2="+f2);}}程序中定義了四個(gè)字符型變量,用關(guān)鍵字char定義字符型變量,其中c1、c2、c3的定義分別使用字符型的三種表示方法,c1以單引號(hào)括起來,c2以八進(jìn)制表示,c3以Unicode編碼表示,運(yùn)行結(jié)果均是字符'a'。c4用轉(zhuǎn)義字符輸出'\'。布爾型變量f1定義時(shí)賦值為true,f2賦值為4<3,這是一個(gè)比較表達(dá)式,結(jié)果為false。變量舉例(續(xù)〕類型轉(zhuǎn)換(之一自動(dòng)轉(zhuǎn)換)
自動(dòng)轉(zhuǎn)換是在程序運(yùn)行過程中不需人為干預(yù)而自動(dòng)進(jìn)行的從一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換。有兩種類型:賦值轉(zhuǎn)換兩種數(shù)據(jù)類型必須是兼容的,并且目標(biāo)數(shù)據(jù)類型的取值范圍比源數(shù)據(jù)類型的取值范圍大。如,byte類型可以轉(zhuǎn)換為short、int、long、float、double。
表達(dá)式中的自動(dòng)轉(zhuǎn)換1.Java在分析表達(dá)式時(shí)會(huì)自動(dòng)把表達(dá)式中的byte和short型數(shù)據(jù)轉(zhuǎn)換成int類型數(shù)據(jù)。如上圖所示,編譯會(huì)出錯(cuò)。2.當(dāng)表達(dá)式中有兩個(gè)數(shù)據(jù)類型不同的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),總是先把取值范圍小的數(shù)據(jù)轉(zhuǎn)換成取值范圍大的數(shù)據(jù)的類型然后再進(jìn)行運(yùn)算。如右圖所示結(jié)果為double型shorta,b;a=50;b=a/2;inta;floatb;doublec;c=a+b+c;類型轉(zhuǎn)換(之二強(qiáng)制類型轉(zhuǎn)換)對(duì)于不能自動(dòng)進(jìn)行的類型轉(zhuǎn)換,這時(shí)我們就要強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的一般格式為:其中,目標(biāo)數(shù)據(jù)類型是指要將被轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換成的數(shù)據(jù)類型;被轉(zhuǎn)換數(shù)據(jù)可以是變量、表達(dá)式等。如要把double型變量money的值轉(zhuǎn)換成int型,形式為:〔int〕money。〔目標(biāo)數(shù)據(jù)類型〕被轉(zhuǎn)換數(shù)據(jù)//從鍵盤讀入一個(gè)字符,并輸出這個(gè)字符。importjava.io.*;publicclassEx2_6{publicstaticvoidmain(Stringargs[]){charch=‘’;System.out.println("Inputaintergerorcharacter:");try{ ch=(char)System.in.read();//從鍵盤中讀入一個(gè)字符 }catch(IOExceptione) { }System.out.println("Theinputis\’"+ch+"\’");}}
程序定義了一個(gè)字符型變量ch,接收輸入的字符。System.in.read()表示從鍵盤輸入流中讀入一個(gè)字節(jié)并返回它的值,返回值是0到255的int值,需要進(jìn)行異常處理。由于返回值為int型,因此要輸出這個(gè)字符,須強(qiáng)制轉(zhuǎn)換為char型。程序中用了try-catch語句進(jìn)行異常處理。
運(yùn)算符與表達(dá)式一個(gè)常量或一個(gè)變量是最簡(jiǎn)單的表達(dá)式。一般的表達(dá)式是指由數(shù)據(jù)和運(yùn)算符連接在一起的符合Java語法規(guī)那么的式子。如a=1、a+b-c*d、a<b等。這里的數(shù)據(jù)是常量或變量,表達(dá)式中數(shù)據(jù)的連接符+、-、*、=及<就是運(yùn)算符。Java的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等,Java表達(dá)式主要有算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式等。算術(shù)運(yùn)算符和算術(shù)表達(dá)式單目運(yùn)算符是指只對(duì)一個(gè)操作數(shù)運(yùn)算的運(yùn)算符。Java中的單目運(yùn)算符有++〔自增〕、--〔自減〕和-〔取反〕等3種類型。單目運(yùn)算符++與--可以位于操作數(shù)的左邊或右邊,但在使用時(shí)是有差異的。如:a++、a--:表示先使用a,再使a增〔減〕1;++a、--a:表示先使a增〔減〕1,再使用a。雙目運(yùn)算符是指算術(shù)運(yùn)算符的左、右兩邊均要有操作數(shù)。Java中的雙目算術(shù)運(yùn)算符有+(和運(yùn)算)、-(差運(yùn)算)、*(積運(yùn)算)、/(除運(yùn)算)及%(求余運(yùn)算)。算術(shù)運(yùn)算符連接的操作數(shù)為數(shù)值型。由算術(shù)運(yùn)算符連接的式子稱為算術(shù)表達(dá)式。publicclassEx2_7{publicstaticvoidmain(Stringargs[]){chara=97;intb,c=14,f=3;floatd=0.6f,e,g;a++;//自加運(yùn)算b=c/f; c=c%f;d++; e=f*d;g=e%f;System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);System.out.println("g="+g);}}算術(shù)運(yùn)算例如課堂練習(xí)設(shè)inta=3,intb1,b2,b3;doubled=1.0,e1,e2;b1=45+43%5*(23*3%2);b2=45+45*50%(--a);e1=1.5*3+(++d);e2=1.5*3+d++;b3%=3/a+3;計(jì)算相關(guān)變量值。關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符是用來比較兩個(gè)值之間的大小關(guān)系的。關(guān)系運(yùn)算的結(jié)果是布爾〔boolean〕型,結(jié)果為真〔true〕或假〔false〕。Java中關(guān)系運(yùn)算符有6種:==、!=、>、<、>=、<=例如,inta=5,b=8;booleanc=a>b;那么結(jié)果c=false。邏輯運(yùn)算符和邏輯表達(dá)式Java中共有6個(gè)邏輯運(yùn)算符。如果它們的操作數(shù)是布爾類型的數(shù)據(jù),其結(jié)果也是布爾類型。Java邏輯運(yùn)算符:!、&、^、|、&&、||。&&和||也被稱為“短路邏輯運(yùn)算符”,在運(yùn)算過程中會(huì)產(chǎn)生“短路效應(yīng)”,如a&&b,當(dāng)a為false時(shí)不再判斷b,直接判定a&&b的值為false;假設(shè)是a||b,當(dāng)a為true時(shí)不再判斷b,直接判定a||b的值為true。而對(duì)于&和|那么不會(huì)出現(xiàn)這種情況,它們是先計(jì)算出兩邊操作數(shù)的值,然后再進(jìn)行邏輯判斷。另外,當(dāng)&、^和|的操作數(shù)為布爾類型時(shí)它們是邏輯運(yùn)算符,進(jìn)行邏輯運(yùn)算,但假設(shè)操作數(shù)為整數(shù)及字符時(shí),它們會(huì)作為位運(yùn)算符進(jìn)行位運(yùn)算。邏輯運(yùn)算符運(yùn)算
運(yùn)算符名稱例子功能!邏輯非!aa為真時(shí)值為假,反之亦反&邏輯與a&ba、b均為真時(shí)值為真,否則為假^邏輯異或a^ba、b同值時(shí)值為假,異值時(shí)為真|邏輯或a|ba、b均為假時(shí)值為假,否則為真&&邏輯與a&&ba、b均為真時(shí)值為真,否則為假|(zhì)|邏輯或a||ba、b均為假時(shí)值為假,否則為真publicclassEx2_8{publicstaticvoidmain(Stringargs[]){inta=3,b=8;booleanc,d,e=false,f1,f2,g=true;c=a>b;d=c&&(e=a<b);//c為false,e值未被改變f1=g||(e=a<b);//g為true,e值未被改變f2=f1|(g=a>b);//g值被改變System.out.println("a="+a);System.out.println("b="+b);System.out.println("a>b="+c);System.out.println("c&&(e=a<b)="+d);System.out.println("e="+e);System.out.println("f2="+f2);System.out.println("g="+g);}}關(guān)系表達(dá)式和邏輯表達(dá)式舉例本講小結(jié)Java常量、變量的概念Java根本數(shù)據(jù)類型的定義和簡(jiǎn)單應(yīng)用Java的賦值和類型轉(zhuǎn)換Java運(yùn)算符Java表達(dá)式第4講Java運(yùn)算符和表達(dá)式〔下〕及使用類和對(duì)象編程〔上〕本講教學(xué)目標(biāo)和教學(xué)內(nèi)容了解其他運(yùn)算符理解類和對(duì)象的根底知識(shí)掌握類和對(duì)象的創(chuàng)立與應(yīng)用理解成員變量的定義和初始化掌握方法的創(chuàng)立和調(diào)用形式掌握對(duì)象的創(chuàng)立和引用理解垃圾回收機(jī)制上講內(nèi)容回憶變量的定義和使用運(yùn)算符和表達(dá)式例2.1的回憶三元運(yùn)算符
Java中,有一種特別的三元運(yùn)算符構(gòu)成的條件表達(dá)式。使用格式如下:其中的?和:稱為三元運(yùn)算符,它們必須一同出現(xiàn),此運(yùn)算符需要三個(gè)操作數(shù)。其中語句1和語句2可以是復(fù)合語句。意思是,當(dāng)條件表達(dá)式值為true時(shí),執(zhí)行語句1,否那么執(zhí)行語句2。例如,〔a>b〕?a:(c>d)?c:d其中a=5,b=8,c=1,d=9。根據(jù)右結(jié)合性,應(yīng)先計(jì)算(c>d)?c:d。因?yàn)?>9為false,故取d=9為該表達(dá)式的結(jié)果。再計(jì)算〔a>b〕?a:d,結(jié)果為9。條件表達(dá)式?語句1:語句2位運(yùn)算符Java中,可以使用位運(yùn)算直接對(duì)整數(shù)類型和字符類型的數(shù)據(jù)的位進(jìn)行操作。Java中位運(yùn)算符有:~、<<、>>、>>>、&、^、|。Java中的數(shù)是以補(bǔ)碼表示的。正數(shù)的補(bǔ)碼就是其原碼,負(fù)數(shù)的補(bǔ)碼是其對(duì)應(yīng)的正數(shù)按位取反〔1變?yōu)?,0變?yōu)?〕后再加1。例:bytea=7,b=-7,c=15,d=42,那么a:00000111b:11111001c:00001111d:00101010~c=-16:11110000a<<2=28:00011100b>>2=-2:11111110b>>>2=62:00111110c&d=10:00001111c^d=37:00001111c|d=47:00001111&00101010^00101010|00101010
000010100010010100101111賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符:=。例如,a=b就是把變量b的值賦給變量a,那么b與a的值相同,a原來的值丟棄。賦值運(yùn)算符除了上面的“=”之外還有一些擴(kuò)展的賦值運(yùn)算符。這些擴(kuò)展賦值運(yùn)算符的使用不僅可以使程序表達(dá)簡(jiǎn)練,而且可以提高程序的編譯速度。擴(kuò)展賦值運(yùn)算符就是把賦值運(yùn)算符與算術(shù)運(yùn)算符、邏輯運(yùn)算符或位運(yùn)算符中的雙目運(yùn)算符結(jié)合起來而形成的賦值運(yùn)算符。擴(kuò)展賦值運(yùn)算符:+=-=*=/=%=&=^=|=<<=>>=>>>=在JCeator中設(shè)置從命令行輸入?yún)?shù)的方法在JCreator中設(shè)置方法如下:
單擊菜單:configure\options
在彈出窗口選:JDK
Tools
在select
tool框選擇:run
application
再選擇defalut
按edit按鈕
單擊parameters頁面,在prompt
for
main
function
argu復(fù)選項(xiàng)打勾,單擊ok
運(yùn)行時(shí)那么彈出一個(gè)要求你輸入?yún)?shù)的對(duì)話框!運(yùn)算符優(yōu)先級(jí)
在一個(gè)表達(dá)式中可能有多個(gè)數(shù)據(jù)與運(yùn)算符,那么,計(jì)算這個(gè)表達(dá)式時(shí)應(yīng)該先計(jì)算哪些后計(jì)算哪些呢?這就要為運(yùn)算符規(guī)定它們的優(yōu)先級(jí)。Java運(yùn)算符的運(yùn)算級(jí)別共分為15級(jí),其中1級(jí)優(yōu)先級(jí)最高,15級(jí)最低。例如,計(jì)算下面的表達(dá)式的值。3*18+4/2顯然上面表達(dá)式的運(yùn)算結(jié)果為56,如果我們將此改成下面的表達(dá)式:3*〔18+4〕/2那么其運(yùn)算結(jié)果為33。因?yàn)槔ㄌ?hào)級(jí)別最高,先計(jì)算括號(hào)里的數(shù)據(jù),再按照算術(shù)運(yùn)算的規(guī)那么,相同級(jí)別的先左后右,先乘以3再除以2。//判斷2006年是否閏年。publicclassEx2_9{publicstaticvoidmain(Stringargs[]){
intyear=2006;booleant;t=year%400==0||year%4==0&&year%100!=0;System.out.println(year+"isintercalaryyear="+t);}}語句t=year%400==0||year%4==0&&year%100!=0;整體是賦值運(yùn)算,右邊局部是邏輯表達(dá)式,其中包含算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算。如果采用從命令行接收數(shù)據(jù)的方法,將大大改善程序。將語句:intyear=2006;修改為下面兩條語句即可。intyear;year=Integer.parseInt(args[0]);課堂練習(xí)設(shè)intx=5,y=4,z=8;booleant1,t2,t3,t4,t5;t1=〔true〕&&(x>y);t2=(x+y>z||true)&&(x<y);t3=x<z&&4>8||false;t4=x+y-z>0&&x*y<z||y>x;t5=t1&&t2||(t3&&t4)計(jì)算相關(guān)變量的值。實(shí)例1請(qǐng)將一個(gè)四位正整數(shù)的個(gè)、十、百、千位4個(gè)數(shù)的和求出,并分別輸出這四個(gè)數(shù)及它們的和。分析:采用自頂向下、逐步求精的方法,先給出總的框架,再分析問題,然后逐步細(xì)化。1.總體步驟(1)輸入一個(gè)四位數(shù):3587;(2)分別求出個(gè)、十、百、千四個(gè)數(shù),并將這四個(gè)數(shù)相加;(3)輸出四個(gè)數(shù)的和。2.逐步細(xì)化及分析(1)定義一個(gè)正整數(shù),保存在一個(gè)整型變量s中;(2)這一步是數(shù)據(jù)處理過程,要求完成的任務(wù)較多。根據(jù)數(shù)學(xué)運(yùn)算方便,從高位開始,先分別求出四個(gè)位上的數(shù),再進(jìn)行相加。千位=s/1000,百位=(s-千位*1000)/100,十位=(s%100)/10,個(gè)位=s%10,和=千位+百位+十位+個(gè)位(3)分別輸出這五個(gè)數(shù)。
實(shí)例1〔續(xù)〕//文件名Ex2_10.javaclassEx2_10{publicstaticvoidmain(String[]args){ inta,b,c,d,add; ints=3587; a=s/1000; b=(s-a*1000)/100; c=(s%100)/10; d=s%10;add=a+b+c+d; ("千位數(shù)是"+a+"\t百位數(shù)是"+b);("十位數(shù)是是"+c+"\t個(gè)位數(shù)是"+d); ("這個(gè)四位數(shù)"+s+"的各位數(shù)字的和是:"+add); }}實(shí)例2
從鍵盤輸入一個(gè)整數(shù),進(jìn)行除法運(yùn)算。分析:從鍵盤輸入一個(gè)整數(shù),應(yīng)用命令行參數(shù)的方法可以獲得。然而進(jìn)行除法運(yùn)算時(shí),由于除數(shù)可能為零,會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。需采用異常處理的方法解決。i=Integer.parseInt(args[0]);意思是將從命令行接收的第一個(gè)參數(shù)(存放在數(shù)組元素args[0]中),轉(zhuǎn)換成整數(shù)送給變量i。實(shí)例2〔續(xù)〕importjava.io.*;publicclassEx2_11{publicstaticvoidmain(Stringargs[]){inti;System.out.println("Inputaintegerorcharacter:");i=Integer.parseInt(args[0]);
//從命令行接收一個(gè)數(shù)try{ intj=10/i; System.out.println("Theinputis\’"+i+"\'"+"j="+j);} catch(ArithmeticExceptione){System.out.println("theexceptionis:"+e);}}}
實(shí)例3(一)年利率、貸款年數(shù)和貸款金額,計(jì)算月歸還金額和總歸還金額,并將它們顯示。分析:1.給出月歸還金額和總歸還金額的公式月歸還金額=(貸款金額*月利率)/(1-1/(1+月利率)貸款年數(shù)*12)總歸還金額=月歸還金額*年數(shù)*122.由第1步看到,只要知道月利率即可求出結(jié)果。而年利率,因此,月利率=年利率/12。3.輸入其他參數(shù),代入第1步公式,計(jì)算出結(jié)果,最后輸出結(jié)果。publicclassEx2_12{publicstaticvoidmain(Stringargs[]){ doublenln; intyears; doubledj; System.out.println("Enteryearlyrate,forexample2.25:"); nln=DefInput.readDouble(); doubleyln=nln/1200; System.out.println("Enternumberofyears,forexample8:"); years=DefInput.readInt(); System.out.println("Enterloadammount,forexample30000:"); dj=DefInput.readDouble(); doublemonthlyPay=dj*yln/(1-1/(Math.pow(1+yln,years*12))); doubletotalPay=monthlyPay*years*12; System.out.println("Themonthlypayis:"+monthlyPay); System.out.println("Thetotalpayis:"+totalPay);}}程序中的定義的變量都必須進(jìn)行說明,并根據(jù)存儲(chǔ)的數(shù)據(jù)定義了適宜的類型。例如,年份為整型,金額定義為雙精度型。從鍵盤上讀入數(shù)據(jù)用DefInput類的方法readInt()和readDouble()。但要保證DefInput類與Ex2_12.class類在一個(gè)目錄下,才能這樣用上面兩個(gè)方法。第二章小結(jié)Java雖然是面向?qū)ο蟪绦蛟O(shè)計(jì),它的核心是對(duì)象,但它也是一種程序設(shè)計(jì)語言。作為一門語言,我們必須掌握它的根本語法結(jié)構(gòu),應(yīng)用根本語法規(guī)那么完成一項(xiàng)功能。Java語言的每條語句就是一個(gè)表達(dá)式。單個(gè)的常量、變量是特殊的表達(dá)式,一般意義上的表達(dá)式由運(yùn)算符將常量、變量連接起來。任何常量、變量均有數(shù)據(jù)類型,Java中的數(shù)據(jù)類型包括簡(jiǎn)單數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型。簡(jiǎn)單數(shù)據(jù)類型分為三類,數(shù)值型〔包括整型、浮點(diǎn)型float、雙精度型double〕字符型char及布爾型boolean,整數(shù)類型又分為byte、short、int及l(fā)ong四種。每種根本數(shù)據(jù)類型的內(nèi)存大小和默認(rèn)值均不同。程序設(shè)計(jì)要進(jìn)行各種運(yùn)算,如算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算等,Java提供了這些運(yùn)算的運(yùn)算符,用運(yùn)算符將相關(guān)數(shù)據(jù)連接起來,完成一個(gè)任務(wù)。有時(shí)需要連接不同數(shù)據(jù)類型,那么要進(jìn)行類型轉(zhuǎn)換。創(chuàng)立類(引例)例3.1現(xiàn)在我們?cè)賮砜吹?章例題2.1,在其逐步求精的過程中,并沒有很好的表達(dá)面向?qū)ο蟮奶攸c(diǎn),現(xiàn)將其作如下的修改。分析:可以用逐步求精的方法逐步逼近問題的解決方案,Java程序是由類組成的,可以將問題轉(zhuǎn)化為“設(shè)計(jì)一個(gè)計(jì)算三角形周長(zhǎng)與面積的類”。引例求精分析(1)定義一個(gè)計(jì)算三角形周長(zhǎng)與面積的類Triangle引入標(biāo)準(zhǔn)類聲明類確定三角形屬性〔定義三條邊〕計(jì)算周長(zhǎng)〔定義方法side〕計(jì)算面積〔定義方法area〕(2)定義主類引用標(biāo)準(zhǔn)類聲明主類及main方法定義三條邊的具體值調(diào)用計(jì)算周長(zhǎng)方法調(diào)用計(jì)算面積方法輸出結(jié)果引例代碼importjava.io.*;classTriangle{privateintd1,d2,d3;publicvoidsetSide(intx,inty,intz){d1=x;d2=y;d3=z;}publicintgirth(){returnd1+d2+d3;}floatarea(){intp;floats;p=(d1+d2+d3)/2;s=(float)Math.sqrt(p*(p-d1)*(p-d2)*(p-d3));returns;}}publicclassEx3_1{publicstaticvoidmain(Stringargs[]){inta,b,c,zhouch,mianji;a=8;b=6;c=10;Triangletri=newTriangle();tri.setSide(a,b,c);zhouch=tri.girth();floatmianji=tri.area();("三角形周長(zhǎng)="+zhouch);("三角形面積="+area);}}定義類triangle的屬性創(chuàng)立方法創(chuàng)立方法girth()求周長(zhǎng)及area()求面積聲明和創(chuàng)立類triangle對(duì)象調(diào)用上述三個(gè)方法程序分析:上述程序中,定義了名稱為Triangle的類。類體中,數(shù)據(jù)d1、d2和d3是類的屬性,用來定義三角形的三邊,方法setSide()設(shè)置三角形的三邊,方法girth()求三角形的周長(zhǎng),方法area()是計(jì)算三角形面積。主方法中,創(chuàng)立了Triangle的對(duì)象并存儲(chǔ)到對(duì)象變量tri中,tri是Triangle類的實(shí)例化。根據(jù)tri.setSide()中獲得的三角形的邊長(zhǎng),tri.girth()調(diào)用類Triangle中的firth()方法計(jì)算周長(zhǎng),結(jié)果送給變量zhouch;tri.area()調(diào)用類Triangle中的area()方法計(jì)算面積,結(jié)果返回到變量area中。類的定義類是一種復(fù)雜數(shù)據(jù)類型,定義對(duì)象的結(jié)構(gòu)。將屬性和方法封裝在一個(gè)類中,在Java類中,屬性以數(shù)據(jù)來描述,方法用來實(shí)現(xiàn)對(duì)象的行為。類的根本格式如下:數(shù)據(jù)值表示存儲(chǔ)在每個(gè)對(duì)象里的結(jié)果,而方法那么表示對(duì)象可以提供的功能。數(shù)據(jù)和方法統(tǒng)稱為類的成員,數(shù)據(jù)成員也稱為實(shí)例變量。class類名//類說明{//花括號(hào)中為類體局部<類的數(shù)據(jù)><類的方法>}類的定義舉例class是關(guān)鍵字,用來定義類,類名指的是類的名稱。類名的命名與標(biāo)識(shí)符的命名一致。注意,類名的第一個(gè)字母通常要大寫,且如果是多個(gè)單詞連接而成,每個(gè)單詞首字母都大寫,類名最好能表達(dá)類的功能或作用。例如,定義類PeopleclassPeople{intage;Stringname;intaged(){……}}類的定義舉例(續(xù)〕類People中數(shù)據(jù)域是age和name,aged()是方法。例如,定義類DeskclassDesk{intlength,width,height;floatprice;floatcubage(){……}}Desk類的屬性是length、width、height以及price,方法cubage()應(yīng)用變量length、width、height的數(shù)值計(jì)算體積。類聲明的完整格式
public:說明該類為公共類,它可以被本類和其他任何類及成員方法所使用。Java程序中至多有一個(gè)類是public類。default:如果類名前不用修飾符,指的就是默認(rèn)訪問情形,只能被本類和同一個(gè)包中的其他類、接口及成員方法引用。abstract:用該修飾符修飾的類稱為抽象類。它是一種沒有具體對(duì)象的概念類,是它所有公共子類的公共屬性集合。final:用該修飾符修飾的類不能有子類,稱為最終類。[修飾符]class<類名>[extends<父類名>][implements<接口名>]成員變量的定義成員變量位于類體中,在方法定義之外所定義的變量,方法內(nèi)定義的變量稱為方法變量或局部變量。成員變量和方法變量可以是簡(jiǎn)單類型,也可以是數(shù)組或類等引用類型。成員變量定義的格式為:
例如,類ExampleClass中定義了成員變量d,i和j,在類體的方法method〔〕中定義的變量f,g是方法變量。classExampleClass{publicdoubled;//成員變量d,i,jprivateinti,j;method(){floatf,g;//方法變量f,g}[訪問權(quán)限符][static][final]類型變量名1[,變量名2,…]成員變量訪問權(quán)限符public(公共的)、protected〔受保護(hù)的〕、private〔私有的〕和default(缺省的)。解釋如下:public:用該public修飾的成員變量稱為公共變量,可以被程序中任何類訪問。protected:用protected修飾的成員變量可以被本類、同一包中該類的子類及其他包中的該類的子類訪問。private:用private修飾的成員變量只能被本類訪問。用private修飾成員變量可以實(shí)現(xiàn)數(shù)據(jù)隱藏機(jī)制default:如果定義成員變量時(shí),沒有修飾符,它的訪問屬性就是默認(rèn)的,表示它可以被本類及同一包中的其他類訪問。成員變量訪問權(quán)限符〔續(xù)〕除訪問權(quán)限符外,成員變量還可以被static及final修飾。static和final是非訪問修飾符。被static修飾的成員變量稱為靜態(tài)變量。被final修飾的叫最終變量,最終變量的值在程序的整個(gè)執(zhí)行過程中是不會(huì)改變的,即Java語言中的符號(hào)常量。最終變量通常被說明為static的。變量名的命名必須符合Java標(biāo)識(shí)符的定義。成員變量的初始化成員變量定義后,如果沒有賦值,那么其初值是它的默認(rèn)值。例如,byte、short、int和long類型的默認(rèn)值為0,float的默認(rèn)值為0.0f,double類型為的默認(rèn)值為0.0,boolean類型的默認(rèn)值為false,char類型默認(rèn)值為’\u0000’,引用類型默認(rèn)值為null。如果需要變量具有其他初值,那么可以在定義的同時(shí)給變量賦值。publicclassCircle{floatradius=10.0f;floatgetRadius(){returnradius;}}publicclassEx3_2{publicstaticvoidmain(String[]args){Circleci=newCircle(); //ci.radius=9.0f;System.out.println(ci.getRadius());}}
在Circle類中,定義成員變量radius的同時(shí)賦值為10.0f,即變量的初始化。如果主方法中調(diào)用了成員方法getRadius(),又沒有對(duì)radius重新賦值,那么運(yùn)行結(jié)果為10.0f。但是,如果將程序中的注釋行釋放,那么運(yùn)行結(jié)果為9.0f。方法的創(chuàng)立方法操作類所定義的數(shù)據(jù),以及提供對(duì)數(shù)據(jù)的訪問的代碼。創(chuàng)立方法的格式為:第一行為方法頭,大括號(hào)中的是方法體。方法體可以包含一個(gè)或多個(gè)語句,每個(gè)方法執(zhí)行一項(xiàng)任務(wù)。每個(gè)方法只有一個(gè)名稱,通過使用這個(gè)名稱,方法才能被調(diào)用。修飾符是可選的,與成員變量的修飾符相同,功能類似。abstract、static和final分別指所修飾的方法為抽象方法、靜態(tài)方法和最終方法。[修飾符][abstract][static][final]返回值類型方法名〔[參數(shù)列表]){方法體}方法的創(chuàng)立〔續(xù)〕返回值類型是方法返回值的數(shù)據(jù)類型。假設(shè)方法不返回任何值,那么返回值類型為關(guān)鍵字void。方法的參數(shù)列表是可選的,如果沒有,說明沒有直接調(diào)用的參數(shù)。參數(shù)列表也稱為形式參數(shù),簡(jiǎn)稱形參。如果希望方法有返回值,那么在方法的最后一條語句使用return,終止方法并返回該方法的調(diào)用者。在返回值為void的方法中,如果有return語句,那么執(zhí)行到這條語句前方法會(huì)終止。例3.1中的floatarea();publicintgirth();方法的調(diào)用創(chuàng)立的方法指明了方法的作用,通過調(diào)用方法,方法才能發(fā)揮它的作用。調(diào)用方法的途徑有兩種:如果方法有返回值,對(duì)方法的調(diào)用通常就當(dāng)作處理一個(gè)值,通過點(diǎn).運(yùn)算符實(shí)現(xiàn)。調(diào)用格式為:例如,類Triangle的方法setSide(),設(shè)置三角形的三邊,結(jié)果為給變量d1、d2和d3賦值,語句,tri.setSide(a,b,c);意思是對(duì)象tri調(diào)用方法setSide()。直接使用方法的值,不再返回給另一個(gè)變量。程序中輸出面積,方法調(diào)用可以使用下面語句:System.out.println(tri.area());對(duì)象名.方法名成員變量和方法的兩種形式
類體中定義的成員變量和方法均有兩種形式:用static修飾的稱為類變量和類方法,也常稱之為靜態(tài)變量和靜態(tài)方法;未用static修飾的變量和方法稱為實(shí)例變量和實(shí)例方法。類的每一個(gè)對(duì)象都擁有自己的實(shí)例變量,每個(gè)對(duì)象的變量擁有不同的內(nèi)存空間,所以每個(gè)對(duì)象的實(shí)例變量也是不同的。成員變量和方法的兩種形式(續(xù))實(shí)例變量和實(shí)例方法是指每個(gè)變量和方法唯一的與一個(gè)對(duì)象相關(guān)聯(lián),即在創(chuàng)立某個(gè)對(duì)象時(shí),同時(shí)為這個(gè)對(duì)象創(chuàng)立所有實(shí)例變量的副本,關(guān)聯(lián)所有的實(shí)例方法。不同的對(duì)象對(duì)應(yīng)不同的實(shí)例變量副本,即不同的內(nèi)存空間。靜態(tài)變量不再重新分配內(nèi)存,所有的對(duì)象共享靜態(tài)變量,即所有對(duì)象的靜態(tài)變量使用相同的內(nèi)存空間。當(dāng)類體被裝入內(nèi)存時(shí),靜態(tài)方法就被分配了內(nèi)存單元,同時(shí)分配了相應(yīng)的入口地址,從而靜態(tài)方法可以被類創(chuàng)立的任何對(duì)象調(diào)用執(zhí)行,也可以在未創(chuàng)立對(duì)象時(shí)直接通過類名調(diào)用。例題PublicclassFoo{intI;StaticStrings;Voidimethod(){}Staticvoidsmethod(){}}System.out.println(f.i);
System.out.println(f.s);
f.imethod();
f.smethod();
System.out.println(Foo.i);
System.out.println(Foo.s);
Foo.imethod();
Foo.smethod();作業(yè)問題類和對(duì)象的關(guān)系類名和文件名不一致HTML的嵌入類文件可以加.class也可以不加。類名不一致。抄襲現(xiàn)象嚴(yán)重。本講小結(jié)三元運(yùn)算符、位運(yùn)算符類是Java的精華,它是整個(gè)Java語言的根底,因?yàn)轭惗x了對(duì)象的本質(zhì)。類的定義,類包含屬性和方法成員變量和成員方法成員變量訪問權(quán)限符方法的創(chuàng)立和調(diào)用第4講Java運(yùn)算符和表達(dá)式〔下〕及使用類和對(duì)象編程〔上〕本講教學(xué)目標(biāo)和教學(xué)內(nèi)容了解其他運(yùn)算符理解類和對(duì)象的根底知識(shí)掌握類和對(duì)象的創(chuàng)立與應(yīng)用理解成員變量的定義和初始化掌握方法的創(chuàng)立和調(diào)用形式掌握對(duì)象的創(chuàng)立和引用理解垃圾回收機(jī)制上講內(nèi)容回憶變量的定義和使用運(yùn)算符和表達(dá)式例2.1的回憶三元運(yùn)算符
Java中,有一種特別的三元運(yùn)算符構(gòu)成的條件表達(dá)式。使用格式如下:其中的?和:稱為三元運(yùn)算符,它們必須一同出現(xiàn),此運(yùn)算符需要三個(gè)操作數(shù)。其中語句1和語句2可以是復(fù)合語句。意思是,當(dāng)條件表達(dá)式值為true時(shí),執(zhí)行語句1,否那么執(zhí)行語句2。例如,〔a>b〕?a:(c>d)?c:d其中a=5,b=8,c=1,d=9。根據(jù)右結(jié)合性,應(yīng)先計(jì)算(c>d)?c:d。因?yàn)?>9為false,故取d=9為該表達(dá)式的結(jié)果。再計(jì)算〔a>b〕?a:d,結(jié)果為9。條件表達(dá)式?語句1:語句2位運(yùn)算符Java中,可以使用位運(yùn)算直接對(duì)整數(shù)類型和字符類型的數(shù)據(jù)的位進(jìn)行操作。Java中位運(yùn)算符有:~、<<、>>、>>>、&、^、|。Java中的數(shù)是以補(bǔ)碼表示的。正數(shù)的補(bǔ)碼就是其原碼,負(fù)數(shù)的補(bǔ)碼是其對(duì)應(yīng)的正數(shù)按位取反〔1變?yōu)?,0變?yōu)?〕后再加1。例:bytea=7,b=-7,c=15,d=42,那么a:00000111b:11111001
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源汽車出口產(chǎn)品購(gòu)銷合同范本4篇
- 2025年度棗樹種植基地綠色認(rèn)證與市場(chǎng)拓展合同4篇
- 2025年度體育場(chǎng)館場(chǎng)地租賃合同終止及運(yùn)營(yíng)權(quán)轉(zhuǎn)讓協(xié)議3篇
- 2025年度體育用品代理銷售與售后服務(wù)協(xié)議4篇
- 2024通信信息保密協(xié)議1
- 2025年度智能化廠房整體轉(zhuǎn)讓合同書3篇
- 2024-2030年中國(guó)RNA聚合酶行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資策略研究報(bào)告
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心服務(wù)合同模板2篇
- 2025不銹鋼管道系統(tǒng)安裝與維護(hù)服務(wù)合同3篇
- 2024運(yùn)輸公司車輛全面保險(xiǎn)合同6篇
- 大唐電廠采購(gòu)合同范例
- 國(guó)潮風(fēng)中國(guó)風(fēng)2025蛇年大吉蛇年模板
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測(cè)定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 2024年中考語文名句名篇默寫分類匯編(解析版全國(guó))
- 新煤礦防治水細(xì)則解讀
- 故障診斷技術(shù)的國(guó)內(nèi)外發(fā)展現(xiàn)狀
- 醫(yī)院領(lǐng)導(dǎo)班子集體議事決策制度
- 解讀2024年《學(xué)紀(jì)、知紀(jì)、明紀(jì)、守紀(jì)》全文課件
- 農(nóng)機(jī)維修市場(chǎng)前景分析
評(píng)論
0/150
提交評(píng)論