Java語(yǔ)言程序設(shè)計(jì)與實(shí)現(xiàn)(微課版)全套課件_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)與實(shí)現(xiàn)(微課版)全套課件_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)與實(shí)現(xiàn)(微課版)全套課件_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)與實(shí)現(xiàn)(微課版)全套課件_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)與實(shí)現(xiàn)(微課版)全套課件_第5頁(yè)
已閱讀5頁(yè),還剩644頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目一Java語(yǔ)言概述

1.1Java的起源

1.2程序設(shè)計(jì)思想的發(fā)展

1.3Java的三大開(kāi)發(fā)體系08三月20251項(xiàng)目一Java語(yǔ)言概述.ppt項(xiàng)目二Java程序設(shè)計(jì)初識(shí).ppt項(xiàng)目三Java語(yǔ)法基礎(chǔ).ppt項(xiàng)目四數(shù)組.ppt項(xiàng)目五面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ).ppt項(xiàng)目六類的繼承、包及接口.ppt項(xiàng)目七程序的異常處理.ppt項(xiàng)目八Java的圖形用戶界面開(kāi)發(fā).ppt項(xiàng)目九Java的事件處理機(jī)制.ppt項(xiàng)目十Java的數(shù)據(jù)庫(kù)編程開(kāi)發(fā).ppt項(xiàng)目十一Java的文件操作.ppt項(xiàng)目十二Java多線程處理.ppt項(xiàng)目十三圖書(shū)館管理信息系統(tǒng).ppt項(xiàng)目十四Java桌面游戲項(xiàng)目開(kāi)發(fā).ppt08三月20251.1Java的起源

目前Java語(yǔ)言在全世界是使用最為廣泛的計(jì)算機(jī)編程語(yǔ)言之一。它容易學(xué)習(xí)而且非常的好用,如果你學(xué)習(xí)過(guò)其它的編程語(yǔ)言,例如C++,你就會(huì)覺(jué)得C++和Java非常的相似,主要是因?yàn)镴ava和C++中許多基礎(chǔ)的語(yǔ)法一樣,但是我們知道Java和C++是兩種不同的語(yǔ)言,Java只需理解一些最基本的概念,就能夠編寫(xiě)出各種的應(yīng)用程序。Java用一種更加容易理解的方式去實(shí)現(xiàn),所以Java相對(duì)于C++是簡(jiǎn)單的。208三月20251.1.1Java的由來(lái)Java總是和C++聯(lián)系在一起,而C++則是從C語(yǔ)言派生而來(lái)的,所以Java語(yǔ)言繼承了這兩種語(yǔ)言的大部分特性。Java的語(yǔ)法是從C繼承的,Java許多面向?qū)ο蟮奶匦允艿紺++的影響。308三月20251.1.2Java的產(chǎn)生

Java是由JamesGosling,PatrickNaughton,ChrisWarth,EdFrank和MikeSheridan于1991年在SunMicrosystems公司設(shè)計(jì)出來(lái)的。開(kāi)發(fā)第一個(gè)版本花了18個(gè)月。該語(yǔ)言開(kāi)始名叫“Oak”,于1995年更名為“Java”。從1992的秋天Oak問(wèn)世到1995的春天公開(kāi)發(fā)布Java語(yǔ)言,許多人對(duì)Java的設(shè)計(jì)和改進(jìn)做出了貢獻(xiàn)。BillJoy,ArthurvanHoff,JonathanPayne,F(xiàn)rankYellin和TimLindholm是主要的貢獻(xiàn)者,正是他們的貢獻(xiàn)使最初原型得以成熟。408三月20251.1.3Java對(duì)Internet為什么重要Internet使Java成為網(wǎng)上最流行的編程語(yǔ)言,同時(shí)Java對(duì)Internet的影響也意義深遠(yuǎn)。在Java產(chǎn)生以前,當(dāng)前賽百空間有一半的對(duì)象實(shí)體無(wú)法進(jìn)入網(wǎng)絡(luò)世界,是Java為它們打開(kāi)了便利之門,而且在這個(gè)過(guò)程中定義了一種全新的程序形式:applet(小應(yīng)用程序)。508三月2025(1)Java小應(yīng)用程序和應(yīng)用程序Java可用來(lái)生成兩類程序:應(yīng)用程序(applications)和Javaapplet(小應(yīng)用程序。應(yīng)用程序是可以在你的計(jì)算機(jī)的操作系統(tǒng)中運(yùn)行的程序。小應(yīng)用程序是可以在Internet中傳輸并在兼容Java的Web瀏覽器中運(yùn)行的應(yīng)用程序。608三月2025(2)安全性當(dāng)使用一個(gè)兼容Java的Web瀏覽器時(shí),你可以安全地下載Java小應(yīng)用程序,不必?fù)?dān)心病毒的感染或惡意的企圖。Java實(shí)現(xiàn)這種保護(hù)功能的方式是,將Java程序限制在Java運(yùn)行環(huán)境中,不允許它訪問(wèn)計(jì)算機(jī)的其他部分,后面將介紹這個(gè)過(guò)程是如何實(shí)現(xiàn)的。下載小應(yīng)用程序并能確保它對(duì)客戶機(jī)的安全性不會(huì)造成危害是Java的一個(gè)最重要的方面。708三月2025(3)可移植性正如前面所討論的,許多類型的計(jì)算機(jī)和操作系統(tǒng)都連接到Internet上。要使連接到Internet上的各種各樣的平臺(tái)都能動(dòng)態(tài)下載同一個(gè)程序,就需要有能夠生成可移植性執(zhí)行代碼的方法。很快你將會(huì)看到,有助于保證安全性的機(jī)制同樣也有助于建立可移植性。實(shí)際上,Java對(duì)這兩個(gè)問(wèn)題的解決方案是優(yōu)美的也是高效的。808三月20251.1.4Java的魔力:字節(jié)碼字節(jié)碼是一套設(shè)計(jì)用來(lái)在Java運(yùn)行時(shí)系統(tǒng)下執(zhí)行的高度優(yōu)化的指令集,該Java運(yùn)行時(shí)系統(tǒng)稱為Java虛擬機(jī)(JavaVirtualMachine,JVM)。在其標(biāo)準(zhǔn)形式下,JVM就是一個(gè)字節(jié)碼解釋器。然而,正是通過(guò)JVM運(yùn)行Java程序才有助于解決在Internet上下載程序的主要問(wèn)題。這就是Java輸出字節(jié)碼的原因。908三月2025將Java程序翻譯成字節(jié)碼,有助于它更容易地在一個(gè)大范圍的環(huán)境下運(yùn)行程序。原因非常直接:只要在各種平臺(tái)上都實(shí)現(xiàn)Java虛擬機(jī)就可以了。在一個(gè)給定的系統(tǒng)中,只要系統(tǒng)運(yùn)行包存在,任何Java程序就可以在該系統(tǒng)上運(yùn)行。記?。罕M管不同平臺(tái)的Java虛擬機(jī)的細(xì)節(jié)有所不同,但它們都解釋同樣的Java字節(jié)碼。1008三月20251.1.5Java常用語(yǔ)·簡(jiǎn)單(Simple)·安全(Secure)·可移植(Portable)·面向?qū)ο螅∣bject-oriented)·健壯(Robust)11·多線程(Multithreaded)·體系結(jié)構(gòu)中立(Architecture-neutral)·解釋執(zhí)行(Interpreted)·高性能(Highperformance)·分布式(Distributed)·動(dòng)態(tài)(Dynamic)08三月20251208三月20251.2程序設(shè)計(jì)思想的發(fā)展1.2.1面向?qū)ο缶幊蘆ava的核心是面向?qū)ο缶幊?。事?shí)上,所有的Java程序都是面向?qū)ο蟮模銊e無(wú)選擇。這一點(diǎn)與C++不同,因?yàn)樵谀抢锬憧梢赃x擇是否面向?qū)ο缶幊?。面向?qū)ο缶幊膛cJava密不可分,因此,在你編寫(xiě)哪怕是最簡(jiǎn)單的Java程序以前,也必須理解它的基本原則。因此,先從面向?qū)ο缶幊痰母拍钪v起。1308三月2025(1)兩種范型我們知道,所有的計(jì)算機(jī)程序都由兩類元素組成:代碼和數(shù)據(jù)。此外,從概念上講,程序還可以以它的代碼或是數(shù)據(jù)為核心進(jìn)行組織編寫(xiě)。1408三月2025這兩種范型決定程序的構(gòu)建方法。第一種方法被稱為面向過(guò)程的模型(process-orientedmodel),用它編寫(xiě)的程序都具有線性執(zhí)行的特點(diǎn)。面向過(guò)程的模型可認(rèn)為是代碼作用于數(shù)據(jù),像C這樣的過(guò)程式語(yǔ)言采用這個(gè)模型是相當(dāng)成功的。然而,當(dāng)程序變得更大并且更復(fù)雜時(shí),就會(huì)出現(xiàn)問(wèn)題。1508三月2025第二種方式,也就是面向?qū)ο蟮木幊蹋╫bject-orientedprogramming)。面向?qū)ο蟮木幊虈@它的數(shù)據(jù)(即對(duì)象)和為這個(gè)數(shù)據(jù)嚴(yán)格定義的接口來(lái)組織程序。面向?qū)ο蟮某绦驅(qū)嶋H上是用數(shù)據(jù)控制對(duì)代碼的訪問(wèn)。下面你將看到,將控制的實(shí)體變換為數(shù)據(jù),可使程序在組織結(jié)構(gòu)上從若干方面受益。1608三月2025(2)抽象面向?qū)ο缶幊痰囊粋€(gè)實(shí)質(zhì)性的要素是抽象。人們通過(guò)抽象(abstraction)處理復(fù)雜性。例如,人們不會(huì)把一輛汽車想象成由幾萬(wàn)個(gè)互相獨(dú)立的部分所組成的一套裝置,而是把汽車想成一個(gè)具有自己獨(dú)特行為的對(duì)象。1708三月2025面向?qū)ο蟮母拍钍荍ava的核心,對(duì)程序員來(lái)講,重要的是要理解這些概念怎么轉(zhuǎn)化為程序。你將會(huì)發(fā)現(xiàn),在任何主要的軟件工程項(xiàng)目中,軟件都不可避免地要經(jīng)歷概念提出、成長(zhǎng)、衰老這樣一個(gè)生命周期,而面向?qū)ο蟮某绦蛟O(shè)計(jì),可以使軟件在生命周期的每一個(gè)階段都處變不驚,有足夠的應(yīng)變能力。1808三月2025(1)封裝封裝(Encapsulation)是將代碼及其處理的數(shù)據(jù)綁定在一起的一種編程機(jī)制,該機(jī)制保證了程序和數(shù)據(jù)都不受外部干擾且不被誤用。191.2.2面向?qū)ο缶幊痰?個(gè)原則08三月2025理解封裝性的一個(gè)方法就是把它想成一個(gè)黑匣子,它可以阻止在外部定義的代碼隨意訪問(wèn)內(nèi)部代碼和數(shù)據(jù)。對(duì)黑匣子內(nèi)代碼和數(shù)據(jù)的訪問(wèn)通過(guò)一個(gè)適當(dāng)定義的接口嚴(yán)格控制。2008三月2025Java封裝的基本單元是類。一個(gè)類(class)定義了將被一個(gè)對(duì)象集共享的結(jié)構(gòu)和行為(數(shù)據(jù)和代碼)。一個(gè)給定類的每個(gè)對(duì)象都包含這個(gè)類定義的行為和結(jié)構(gòu),好像它們是從同一個(gè)類的模子中鑄造出來(lái)似的。所以,類是一種邏輯結(jié)構(gòu),而對(duì)象是真正存在的物理實(shí)體。2108三月2025既然類的目的是封裝復(fù)雜性,在類的內(nèi)部就應(yīng)該有隱藏實(shí)現(xiàn)復(fù)雜性機(jī)制。類中的每個(gè)方法或變量都可以被標(biāo)記為私有(private)或公共(public)。類的公共接口代表類的外部用戶需要知道或可以知道的每件事情;私有方法和數(shù)據(jù)僅能被一個(gè)類的成員代碼所訪問(wèn),其他任何不是類的成員的代碼都不能訪問(wèn)私有的方法或變量。2208三月2025(2)繼承繼承(Inheritance)是一個(gè)對(duì)象獲得另一個(gè)對(duì)象的屬性的過(guò)程。繼承很重要,因?yàn)樗С至税磳臃诸惖母拍?。使用了繼承,一個(gè)對(duì)象就只需定義使它在所屬類中獨(dú)一無(wú)二的屬性即可,因?yàn)樗梢詮乃母割惸莾豪^承所有的通用屬性。所以,可以這樣說(shuō),正是繼承機(jī)制使一個(gè)對(duì)象成為一個(gè)更具通用類的一個(gè)特定實(shí)例成為可能。2308三月2025繼承性與封裝性相互作用。如果一個(gè)給定的類封裝了一些屬性,那么它的任何子類將具有同樣的屬性,而且還添加了子類自己特有的屬性。這是面向?qū)ο蟮某绦蛟趶?fù)雜性上呈線性而非幾何性增長(zhǎng)的一個(gè)關(guān)鍵概念。新的子類繼承它的所有祖先的所有屬性。它不與系統(tǒng)中其余的多數(shù)代碼產(chǎn)生無(wú)法預(yù)料的相互作用。2408三月2025(3)多態(tài)性多態(tài)性(Polymorphism,來(lái)自于希臘語(yǔ),表示“多種形態(tài)”)是允許一個(gè)接口被多個(gè)同類動(dòng)作使用的特性,具體使用哪個(gè)動(dòng)作與應(yīng)用場(chǎng)合有關(guān)。251.2.3多態(tài)性、封裝性與繼承性相互作用如果用得當(dāng),在由多態(tài)性、封裝性和繼承性共同組成的編程環(huán)境中可以寫(xiě)出比面向過(guò)程模型環(huán)境更健壯、擴(kuò)展性更好的程序。08三月202526所有的Java程序都是面向?qū)ο蟮摹;蛘?,更精確地說(shuō),每個(gè)Java程序都具有封裝性、繼承性及多態(tài)性。Java提供的許多特性是它的內(nèi)置類庫(kù)的一部分,這個(gè)庫(kù)使封裝性、繼承性及多態(tài)性得到更廣泛應(yīng)用。08三月2025271.3Java的三大開(kāi)發(fā)體系Java發(fā)展到今天,已從編程語(yǔ)言發(fā)展成為全球第一大通用開(kāi)發(fā)平臺(tái)。Java技術(shù)已被計(jì)算機(jī)行業(yè)主要公司所采納。1999年,Sun公司推出了以Java2平臺(tái)為核心的J2SE、J2EE和J2ME三大平臺(tái)。隨著三大平臺(tái)的迅速推進(jìn),全球形成了一股巨大的Java應(yīng)用浪潮。08三月2025281.Java2Platform,StandardEdition(J2SE)2.Java2Platform,EnterpriseEdition(J2EE)3.Java2Platform,MicroEdition(J2ME)08三月202529J2SE用于小型程序,J2EE用于大型程序,J2ME用于手機(jī)等程序。J2SE包含于J2EE中,J2ME包含了J2SE的核心類,但新添加了一些專用類。J2SE是基礎(chǔ);壓縮一點(diǎn),再增加一些CLDC等方面的特性就是J2ME;擴(kuò)充一點(diǎn),再增加一些EJB等企業(yè)應(yīng)用方面的特性就是J2EE。08三月202530謝謝!08三月202531項(xiàng)目二Java程序設(shè)計(jì)初識(shí)

2.1Java開(kāi)發(fā)環(huán)境的搭建

2.2Eclipse集成開(kāi)發(fā)工具

2.3簡(jiǎn)單Java程序的實(shí)現(xiàn)2.4拓展實(shí)訓(xùn)08三月2025332.1Java開(kāi)發(fā)環(huán)境的搭建2.1.1安裝JDK開(kāi)發(fā)環(huán)境

JDK(Java開(kāi)發(fā)工具包)是Sun公司提供的Java開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境,是所有Java應(yīng)用程序的基礎(chǔ)。JDK包括一組API和JRE,這些API是構(gòu)建Java應(yīng)用程序的基礎(chǔ),而JRE是運(yùn)行Java應(yīng)用程序的基礎(chǔ)。JDK包括J2ME(微型版)、J2SE(標(biāo)準(zhǔn)版)和J2EE(企業(yè)版)3個(gè)版本,最基本的開(kāi)發(fā)包是J2SE。08三月2025342.1Java開(kāi)發(fā)環(huán)境的搭建安裝過(guò)程參見(jiàn)教材P708三月2025352.1Java開(kāi)發(fā)環(huán)境的搭建2.1.2系統(tǒng)環(huán)境變量的配置

Java源程序進(jìn)行編譯和執(zhí)行時(shí),需要知道JDK中編譯器和解釋器所在的磁盤物理位置,以及程序所用到的類庫(kù)所在的位置。

開(kāi)發(fā)人員可以通過(guò)配置系統(tǒng)環(huán)境變量的方式,為Java類庫(kù)提供查找搜索路徑(CLASSPATH),為編譯器和解釋器提供查找搜索路徑(Path)等信息。08三月2025362.1Java開(kāi)發(fā)環(huán)境的搭建配置過(guò)程參見(jiàn)教材P808三月2025372.2Eclipse集成開(kāi)發(fā)工具2.2.1Java集成開(kāi)發(fā)工具簡(jiǎn)介從Java誕生到如今,除了Sun公司自身提供的開(kāi)發(fā)工具外,還有許多的第三方開(kāi)發(fā)工具被廣泛使用。下面介紹幾款Java集成開(kāi)發(fā)工具:JCreatorNetBeansEclipseJBuilder08三月2025382.2Eclipse集成開(kāi)發(fā)工具2.2.2Eclipse的下載與安裝

Eclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展集成開(kāi)發(fā)平臺(tái)。Eclipse本身只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。只要有合適的組件,Eclipse不但能夠支持開(kāi)發(fā)Java應(yīng)用程序,而且也能夠支持其他的開(kāi)發(fā)語(yǔ)言。由于Eclipse附帶了一個(gè)包括Java開(kāi)發(fā)工具(JDT)的標(biāo)準(zhǔn)插件集,因此,只要安裝了Eclipse和JDK,就可以使用Eclipse開(kāi)發(fā)Java應(yīng)用程序。08三月2025392.2Eclipse集成開(kāi)發(fā)工具1.安裝、啟動(dòng)Eclipse安裝過(guò)程參見(jiàn)教材P1108三月2025402.2Eclipse集成開(kāi)發(fā)工具2.配置Eclipse環(huán)境配置過(guò)程參見(jiàn)教材P1108三月2025412.2Eclipse集成開(kāi)發(fā)工具2.2.3Eclipse的基本使用創(chuàng)建Java應(yīng)用程序項(xiàng)目創(chuàng)建過(guò)程參見(jiàn)教材P1208三月2025422.2Eclipse集成開(kāi)發(fā)工具2.2.3Eclipse的基本使用2.創(chuàng)建Java公共類源程序創(chuàng)建過(guò)程參見(jiàn)教材P1308三月2025432.2Eclipse集成開(kāi)發(fā)工具2.2.3Eclipse的基本使用3.運(yùn)行Java應(yīng)用程序項(xiàng)目運(yùn)行過(guò)程參見(jiàn)教材P1308三月2025442.2Eclipse集成開(kāi)發(fā)工具2.2.3Eclipse的基本使用4.關(guān)閉和刪除Java應(yīng)用程序項(xiàng)目過(guò)程參見(jiàn)教材P1408三月2025452.2Eclipse集成開(kāi)發(fā)工具2.2.3Eclipse的基本使用5.打開(kāi)已存在的Java應(yīng)用程序項(xiàng)目打開(kāi)過(guò)程參見(jiàn)教材P1408三月2025462.3簡(jiǎn)單Java程序的實(shí)現(xiàn)Java應(yīng)用程序,根據(jù)運(yùn)行界面是以圖形化要素為主,還是以文本字符為主,可分為兩種主要類型:GUI應(yīng)用程序(GUIApplication)控制臺(tái)應(yīng)用程序(ConsoleApplication)2.3.1一個(gè)簡(jiǎn)單的Java程序認(rèn)識(shí)事物的方法是從簡(jiǎn)單到復(fù)雜、從表象到實(shí)質(zhì)。因此,先從一個(gè)簡(jiǎn)單的實(shí)例入手,來(lái)逐步認(rèn)識(shí)這兩種Java程序的基本結(jié)構(gòu)和框架,為后面的開(kāi)發(fā)建立良好的結(jié)構(gòu)基礎(chǔ)。08三月2025472.3簡(jiǎn)單Java程序的實(shí)現(xiàn)1.

Java應(yīng)用程序的基本結(jié)構(gòu)作為面向?qū)ο蟮木幊陶Z(yǔ)言,Java程序的核心要素是類。類是組成Java程序的最小結(jié)構(gòu)單位。一個(gè)Java源程序文件中可以包括一個(gè)或多個(gè)類的定義。Java應(yīng)用程序的入口是main方法。所謂入口方法是指Java系統(tǒng)在運(yùn)行應(yīng)用程序時(shí)最先執(zhí)行的那個(gè)方法。一個(gè)Java應(yīng)用程序必須有且只有一個(gè)main方法。包含main方法的類被稱為應(yīng)用程序的主類,主類必須被定義為公共類。08三月2025482.3簡(jiǎn)單Java程序的實(shí)現(xiàn)2.簡(jiǎn)單的Java應(yīng)用程序Java應(yīng)用程序的開(kāi)發(fā)可歸結(jié)為如下步驟:(1)用任意文本編輯器創(chuàng)建Java源程序,并以擴(kuò)展名為.java的文件保存。(2)使用編譯命令將源程序文件編譯成擴(kuò)展名為.class的類文件。(3)使用運(yùn)行命令運(yùn)行程序,查看結(jié)果。08三月2025492.3簡(jiǎn)單Java程序的實(shí)現(xiàn)2.簡(jiǎn)單的Java應(yīng)用程序例題:編寫(xiě)Java應(yīng)用程序,在計(jì)算機(jī)屏幕上輸出一行文本信息:“歡迎訪問(wèn)Java世界”。完成過(guò)程及步驟參見(jiàn)教材P1708三月2025502.3簡(jiǎn)單Java程序的實(shí)現(xiàn)2.3.2基于控制臺(tái)的輸入/輸出結(jié)構(gòu)程序?qū)崿F(xiàn)在實(shí)際的程序編寫(xiě)過(guò)程中,除了輸出環(huán)節(jié)之外,還包括輸入和處理環(huán)節(jié)。計(jì)算機(jī)系統(tǒng)通常都有默認(rèn)的標(biāo)準(zhǔn)輸入設(shè)備和標(biāo)準(zhǔn)輸出設(shè)備。對(duì)于一般的系統(tǒng),標(biāo)準(zhǔn)輸入設(shè)備通常是指鍵盤,標(biāo)準(zhǔn)輸出設(shè)備通常是指顯示器。Java控制臺(tái)程序從鍵盤輸入數(shù)據(jù),向顯示器輸出數(shù)據(jù),是十分常見(jiàn)的數(shù)據(jù)通信操作。08三月2025512.3簡(jiǎn)單Java程序的實(shí)現(xiàn)例題:編寫(xiě)Java應(yīng)用程序,完成從鍵盤輸入兩個(gè)運(yùn)算數(shù)據(jù),計(jì)算兩數(shù)之和并輸出結(jié)果的功能。完成過(guò)程及步驟參見(jiàn)教材P2108三月2025522.3簡(jiǎn)單Java程序的實(shí)現(xiàn)2.3.3基于GUI的輸入/輸出結(jié)構(gòu)程序?qū)崿F(xiàn)GUI是當(dāng)今編程的主流,其主要特征包括:程序界面主要由圖形化的要素構(gòu)成;程序沒(méi)有預(yù)定好的運(yùn)行流程,而是由隨機(jī)事件來(lái)驅(qū)動(dòng);人機(jī)交互由消息機(jī)制來(lái)支持;輸入設(shè)備以鼠標(biāo)、鍵盤為主。

08三月2025532.3簡(jiǎn)單Java程序的實(shí)現(xiàn)例題:編寫(xiě)Java應(yīng)用程序,利用圖形界面,完成從鍵盤輸入兩個(gè)運(yùn)算數(shù)據(jù),計(jì)算兩數(shù)之和并輸出結(jié)果的功能。完成過(guò)程及步驟參見(jiàn)教材P2308三月2025542.4拓展實(shí)訓(xùn)實(shí)訓(xùn)1:編寫(xiě)Java控制臺(tái)應(yīng)用程序,完成從鍵盤輸入圓的半徑,求圓的周長(zhǎng)和面積并輸出結(jié)果的功能。08三月2025552.4拓展實(shí)訓(xùn)實(shí)訓(xùn)2:編寫(xiě)JavaGUI應(yīng)用程序,完成從鍵盤輸入矩形的長(zhǎng)和寬,求矩形的周長(zhǎng)和面積并輸出結(jié)果的功能。謝謝!項(xiàng)目三Java語(yǔ)法基礎(chǔ)3.1用戶標(biāo)識(shí)符與保留字08三月20255708三月20253.1用戶標(biāo)識(shí)符與保留字3.1.1用戶標(biāo)識(shí)符用戶標(biāo)識(shí)符是程序員對(duì)程序中各個(gè)元素加以命名時(shí)使用的命名記號(hào)。58使用標(biāo)識(shí)符時(shí),需要遵守幾條規(guī)則:

1.

標(biāo)識(shí)符可以由字母、數(shù)字、下劃線(_)、美元符($)組成,但不能包含@、%、空格等其它特殊字符,不能以數(shù)字開(kāi)頭。

08三月2025592.

標(biāo)識(shí)符不能是Java關(guān)鍵字和保留字(Java預(yù)留的關(guān)鍵字,以后的升級(jí)版本中有可能作為關(guān)鍵字),但可以包含關(guān)鍵字和保留字。如:不可以使用

void

作為標(biāo)識(shí)符,但是

Myvoid

可以。

08三月2025603.標(biāo)識(shí)符是嚴(yán)格區(qū)分大小寫(xiě)的。所以一定要分清楚

imooc

IMooc

是兩個(gè)不同的標(biāo)識(shí)符。

08三月2025614.標(biāo)識(shí)符的命名最好能反映出其作用,做到見(jiàn)名知意。08三月202562例如:userName,Id_Name,_sys_str,Name,name,$price等為合法的標(biāo)識(shí)符。而:7mail,room#,#home為非法的標(biāo)識(shí)符。08三月20256308三月20253.1.2保留字保留字是特殊的標(biāo)識(shí)符,具有專門的意義和用途,不能當(dāng)作用戶的標(biāo)識(shí)符使用。64Java語(yǔ)言中的保留字均用小寫(xiě)字母表示。08三月202565保留字08三月202566abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatForfinallyifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicreturnswitchshortstaticsupertrytruethisthrowthrowsvoidthreadsafetransientwhilesynchronized

謝謝!08三月2025673.2數(shù)據(jù)類型3.3Java運(yùn)算符和表達(dá)式08三月202568項(xiàng)目三Java語(yǔ)法基礎(chǔ)08三月20253.2數(shù)據(jù)類型Java語(yǔ)言的數(shù)據(jù)類型可劃分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型6908三月20253.2.1常量和變量1.常量所謂常量就是在程序運(yùn)行過(guò)程中保持不變的量即不能被程序改變的量,也把它稱為最終量。常量可以分為標(biāo)識(shí)常量和直接常量(字面常量)。7008三月20252.變量變量是程序中的基本存儲(chǔ)單元,在程序的運(yùn)行過(guò)程中可以隨時(shí)改變其存儲(chǔ)單元的值。7108三月20253.2.2基本數(shù)據(jù)類型1.整型1)整型常量的表示方法整型常量能以十進(jìn)制、八進(jìn)制和十六進(jìn)制表示。2)整型變量的定義例如:intx=215; //指定變量x為int型,且賦初值為2157208三月20252.字符型(char)字符型(char)數(shù)據(jù)占據(jù)兩個(gè)字節(jié)16個(gè)二進(jìn)制位。字符常量是用單引號(hào)括起來(lái)的一個(gè)字符,如‘a(chǎn)’,‘A’等。7308三月20253.布爾型(boolean)布爾型數(shù)據(jù)的值只有兩個(gè):true和false。因此布爾的常量值也只能取這兩個(gè)值。7408三月20254.浮點(diǎn)型(實(shí)型)Java提供了兩種浮點(diǎn)型數(shù)據(jù),單精度和雙精度,7508三月20253.2.3基本數(shù)據(jù)類型的封裝在Java中,對(duì)每種基本的數(shù)據(jù)類型都提供了其對(duì)應(yīng)的封裝類(稱為封裝器類wrapperclass)。7608三月20253.3Java運(yùn)算符和表達(dá)式3.3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符用于數(shù)值量的算術(shù)運(yùn)算,它們是:+(加),-(減),*(乘),/(除),%(求余數(shù)),++(自加1),--(自減1)。7708三月20253.3.2關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符用于兩個(gè)量的比較運(yùn)算,它們是:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)。7808三月20253.3.3布爾邏輯運(yùn)算符和布爾表達(dá)式布爾邏輯運(yùn)算符用于布爾量的運(yùn)算,有3個(gè)布爾邏輯運(yùn)算符:!(邏輯非)、&&(邏輯與)、||(邏輯或)7908三月20253.3.4位運(yùn)算符及表達(dá)式位運(yùn)算符主要用于整數(shù)的二進(jìn)制位運(yùn)算??梢园阉鼈兎譃橐莆贿\(yùn)算和按位運(yùn)算。8008三月20253.3.5賦值運(yùn)算符(=)和賦值表達(dá)式賦值運(yùn)算符是最常用的運(yùn)算符,用于把一個(gè)表達(dá)式的值賦給一個(gè)變量(或?qū)ο螅?108三月20253.3.6條件運(yùn)算符(?:)及表達(dá)式條件運(yùn)算符是三元運(yùn)算符,有條件運(yùn)算符組成的條件表達(dá)式的一般使用格式是:邏輯(關(guān)系)表達(dá)式

?表達(dá)式1:表達(dá)式28208三月20253.3.7對(duì)象運(yùn)算符1、構(gòu)造對(duì)象(new)new運(yùn)算符主要用于構(gòu)建類的對(duì)象。2、分量運(yùn)算符(.).運(yùn)算符主要用于獲取類、對(duì)象的屬性和方法。3、對(duì)象測(cè)試(instanceof)instanceof運(yùn)算符主要用于對(duì)象的測(cè)試。將在后邊應(yīng)用時(shí)介紹它。8308三月20253.3.8其它運(yùn)算符1、數(shù)組下標(biāo)運(yùn)算符([])2、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))3.()運(yùn)算符4.字符串連接符(+)8408三月20253.3.9表達(dá)式的運(yùn)算規(guī)則最簡(jiǎn)單的表達(dá)式是一個(gè)常量或一個(gè)變量,當(dāng)表達(dá)式中含有兩個(gè)或兩以上的運(yùn)算符時(shí),就稱為復(fù)雜表達(dá)式。85謝謝!08三月2025863.4Java程序的注釋方式3.5Java程序的輸入輸出08三月202587項(xiàng)目三Java語(yǔ)法基礎(chǔ)3.4Java程序的注釋方式08三月202588一般程序設(shè)計(jì)語(yǔ)言都提供了程序注釋的方式,要想讓別人讀懂自己編寫(xiě)的程序,沒(méi)有注釋是比較困難的。Java提供了兩種注釋方式:程序注釋和程序文檔注釋。(一)程序注釋如前所述,程序注釋主要是為了程序的易讀性。閱讀一個(gè)沒(méi)有注釋的程序是比較痛苦的事情,因?yàn)閷?duì)同一個(gè)問(wèn)題,不同的人可能有不同的處理方式,要從一行行的程序語(yǔ)句中來(lái)理解他人的處理思想是比較困難的,特別對(duì)初學(xué)者來(lái)說(shuō)。因此對(duì)一個(gè)程序語(yǔ)句,一個(gè)程序段,一個(gè)程序它的作用是什么,必要時(shí)都應(yīng)該用注釋簡(jiǎn)要說(shuō)明。

08三月202589程序中的注釋不是程序的語(yǔ)句部分,它可以放在程序的任何地方,系統(tǒng)在編譯時(shí)忽略它們。08三月202590注釋可以在一行上,也可在多行上。有如下兩種方式的注釋:1.以雙斜杠(//)開(kāi)始以“//”開(kāi)始后跟注釋文字。這種注釋方式可單獨(dú)占一行,也可放在程序語(yǔ)句的后邊。08三月202591例如,在下邊的程序片段中使用注釋://下面定義程序中所使用的變量 intage; //定義一整型變量age,表示年齡。Stringname;//定義一字符串變量name,表示名字。08三月2025922.以“/*”開(kāi)始,以“*/”結(jié)束當(dāng)需要多行注釋時(shí),一般使用“/*……*/”格式作注釋,中間為注釋內(nèi)容。08三月202593(二)程序文檔注釋程序文檔注釋是Java特有的注釋方式,它規(guī)定了一些專門的標(biāo)記,其目的是用于自動(dòng)生成獨(dú)立的程序文檔。程序文檔注釋通常用于注釋類、接口、變量和方法。08三月202594/**該類包含了一些操作數(shù)據(jù)庫(kù)常用的基本方法,諸如:在庫(kù)中建立新的數(shù)據(jù)表、

*在數(shù)據(jù)表中插入新記錄、刪除無(wú)用的記錄、修改已存在的記錄中的數(shù)據(jù)、查詢

*相關(guān)的數(shù)據(jù)信息等功能。

*@authorLilyXu*@version3.20,05/02/17*@sinceJDK1.8*/08三月2025953.5Java程序的輸入輸出08三月202596在開(kāi)始編寫(xiě)Java應(yīng)用程序之前,先介紹一下Java程序的輸入輸出。在任何程序中,輸入數(shù)據(jù)和輸出結(jié)果都是必不可少的。由于輸入和輸出的途徑不同,輸入輸出的方法也就不一樣。Java沒(méi)有提供專用的輸入輸出命令或語(yǔ)句,它的輸入輸出是靠系統(tǒng)提供的輸入輸出類的方法實(shí)現(xiàn)的。08三月20253.5.1字符界面下的輸入輸出方法字符界面下的輸入輸出是由Java的基類System提供的,在前邊的示例中,我們已經(jīng)使用了System.out.println()方法在屏幕上輸出信息。9708三月20251.輸入方法格式:System.in.read();功能:該方法的功能是從鍵盤上接受一個(gè)字符,按照byte類型的數(shù)據(jù)處理。若將它轉(zhuǎn)換為字符型,它就是字符本身;若轉(zhuǎn)換為整型,它是擴(kuò)展字符的ASCII碼值(0~255)。982.輸出方法格式1:System.out.print(表達(dá)式);格式2:System.out.println(表達(dá)式);功能:在屏幕上輸出表達(dá)式的值。08三月2025993.5.2圖形界面下的輸入輸出方法有關(guān)圖形界面的程序設(shè)計(jì)將在后邊的章節(jié)詳細(xì)介紹,本節(jié)將以對(duì)話框的形式介紹圖形界面下的輸入輸出。在javax.swing類庫(kù)中的JoptionPane類提供了相應(yīng)的輸入輸出方法。08三月20251001.輸入方法格式1:JOptionPane.showInputDialog(輸入提示信息);格式2:JOptionPane.showInputDialog(輸入提示信息,初值);功能:系統(tǒng)顯示一個(gè)對(duì)話框,可以在輸入提示信息后邊的文本框中輸入值。格式2帶有初值,在輸入的文本框中顯示該值,若要改變其值,直接輸入新的值即可。08三月20251012.輸出方法格式1:JOptionPane.showMessageDialog(框架,表達(dá)式);格式2:JOptionPane.showMessageDialog(框架,表達(dá)式,標(biāo)題,信息類型);功能:在對(duì)話框中顯示相關(guān)的信息。08三月2025102謝謝!08三月20251033.6分支控制語(yǔ)句3.7循環(huán)控制語(yǔ)句08三月2025104項(xiàng)目三Java語(yǔ)法基礎(chǔ)3.6分支控制語(yǔ)句Java語(yǔ)句包含一系列的流程控制語(yǔ)句,這些控制語(yǔ)句表達(dá)了一定的邏輯關(guān)系,所以可選擇性的或者是可重復(fù)性的執(zhí)行某些代碼行,每一個(gè)流程控制語(yǔ)句實(shí)際上是個(gè)代碼塊,塊的開(kāi)始和結(jié)束都是用大括號(hào)來(lái)進(jìn)行表示的,其中“{”表示開(kāi)始,“}”表示結(jié)束。08三月20251053.6.1if條件分支語(yǔ)句三種不同形式if條件分支語(yǔ)句格式1:if(布爾表達(dá)式)語(yǔ)句;功能:若布爾表達(dá)式(關(guān)系表達(dá)式或邏輯表達(dá)式)產(chǎn)生true(真)值,則執(zhí)行語(yǔ)句,否則跳過(guò)該語(yǔ)句。08三月2025106格式2if(布爾表達(dá)式)語(yǔ)句1;else語(yǔ)句2;08三月2025107格式3if(布爾表達(dá)式1)語(yǔ)句1;elseif(布爾表達(dá)式2)語(yǔ)句2;……elseif(布爾表達(dá)式n-1)語(yǔ)句n-1;else語(yǔ)句n;08三月2025108例題

考試成績(jī)劃定五個(gè)級(jí)別,當(dāng)成績(jī)大于或等于90分時(shí),劃定為優(yōu);當(dāng)成績(jī)大于或等于80且小于90時(shí),劃定為良;當(dāng)成績(jī)大于或等于70且小于80時(shí),劃定為中;當(dāng)成績(jī)大于或等于60且小于70時(shí),劃定為及格;當(dāng)成績(jī)小于60時(shí),劃定為差??梢詫?xiě)出下邊的程序代碼:08三月2025109/*這是一個(gè)劃定成績(jī)級(jí)別的簡(jiǎn)單程序*程序的名字是ScoreExam3_7.java*它主要演示多者擇一分支語(yǔ)句的應(yīng)用。*/08三月2025110publicclassScoreExam3_7{publicstaticvoidmain(String[]args){intscore=82;if(score>=90)System.out.println("成績(jī)?yōu)閮?yōu)="+score);elseif(score>=80)System.out.println("成績(jī)?yōu)榱?"+score);elseif(score>=70)System.out.println("成績(jī)?yōu)橹?"+score);elseif(score>=60)System.out.println("成績(jī)?yōu)榧案?"+score);elseSystem.out.println("成績(jī)?yōu)椴?"+score);}}08三月20251113.6.2switch條件語(yǔ)句switch語(yǔ)句的一般格式如下:switch(表達(dá)式){case常量1:語(yǔ)句組1;[break;]case常量2:語(yǔ)句組2;[break;]……………case常量n:語(yǔ)句組n;[break;]default:語(yǔ)句組n+1;}08三月2025112publicclassSwitchExam3_4{publicstaticvoidmain(String[]args){ intscore=75; intn=score/10;

08三月2025113switch(n){ case10: case9:System.out.println("成績(jī)?yōu)閮?yōu)="+score);break; case8:System.out.println("成績(jī)?yōu)榱?"+score); break; case7:System.out.println("成績(jī)?yōu)橹?"+score); break; case6:System.out.println("成績(jī)?yōu)榧案?"+score); break; default:System.out.println("成績(jī)?yōu)椴?"+score); }}}08三月20251143.7循環(huán)控制語(yǔ)句08三月20251153.7.1for循環(huán)語(yǔ)句for循環(huán)語(yǔ)句的一般格式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){

語(yǔ)句組;//循環(huán)體}08三月20251163.7.2While和do-While循環(huán)語(yǔ)句一般情況下,for循環(huán)用于處理確定次數(shù)的循環(huán);while和do-while循環(huán)用于處理不確定次數(shù)的循環(huán)。本章小結(jié)本章簡(jiǎn)要介紹了Java程序中的基本量:標(biāo)識(shí)符、數(shù)據(jù)類型、運(yùn)算符及表達(dá)式,它們是程序設(shè)計(jì)的基礎(chǔ),應(yīng)該掌握它們并能熟練地應(yīng)用。數(shù)據(jù)類型可分為基本數(shù)據(jù)類型和引用型數(shù)據(jù)類型兩種,本章介紹了基本數(shù)據(jù)類型,引用型數(shù)據(jù)類型將在后邊的章節(jié)中介紹。08三月2025117本章還討論了程序的注釋、簡(jiǎn)單的輸入輸出方法、條件分支結(jié)構(gòu)的控制語(yǔ)句和循環(huán)結(jié)構(gòu)的控制語(yǔ)句以及break、continue、return等控制語(yǔ)句,它們是程序設(shè)計(jì)的基礎(chǔ),應(yīng)該認(rèn)真理解熟練掌握并應(yīng)用。08三月2025118本章的重點(diǎn):標(biāo)識(shí)符的命名規(guī)則、變量和常量的定義及使用、運(yùn)算符及表達(dá)式、不同數(shù)據(jù)類型值之間的相互轉(zhuǎn)換規(guī)則、運(yùn)算式子中的運(yùn)算規(guī)則(按運(yùn)算符的優(yōu)先順序從高向低進(jìn)行,同級(jí)的運(yùn)算符則按從左到右的方向進(jìn)行)。08三月2025119三種格式的if分支結(jié)構(gòu)和switch多分支結(jié)構(gòu)、for循環(huán)結(jié)構(gòu)、while循環(huán)結(jié)構(gòu)、do…while循環(huán)結(jié)構(gòu)、break語(yǔ)句、continue語(yǔ)句和return語(yǔ)句的使用。要注意不同格式分支結(jié)構(gòu)的功能,不同循環(huán)結(jié)構(gòu)之間使用上的差別,只有這樣,我們才能在實(shí)際應(yīng)用中正確使用它們。08三月2025120謝謝!08三月2025121項(xiàng)目四數(shù)組4.1一維數(shù)組08三月202512208三月20254.1一維數(shù)組1.一維數(shù)組的聲明一維數(shù)組聲明的一般格式如下:數(shù)據(jù)類型數(shù)組名[];或:數(shù)據(jù)類型[]數(shù)組名;123例如:intintArray[];//聲明一個(gè)整型數(shù)組StringstrArray[];//聲明一個(gè)字符串?dāng)?shù)組08三月202512408三月20252.一維數(shù)組大小的定義及初始化一般情況下,使用new運(yùn)算符定義數(shù)組大小,例如下邊的程序語(yǔ)句:intintA[];//聲明一個(gè)整型數(shù)組intA=newint[5];//定義數(shù)組可以存放5個(gè)整數(shù)元素125StringstrA[];//聲明一個(gè)字符串?dāng)?shù)組StringstrA=newString[3];//定義數(shù)組可以存放三個(gè)字符串元素08三月2025126//為數(shù)組中每個(gè)元素賦值intA[0]=1;//數(shù)組下標(biāo)從0開(kāi)始intA[1]=2;intA[2]=3;intA[3]=4;intA[4]=5;strA[0]="How";strA[1]="are";strA[2]="you";08三月2025127通常我們也采用如下方式為數(shù)組元素賦初值并由初值的個(gè)數(shù)確定數(shù)組的大?。篿ntintA[]={1,2,3,4,5};StringstringA[]={"How","are","you"};以達(dá)到和上邊同樣的目的。08三月202512808三月20253.一維數(shù)組元素的引用如前所述,以數(shù)組名和下標(biāo)引用數(shù)組元素,數(shù)組元素的引用方式為:數(shù)組名[下標(biāo)]129謝謝!08三月2025130項(xiàng)目四數(shù)組4.2二維及多維數(shù)組08三月20251314.2二維及多維數(shù)組1、二維數(shù)組的聲明聲明二維數(shù)組的一般格式如下:數(shù)據(jù)類型

數(shù)組名[][];或:數(shù)據(jù)類型[][]數(shù)組名;08三月202513208三月20252、二維數(shù)組大小的定義及初始化(1)先聲明而后定義最后再賦值例如下邊的程序語(yǔ)句:intmatrix[][];//聲明二維整型數(shù)組matrixmatrix=newint[3][3];//定義matrix包含3×3九個(gè)元素133matrix[0][0]=1;//為第一個(gè)元素賦值matrix[0][1]=2;//為第二個(gè)元素賦值………………matrix[2][2]=9;//為第九個(gè)元素賦值08三月202513408三月2025(2)直接定義大小而后賦值例如下邊的程序語(yǔ)句:intmatrix=newint[3][3];//定義二維整型數(shù)組matrix包含3×3九個(gè)元素matrix[0][0]=1;//為第一個(gè)元素賦值………………matrix[2][2]=9;//為第九個(gè)元素賦值13508三月2025(3)由初始化值的個(gè)數(shù)確定數(shù)組的大小在元素個(gè)數(shù)較少并且初值已確定時(shí)通常采用此種方式,例如:intmatrix[][]={{1,2,3},{4,5,6},{7,8,9}};//由元素個(gè)數(shù)確定3行3列13608三月20253.二維數(shù)組元素的應(yīng)用1374.不同長(zhǎng)度的二維數(shù)組要存儲(chǔ)乘法表的值需要一個(gè)三角數(shù)組。在Java中,由于把二維數(shù)組看作是一維數(shù)組的數(shù)組,因此可以把二維數(shù)組的每一行作為一個(gè)一維數(shù)組分別定義,并不要求二維數(shù)組每一行的元素個(gè)數(shù)都相同。08三月2025138inta[][]=newint[2][];//說(shuō)明a是二維數(shù)組,有2行a[0]=newint[3]; //a[0]定義第1行,有3列a[1]=newint[5]; //a[1]定義第2行,有5列08三月2025139謝謝!08三月2025140項(xiàng)目四數(shù)組

4.3數(shù)組(Arrays)類08三月202514108三月20254.3數(shù)組(Arrays)類數(shù)組類提供眾多的類方法(靜態(tài)方法)對(duì)各種類型的數(shù)組進(jìn)行運(yùn)算操作,下邊列出一些常用的類方法供大家使用時(shí)參考,如果使用其他的方法可參閱JDK文檔。142(1)staticvoidsort(數(shù)據(jù)類型[]數(shù)組名)

用于對(duì)數(shù)組進(jìn)行排序(升序),數(shù)據(jù)類型是除boolean之外的任何數(shù)據(jù)類型。08三月2025143(2)staticvoidsort(數(shù)據(jù)類型[]a,intstart,intend)

對(duì)數(shù)組a中指定范圍從start到end位置之間的數(shù)據(jù)元素進(jìn)行排序。當(dāng)start大于end時(shí)引發(fā)IllegalArgumentException異常。當(dāng)超界時(shí),引發(fā)ArrayIndexOutOfBoundsException異常。08三月2025144(3)staticvoidfill(數(shù)據(jù)類型[]a,數(shù)據(jù)類型value)

設(shè)置a數(shù)組各個(gè)元素的值為value。08三月2025145(4)staticvoidfill(數(shù)據(jù)類型[]a,intstart,intend,數(shù)據(jù)類型value)

設(shè)置a數(shù)組中從start到end位置的元素的值為value。08三月2025146(5)staticintbinarySeach(數(shù)據(jù)類型[]a,數(shù)據(jù)類型key)

利用二進(jìn)制搜索數(shù)組(排過(guò)序)內(nèi)元素值為key的所在位置。08三月2025147(6)staticbooleanequals(數(shù)據(jù)類型[]d1,數(shù)據(jù)類型[]d2)

判斷d1和d2兩數(shù)組是否相等。08三月2025148我們只要掌握類方法的引用即可對(duì)數(shù)組進(jìn)行相關(guān)的運(yùn)算操作。類方法的一般引用格式如下:類名.方法名(參數(shù)表);08三月2025149謝謝!08三月2025150項(xiàng)目四數(shù)組4.4字符串08三月202515108三月20254.4

字符串字符是一種基本的數(shù)據(jù)類型,而字符串是抽象的數(shù)據(jù)類型,只能使用對(duì)象表示字符串。前邊我們已經(jīng)對(duì)字符串進(jìn)行了簡(jiǎn)單處理及其操作。下邊我們將詳細(xì)介紹用于字符串處理的類及其應(yīng)用。15208三月20254.4.1String類String類是最常用的一個(gè)類,它用于生成字符串對(duì)象,對(duì)字符串進(jìn)行相關(guān)的處理。1、構(gòu)造字符串對(duì)象在前邊我們使用字符串時(shí),是直接把字符串常量賦給了字符串對(duì)象。其實(shí)String類提供了如下一些常用的構(gòu)造函數(shù)用來(lái)構(gòu)造字符串對(duì)象:15308三月20251)String()構(gòu)造一個(gè)空的字符串對(duì)象。2)String(charchars[])以字符數(shù)組chars的內(nèi)容構(gòu)造一個(gè)字符串對(duì)象。3)String(charchars[],intstartIndex,intnumChars)以字符數(shù)組chars中從startIndex位置開(kāi)始的numChars個(gè)字符構(gòu)造一個(gè)字符串對(duì)象。15408三月20254)String(byte[]bytes)以字節(jié)數(shù)組bytes的內(nèi)容構(gòu)造一個(gè)字符串對(duì)象。5)String(byte[]

bytes,int

offset,int

length)以字節(jié)數(shù)組bytes中從offset位置開(kāi)始的length個(gè)字節(jié)構(gòu)造一個(gè)字符串對(duì)象。15508三月20252.String類對(duì)象的常用方法String類也提供了眾多的方法用于操作字符串,以下列出一些常用的方法:1)publicintlength()此方法返回字符串的字符個(gè)數(shù)。15608三月20252)publiccharcharAt(intindex)此方法返回字符串中index位置上的字符,其中index值的范圍是0~length-1。157例如:Stringstr1=newString(“Thisisastring.”);//定義字符串對(duì)象str1intn=str1.length();//獲取字符串str1的長(zhǎng)度n=17charch1=str1.charAt(n-2);//獲取字符串str1倒數(shù)第二個(gè)字符,ch1=’g’08三月202515808三月20253)publicintindexOf(charch)返回字符ch在字符串中第一次出現(xiàn)的位置。4)publiclastIndexOf(charch)返回字符ch在字符串中最后一次出現(xiàn)的位置。1595)publicintindexOf(Stringstr)返回子串str在字符串中第一次出現(xiàn)的位置。6)publicintlastIndexOf(Stringstr)返回子串str在字符串中最后一次出現(xiàn)的位置。08三月202516008三月20257)publicintindexOf(charch,intfromIndex)返回字符ch在字符串中fromIndex位置以后第一次出現(xiàn)的位置。8)publiclastIndexOf(charch,intfromIndex)返回字符ch在字符串中fromIndex位置以后最后一次出現(xiàn)的位置16108三月20259)publicintindexOf(Stringstr,intfromIndex)返回子串str在字符串中fromIndex位置后第一次出現(xiàn)的位置。10)publicintlastIndexOf(Stringstr,intfromIndex)返回子串str在字符串中fromIndex位置后最后一次出現(xiàn)的位置。16208三月202516311)publicStringsubstring(int

beginIndex)返回字符串中從beginIndex位置開(kāi)始的字符子串。12)publicStringsubstring(int

beginIndex,int

endIndex)返回字符串中從beginIndex位置開(kāi)始到endIndex位置(不包括該位置)結(jié)束的字符子串。08三月202516413)publicStringcontact(Stringstr)用來(lái)將當(dāng)前字符串與給定字符串str連接起來(lái)。14)publicStringreplace(charoldChar,charnewChar)用來(lái)把串中所有由oldChar指定的字符替換成由newChar指定的字符以生成新串。15)publicStringtoLowerCase()把串中所有的字符變成小寫(xiě)且返回新串。16)publicStringtoUpperCase()把串中所有的字符變成大寫(xiě)且返回新串。08三月202516508三月202517)publicStringtrim()去掉串中前導(dǎo)空格和拖尾空格且返回新串。18)publicString[]split(String

regex)以regex為分隔符來(lái)拆分此字符串。16608三月20254.4.2StringBuffer類在字符串處理中,String類生成的對(duì)象是不變的,即String中對(duì)字符串的運(yùn)算操作不是在源字符串對(duì)象本身上進(jìn)行的,而是使用源字符串對(duì)象的拷貝去生成一個(gè)新的字符串對(duì)象,其操作的結(jié)果不影響源串。1674.4.3StringTokenizer類字符串是Java程序中主要的處理對(duì)象,在Java.util類包中提供的StringTokenizer(字符串標(biāo)記)類主要用于對(duì)字符串的分析、析取。如提取一篇文章中的每個(gè)單詞等。08三月2025168謝謝!08三月2025169項(xiàng)目五面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ)5.1面向?qū)ο蟮幕靖攀?8三月202517008三月20255.1面向?qū)ο蟮幕靖攀鋈藗兤诖环N效率高、簡(jiǎn)單、易理解且更加符合人們思維習(xí)慣的程序設(shè)計(jì)語(yǔ)言,以加快軟件的開(kāi)發(fā)步伐、縮短軟件開(kāi)發(fā)生命周期,面向?qū)ο缶褪窃谶@種情況下應(yīng)運(yùn)而生的。171我們可以把客觀世界中的每一個(gè)實(shí)體都看作是一個(gè)對(duì)象,如一個(gè)人、一朵花、一臺(tái)機(jī)床、一個(gè)輸入框等等。因此對(duì)象可以簡(jiǎn)單定義為:“展示一些定義好的行為的、有形的實(shí)體”。08三月2025172當(dāng)然在我們的程序開(kāi)發(fā)中,對(duì)象的定義并不局限于看得見(jiàn)摸得著的實(shí)體,諸如一個(gè)咨詢公司,它作為一個(gè)機(jī)構(gòu),并沒(méi)有物理上的形狀,但卻具有概念上的形狀,它有明確的經(jīng)營(yíng)目的和業(yè)務(wù)活動(dòng)。08三月2025173根據(jù)面向?qū)ο蟮某珜?dǎo)者GradyBooch的理論,對(duì)象具有如下特性:(1)它具有一種狀態(tài);(2)它可以展示一種行為;(3)它具有唯一的標(biāo)識(shí)。08三月2025174對(duì)象的狀態(tài)通過(guò)一系列屬性及其屬性值來(lái)表示;對(duì)象的行為是指在一定的期間內(nèi)屬性的改變;標(biāo)識(shí)是用來(lái)識(shí)別對(duì)象的,每一個(gè)對(duì)象都有唯一的標(biāo)識(shí),諸如每個(gè)人都有唯一的特征,在社會(huì)活動(dòng)中,使用身份證號(hào)碼來(lái)識(shí)別。08三月202517508三月2025我們生活在一個(gè)充滿對(duì)象的世界中,放眼望去,不同形狀、不同大小和顏色各異的對(duì)象;靜止的和移動(dòng)的對(duì)象。面對(duì)這些用途各異、五花八門的對(duì)象,我們?cè)撊绾蜗率痔幚硭鼈兡兀?76借鑒于動(dòng)物學(xué)家將動(dòng)物分成綱、屬、科、種的方法。我們也可以把這些對(duì)象按照它們所擁有的共同屬性進(jìn)行分類。例如,鴿子、燕子、麻雀等都叫作鳥(niǎo)。它們具有一些共同的特性:有羽毛、有飛翔能力、下蛋孵化下一代等。因此我們把它們歸屬為鳥(niǎo)類。08三月2025177綜上所述我們可以簡(jiǎn)單地把類定義為:“具有共同屬性和行為的一系列對(duì)象”。08三月202517808三月20255.1.2面向?qū)ο蟮奶攸c(diǎn)1.什么是面向?qū)ο竺嫦驅(qū)ο蟮姆椒▽⑾到y(tǒng)看作是現(xiàn)實(shí)世界對(duì)象的集合,在現(xiàn)實(shí)世界中包含被歸類的對(duì)象。179如前所述,面向?qū)ο笙到y(tǒng)是以類為基礎(chǔ)的,我們把一系列具有共同屬性和行為的對(duì)象劃歸為一類。屬性代表類的特性,行為代表有類完成的操作。08三月2025180例如,汽車類定義了汽車必須有屬性:車輪個(gè)數(shù)、顏色、型號(hào)、發(fā)動(dòng)機(jī)的能量等。類的行為有:?jiǎn)?dòng)、行駛、加速、停止等。對(duì)象是類的一個(gè)實(shí)例,它展示了類的屬性和行為。例如,張經(jīng)理的那輛奔馳牌轎車就是汽車類的一個(gè)對(duì)象08三月202518108三月20252.面向?qū)ο蟮奶匦?)抽象所謂抽象就是不同的角色站在不同的角度觀察世界。面向?qū)ο蟮某绦蛟O(shè)計(jì)可以根據(jù)問(wèn)題來(lái)描述問(wèn)題,不必受限于特定類型的問(wèn)題。182比如,當(dāng)你購(gòu)買手機(jī)時(shí),站在使用的角度,你所關(guān)注的是手機(jī)的品牌、外觀及功能等等。然而,對(duì)于手機(jī)的維修人員來(lái)說(shuō),站在維修的角度,他們所關(guān)注的是手機(jī)的內(nèi)部,各部分元器件的組成及工作原理等。08三月2025183其實(shí),所有編程語(yǔ)言的最終目的都是提供一種“抽象”方法。在早期的程序設(shè)語(yǔ)言中,一般把所有問(wèn)題都?xì)w納為列表或算法,其中一部分是面向基于“強(qiáng)制”的編程,而另一部分是專為處理圖形符號(hào)設(shè)計(jì)的。08三月2025184每種方法都有自己特殊的用途,只適合解決某一類的問(wèn)題。面向?qū)ο蟮某绦蛟O(shè)計(jì)可以根據(jù)問(wèn)題來(lái)描述問(wèn)題,不必受限于特定類型的問(wèn)題。08三月20251852)繼承繼承提供了一種有助于我們概括出不同類中共同屬性和行為的機(jī)制,并可由此派生出各個(gè)子類。08三月2025186在Java中,不允許類的多重繼承(即子類從多個(gè)父類繼承屬性和行為),也就是說(shuō)子類只允許有一個(gè)父類。父類派生多個(gè)子類,子類又可以派生多個(gè)子子類……這樣就構(gòu)成了類的層次結(jié)構(gòu)。08三月202518708三月20253)封裝封裝提供了一種有助于我們向用戶隱藏他們所不需要的屬性和行為的機(jī)制,而只將用戶可直接使用的那些屬性和行為展示出來(lái)。18808三月20254)多態(tài)多態(tài)指的是對(duì)象在不同情況下具有不同表現(xiàn)的一種能力。在Java中通過(guò)方法的重載和覆蓋來(lái)實(shí)現(xiàn)多態(tài)性。18908三月20253.面向?qū)ο蟮暮锰幗裉煳覀冞x擇面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,其主要原因是:1)現(xiàn)實(shí)的模型從邏輯理念上講,用面向?qū)ο蟮姆椒▉?lái)描述現(xiàn)實(shí)世界的模型比傳統(tǒng)的過(guò)程方法更符合人的思維習(xí)慣。19008三月20252)重用性在面向?qū)ο蟮某绦蛟O(shè)計(jì)過(guò)程中,我們創(chuàng)建了類,這些類可以被其他的應(yīng)用程序所重用,這就節(jié)省程序的開(kāi)發(fā)時(shí)間和開(kāi)發(fā)費(fèi)用,也有利于程序的維護(hù)。19108三月20253)可擴(kuò)展性面向?qū)ο蟮某绦蛟O(shè)計(jì)方法有利于應(yīng)用系統(tǒng)的更新?lián)Q代。當(dāng)對(duì)一個(gè)應(yīng)用系統(tǒng)進(jìn)行某項(xiàng)修改或增加某項(xiàng)功能時(shí),不需要完全丟棄舊的系統(tǒng),只需對(duì)要修改的部分進(jìn)行調(diào)整或增加功能即可??蓴U(kuò)展性是面向?qū)ο蟪绦蛟O(shè)計(jì)的主要優(yōu)點(diǎn)之一。192謝謝!08三月2025193項(xiàng)目五面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ)

5.2類08三月202519408三月20255.2類5.2.1定義類如前所述,類是對(duì)現(xiàn)實(shí)世界中實(shí)體的抽象,類是一組具有共同特征和行為的對(duì)象的抽象描述。19508三月2025因此,一個(gè)類的定義包括如下兩個(gè)方面:定義屬于該類對(duì)象共有的屬性(屬性的類型和名稱);定義屬于該類對(duì)象共有的行為(所能執(zhí)行的操作即方法)。19608三月2025類包含類的聲明和類體兩部分,其定義類的一般格式如下:[訪問(wèn)限定符][修飾符]class類名[extends父類名][implements接口名列表>]//類聲明

197{//類體開(kāi)始標(biāo)志[類的成員變量說(shuō)明]//屬性說(shuō)明[類的構(gòu)造方法定義][類的成員方法定義]//行為定義}//類體結(jié)束標(biāo)志08三月202519808三月20255.2.2成員變量成員變量用來(lái)表明類的特征(屬性)。聲明或定義成員變量的一般格式如下:[訪問(wèn)限定符][修飾符]數(shù)據(jù)類型成員變量名[=初始值];199static表明聲明的成員變量為靜態(tài)的。靜態(tài)成員變量的值可以由該類所有的對(duì)象共享,它屬于類,而不屬于該類的某個(gè)對(duì)象。即使不創(chuàng)建對(duì)象,使用“類名.靜態(tài)成員變量”也可訪問(wèn)靜態(tài)成員變量。final表明聲明的成員變量是一個(gè)最終變量,即常量。08三月2025200transient表明聲明的成員變量是一個(gè)暫時(shí)性成員變量。一般來(lái)說(shuō)成員變量是類對(duì)象的一部分,與對(duì)象一起被存檔(保存),但暫時(shí)性成員變量不被保存。volatile表明聲明的成員變量在多線程環(huán)境下的并發(fā)線程中將保持變量的一致性。08三月202520108三月20255.2.3成員方法方法用來(lái)描述對(duì)象的行為,在類的方法中可分為構(gòu)造器方法和成員方法,先介紹成員方法。成員方法用來(lái)實(shí)現(xiàn)類的行為。方法也包含兩部分,方法聲明和方法體(操作代碼)。20208三月2025方法定義的一般格式如下:[訪問(wèn)限定符][修飾符]返回值類型方法名([形式參數(shù)表])[throws異常表]203{[變量聲明]//方法內(nèi)用的變量,局部變量[程序代碼]//方法的主體代碼[return[表達(dá)式]]//返回語(yǔ)句}08三月202520408三月20255.2.4構(gòu)造方法構(gòu)造方法用來(lái)構(gòu)造類的對(duì)象。如果在類中沒(méi)有構(gòu)造方法,在創(chuàng)建對(duì)象時(shí),系統(tǒng)使用默認(rèn)的構(gòu)造方法。205定義構(gòu)造方法的一般格式如下:[public]類名([形式參數(shù)列表]){[方法體]}08三月202520608三月2025我們可以把構(gòu)造方法的格式和成員方法的格式作一個(gè)比較,可以看出構(gòu)造方法是一個(gè)特殊的方法。應(yīng)該嚴(yán)格按照構(gòu)造方法的格式來(lái)編寫(xiě)構(gòu)造方法,否則構(gòu)造方法將不起作用。20708三月2025有關(guān)構(gòu)造方法的格式強(qiáng)調(diào)如下:1)構(gòu)造方法的名字就是類名。2)訪問(wèn)限定只能使用public或缺省。一般聲明為public,如果缺省,則只能在同一個(gè)包中創(chuàng)建該類的對(duì)象。3)在方法體中不能使用return語(yǔ)句返回一個(gè)值。208謝謝!08三月2025209項(xiàng)目五面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ)5.3對(duì)象08三月202521008三月20252115.3對(duì)象5.3.1對(duì)象的創(chuàng)建創(chuàng)建對(duì)象需要以下三個(gè)步驟:1.聲明對(duì)象聲明對(duì)象的一般格式如下:類名

對(duì)象名;例如:Citizenp1,p2;//聲明了兩個(gè)公民對(duì)象Floatf1,f2;//聲明了兩個(gè)浮點(diǎn)數(shù)對(duì)象08三月202521208三月20252132.創(chuàng)建對(duì)象對(duì)象只有在創(chuàng)建后才能使用,創(chuàng)建對(duì)象的一般格式如下:對(duì)象名=new類構(gòu)造方法名([實(shí)參表]);其中:類構(gòu)造方法名就是類名。new運(yùn)算符用于為對(duì)象分配存儲(chǔ)空間,它調(diào)用構(gòu)造方法,獲得對(duì)象的引用(對(duì)象在內(nèi)存中的地址)。例如:p1=newCitizen(“張三”,”張山”,”女”,newDate(),”中國(guó)北京”,);f1=newFloat(26f);f2=newFloat(38f);08三月2025214注意:聲明對(duì)象和創(chuàng)建對(duì)象也可以合并為一條語(yǔ)句,其一般格式是:類名

對(duì)象名=new類構(gòu)造方法名([實(shí)參表]);08三月2025215例如:Citizenp1=newCitizen(“張三”,”張山”,”女”,newDate(),”中國(guó)北京”,);Floatf1=newFloat(26f);Floatf2=newFloat(38f);08三月202521608三月20253.引用對(duì)象在創(chuàng)建對(duì)象之后,就可以引用對(duì)象了。引用對(duì)象的成員變量或成員方法需要對(duì)象運(yùn)算符“.”。引用成員變量的一般格式是:對(duì)象名.成員變量名21708三月2025引用成員方法的一般格式是:對(duì)象名.成員方法名([實(shí)參列表])在創(chuàng)建對(duì)象時(shí),某些屬性沒(méi)有給于確定的值,隨后可以修改這些屬性值。2185.3.3對(duì)象的清除在Java中,程序員不需要考慮跟蹤每個(gè)生成的對(duì)象,系統(tǒng)采用了自動(dòng)垃圾收集的內(nèi)存管理方式。運(yùn)行時(shí)系統(tǒng)通過(guò)垃圾收集器周期性地清除無(wú)用對(duì)象并釋放它們所占的內(nèi)存空間。08三月2025219垃圾收集器作為系統(tǒng)的一個(gè)線程運(yùn)行,當(dāng)內(nèi)存不夠用時(shí)或當(dāng)程序中調(diào)用了System.gc()方法要求垃圾收集時(shí),垃圾收集器便于系統(tǒng)同步運(yùn)行開(kāi)始工作。在系統(tǒng)空閑時(shí),垃圾收集器和系統(tǒng)異步工作。08三月2025220事實(shí)上,在類中都提供了一個(gè)撤銷對(duì)象的方法finalize(),但并不提倡使用該方法。若在程序中確實(shí)希望清除某對(duì)象并釋放它所占的存儲(chǔ)空間時(shí),只須將空引用(null)賦給它即可。08三月2025221謝謝!08三月2025222項(xiàng)目五面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ)5.4方法的進(jìn)一步討論5.5變量的進(jìn)一步討論08三月20252235.4方法的進(jìn)一步討論主要討論方法引用中的參數(shù)傳遞、方法的重載以及static(靜態(tài))方法等概念。08三月20252245.4.1方法引用及參數(shù)傳遞在Java中,方法引用有兩種方式:系統(tǒng)自動(dòng)引用和程序引用。系統(tǒng)自動(dòng)引用一般用在一些特定的處理中。本節(jié)主要介紹程序引用方法及參數(shù)傳遞問(wèn)題。08三月20252251.方法聲明中的形式參數(shù)在方法聲明中的“()”中說(shuō)明的變量被稱之為形式參數(shù)(形參),形參也相當(dāng)于本方法中的局部變量,和一般局部變量所不同的是,它自動(dòng)接受方法引用傳遞過(guò)來(lái)的值(相當(dāng)于賦值)。然后在方法的執(zhí)行中起作用。08三月2025226例如,在Citizen類中的方法:publicvoidsetName(Stringname){=name;}當(dāng)對(duì)象引用該方法時(shí),該方法的形參name接受對(duì)象引用傳遞過(guò)來(lái)的名字,然后它被賦給對(duì)象的屬性name。08三月20252272.方法引用中的實(shí)際參數(shù)一般我們把方法引用中的參數(shù)稱為實(shí)際參數(shù)(實(shí)參),實(shí)參可以是常量,變量、對(duì)象或表達(dá)式。08三月2025228例如:Citizenp2=newCitizen("李明","","男",null,"南京","50110119850624273x");p2.setName("李鳴");08三月20252293.參數(shù)傳遞方式參數(shù)傳遞的方式有兩種:按值傳遞和按引用傳

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論