版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java簡(jiǎn)介董東計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院1第1章Java簡(jiǎn)介1.1面向?qū)ο蟮某绦蛟O(shè)計(jì) 1.2開(kāi)發(fā)環(huán)境 1.3在命令提示符窗口設(shè)計(jì)程序 1.4使用jGRASP設(shè)計(jì)程序 1.5使用Eclipse設(shè)計(jì)程序 1.6Java程序結(jié)構(gòu) 1.7代碼風(fēng)格 1.8注釋2馮?諾伊曼體系結(jié)構(gòu)31.1面向?qū)ο蟮某绦蛟O(shè)計(jì)進(jìn)入九十年代后,計(jì)算機(jī)的發(fā)展呈現(xiàn)出特征跨平臺(tái)網(wǎng)絡(luò)化嵌入式硬件環(huán)境的變化對(duì)計(jì)算機(jī)語(yǔ)言提出了新的要求。比如:能夠運(yùn)行在各種消費(fèi)類電子產(chǎn)品上,如手機(jī)、平板電腦、洗衣機(jī)、空調(diào)、微波爐等。能夠處理多線程;能夠以“面向?qū)ο蟆钡乃季S模式(paradigm)編寫(xiě)程序,以簡(jiǎn)化大規(guī)模復(fù)雜應(yīng)用的開(kāi)發(fā)。4Java語(yǔ)言設(shè)計(jì)理念:編寫(xiě)一次,到處運(yùn)行(writeonce,runanywhere)發(fā)展1996年1月,Sun公司發(fā)布了Java的第一個(gè)開(kāi)發(fā)工具箱JDK1.0版本1999年6月,Sun公司發(fā)布了第二代Java平臺(tái)(簡(jiǎn)稱Java2)2005年6月,Sun公司發(fā)布JavaSE6從此,各種Java版本中不再有“2”:J2SE改為JavaSE;J2EE改為JavaEE;J2ME改為JavaME。2009年,Sun公司被甲骨文(Oracle)公司收購(gòu)56JavaEE已經(jīng)被轉(zhuǎn)移至Eclipse基金會(huì),并更名為JakartaEE。OpenJDK成為Java標(biāo)準(zhǔn)實(shí)現(xiàn)的主要開(kāi)源參考實(shí)現(xiàn)1.1面向?qū)ο蟮某绦蛟O(shè)計(jì)面向?qū)ο蟮某绦蛟O(shè)計(jì)Object-OrientedProgramming,OOP一種問(wèn)題求解的范式創(chuàng)建對(duì)象,讓對(duì)象做些事情某對(duì)象p上預(yù)定義了若干功能,稱為“方法”另外一個(gè)對(duì)象q訪問(wèn)對(duì)象p的功能稱為“方法調(diào)用”或者“消息傳遞”具有相同特征的對(duì)象的抽象稱為“類”問(wèn)題求解在現(xiàn)實(shí)生活中無(wú)處不在7面向?qū)ο髥?wèn)題求解舉例學(xué)生小明餓了,想要吃飯。這就產(chǎn)生了問(wèn)題。為了解決這個(gè)問(wèn)題,小明來(lái)到餐廳,跟餐廳服務(wù)員說(shuō),“要一碗牛肉面”。餐廳服務(wù)員對(duì)后臺(tái)的廚師大聲喊:“一碗牛肉面!”在這個(gè)場(chǎng)景中涉及了三個(gè)對(duì)象:小明、餐廳服務(wù)員、廚師。這三個(gè)對(duì)象合作解決“小明肚子餓”的問(wèn)題。首先小明向餐廳服務(wù)員發(fā)出了消息,啟動(dòng)了餐廳服務(wù)員的工作;餐廳服務(wù)向廚師發(fā)送消息,啟動(dòng)了廚師的工作;廚師完成工作后把結(jié)果(一碗面)傳遞給服務(wù)員,服務(wù)員把這一碗面交付給小明,并收款;小明吃到肚子里,“肚子餓”問(wèn)題解決。8面向?qū)ο蟮膯?wèn)題求解模式就是現(xiàn)實(shí)生活中的“對(duì)象+消息”。問(wèn)題求解范式在運(yùn)行時(shí)刻,有很多為了求解同一個(gè)問(wèn)題而相互合作的對(duì)象,這些對(duì)象之間通過(guò)發(fā)送消息實(shí)現(xiàn)合作?!皩?duì)象”是現(xiàn)實(shí)世界的事物在計(jì)算機(jī)中的映射?,F(xiàn)實(shí)世界的任何事物,無(wú)論是看得見(jiàn)的還是看不見(jiàn)的,都可以映射到計(jì)算機(jī)中的“對(duì)象”:一本書(shū)、一部手機(jī)、一輛汽車、一門(mén)課等。9面向?qū)ο?/p>
=類
+對(duì)象
+消息
+繼承屬性和行為10一輛小汽車屬性發(fā)動(dòng)機(jī)排量(displacement)型號(hào)(model)車身顏色(color)行駛速度(speed)功能加速(accelerate)鳴笛(honk)剎車(brake)舉例定義Car類屬性方法定義MyCar類創(chuàng)建汽車對(duì)象讓其鳴笛11問(wèn)題:創(chuàng)建一個(gè)汽車對(duì)象,并讓其鳴笛。Car.javaMyCar.java類和對(duì)象12類圖類圖是統(tǒng)一建模語(yǔ)言(UnifiedModellingLanguage,UML)中重要的圖之一。整個(gè)矩形框表示“類”。這個(gè)矩形框分成了三部分,分別描述類的名字、類的屬性以及類的行為。類圖不僅可以描述一個(gè)類及其組成;還可以描述類與類之間的關(guān)系。類之間的關(guān)系有:繼承(inheritance)關(guān)聯(lián)(association)實(shí)現(xiàn)(realization)依賴(dependency)13繼承繼承關(guān)系建模現(xiàn)實(shí)世界中的“is-a”關(guān)系定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)之上來(lái)進(jìn)行可以加入若干新的屬性和行為修改原來(lái)的屬性和行為使之更適合子類需要14實(shí)現(xiàn)一個(gè)類實(shí)現(xiàn)了另外一個(gè)類中聲明的行為。在UML類圖中使用末端是空心三角箭頭的虛線表示。接口(interface)和接口的實(shí)現(xiàn)類的配合體現(xiàn)了開(kāi)閉原則:對(duì)擴(kuò)展開(kāi)放;對(duì)修改封閉。也就是說(shuō),要在不改動(dòng)當(dāng)前類的情況下增加新的功能。在接口中展示了簡(jiǎn)單的API接口;在實(shí)現(xiàn)類中提供的復(fù)雜的功能實(shí)現(xiàn)。例如駕駛員看到的是方向盤(pán)、剎車踏板、油門(mén)踏板、車速儀表盤(pán)等;而汽車如何傳導(dǎo)信號(hào)給剎車片剎車、發(fā)動(dòng)機(jī)如何加速等實(shí)現(xiàn)細(xì)節(jié)被隱藏了。15封裝封裝性是面向?qū)ο蟮某绦蛟O(shè)計(jì)的主要特征之一。對(duì)訪問(wèn)者隱藏對(duì)象的狀態(tài)或內(nèi)部表示稱為“封裝”。類私有包私有16多態(tài)通過(guò)相同類型的引用把相同的消息發(fā)送給不同的對(duì)象產(chǎn)生不同的效果,這種現(xiàn)象稱為“多態(tài)”。17面向?qū)ο蟪绦蛟O(shè)計(jì)解決具體問(wèn)題的一般思路18面向?qū)ο蟪绦蛟O(shè)計(jì)
解決具體問(wèn)題的一般過(guò)程19Java程序從靜態(tài)角度看,Java程序就是類的集合;從運(yùn)行時(shí)刻看,Java程序是對(duì)象的結(jié)合。設(shè)計(jì)Java程序,就是設(shè)計(jì)若干類。一般每個(gè)類對(duì)應(yīng)一個(gè).java磁盤(pán)文本文件201.2開(kāi)發(fā)環(huán)境Java語(yǔ)言的開(kāi)發(fā)環(huán)境包括:Java開(kāi)發(fā)工具箱(JavaDevelopmentKit,JDK)編譯器(compiler)解釋器(interpreter)裝入器(loader)調(diào)試器(debugger)集成開(kāi)發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)EclipseVisualStudioCodejGrasp21jGrasp安裝官方網(wǎng)站下載頁(yè)面,下載bundedwithJava21版本/user-cgi/grasp/grasp.pl?;dl=download_jgrasp.html22jGraspbundedOpenJDK2123設(shè)計(jì)Java程序的過(guò)程設(shè)計(jì)若干類,并將其分別保存為相應(yīng)的.java文本文件,即擴(kuò)展名為.java,文件名與類名相同;編譯這些源文件,生成相應(yīng)的以.class為擴(kuò)展名的文件。這些.class文件稱為字節(jié)碼文件;啟動(dòng)Java虛擬機(jī)(JVM),將字節(jié)碼文件裝入虛擬機(jī)運(yùn)行;如果在編譯時(shí)刻或者運(yùn)行時(shí)刻發(fā)生任何錯(cuò)誤,則修改源文件,重新編譯和運(yùn)行。24Java平臺(tái)25JDK26/cn/java/technologies/downloads/#jdk21-windows設(shè)置Windows11環(huán)境變量定義JAVA_HOME在資源管理器中打開(kāi)安裝JavaJDK的目標(biāo)文件夾,該文件夾稱為JAVA_HOME;設(shè)置資源管理器顯示地址欄以及在地址欄中顯示完整路徑,并從地址欄中復(fù)制該文件夾的完整路徑;從資源管理器中右擊“此電腦”,從彈出菜單中選擇“屬性”;在彈出的“設(shè)置”對(duì)話框中選擇“系統(tǒng)|關(guān)于”;單擊“高級(jí)系統(tǒng)設(shè)置”鏈接,彈出“系統(tǒng)屬性”對(duì)話框;單擊“環(huán)境變量”,單擊“新建”,在彈出對(duì)話框中的“變量名”文本框中輸入:JAVA_HOME;在“變量值”文本框中粘貼;三個(gè)確定:?jiǎn)螕簟按_定”按鈕依次關(guān)閉三個(gè)對(duì)話框。2728123設(shè)置Windows11環(huán)境變量編輯環(huán)境變量PATH打開(kāi)“環(huán)境變量”對(duì)話框,選擇系統(tǒng)變量Path,單擊“編輯”按鈕。在“編輯環(huán)境變量”對(duì)話框中單擊“新建”。輸入%JAVA_HOME%\bin三次單擊“確定”按鈕,依次關(guān)閉對(duì)話框29設(shè)置Windows11環(huán)境變量30設(shè)置Windows10環(huán)境變量PATH在資源管理器中打開(kāi)安裝JavaJDK的目標(biāo)文件夾;設(shè)置資源管理器顯示地址欄以及在地址欄中顯示完整路徑,并從地址欄中復(fù)制bin文件夾的完整路徑;在桌面上右擊“我的電腦”,從彈出菜單中選擇“屬性”;在彈出的“系統(tǒng)屬性”對(duì)話框中選擇“高級(jí)”選修卡,單擊“環(huán)境變量”按鈕;在彈出的“環(huán)境變量”對(duì)話框的“系統(tǒng)變量”列表框中選擇變量PATH,單擊“編輯”;在“編輯系統(tǒng)變量”對(duì)話框中單擊“變量值”文本框使其獲得輸入焦點(diǎn),在鍵盤(pán)上按“Home”鍵是插入的定位在行首;使用Ctrl+v粘貼bin文件夾的完整路徑,再鍵入英文標(biāo)點(diǎn)符號(hào)中的分號(hào)“;”與其它路徑隔開(kāi)。單擊“確定”按鈕關(guān)閉所有對(duì)話框。311.3在命令提示符窗口設(shè)計(jì)程序首先使用文本編輯器,如Windows記事本,編輯若干類,并將其保存為與類的名字相同的.java源文件(sourcecode);然后使用命令javac編譯這些.java源文件,生成相應(yīng)的.class字節(jié)碼文件。最后,使用命令java啟動(dòng)Java虛擬機(jī)(JVM),將字節(jié)碼文件裝入虛擬機(jī)運(yùn)行。32在命令提示符窗口設(shè)計(jì)程序33例子設(shè)計(jì)一個(gè)計(jì)算器,能夠完成加減乘除功能設(shè)置被加數(shù)10,加數(shù)2,輸出和1234Calculator.javaTest.java例子設(shè)計(jì)程序計(jì)算2個(gè)平面圖形圓的面積。35計(jì)算圓的面積兩個(gè)對(duì)象:圓半徑不同同樣的方法計(jì)算面積創(chuàng)建兩個(gè)“圓”對(duì)象分別讓這兩個(gè)對(duì)象計(jì)算面積36計(jì)算圓的面積告訴計(jì)算機(jī)什么是“圓”?有半徑radius通過(guò)π*r2計(jì)算面積37例子38例子39例子40例子41例子42例子43命令提示窗口中文亂碼chcp65001UTF-8.java保存為UTF-844Java項(xiàng)目一般地,一個(gè)Java項(xiàng)目中含有若干包;一個(gè)Java包中含有若干類。一個(gè)類是由若干成員組成,這些成員包括變量和方法。Java程序只能從約定的main方法開(kāi)始執(zhí)行。45JAR文件46JAR文件47注意Java語(yǔ)言對(duì)字母的大小寫(xiě)敏感。一般一個(gè)類對(duì)應(yīng)一個(gè).java文件,類名與文件名嚴(yán)格相同,包括大小寫(xiě)。一個(gè)源文件中可以有多個(gè)類,但至多有一個(gè)public的類,并且public的類名必須與文件名相一致。類名的首字母大寫(xiě),不建議使用漢字作為類名。481.4jGrasp49控制結(jié)構(gòu)窗口CSDjGrasp界面50設(shè)置CSD字體和字號(hào)51先取消默認(rèn)再設(shè)置新值設(shè)置工作文件夾52新建Java類53編譯和運(yùn)行54編譯光標(biāo)插入點(diǎn)所在的源文件main方法開(kāi)始運(yùn)行進(jìn)入調(diào)試狀態(tài)RunI/O窗格1.5使用Eclipse設(shè)計(jì)程序 551.6Java程序結(jié)構(gòu)56錯(cuò)誤類型一個(gè)源文件也稱為一個(gè)編譯單元(compilationunit)編譯器識(shí)別的錯(cuò)誤稱為編譯時(shí)刻錯(cuò)誤(compile-timeerror)由負(fù)責(zé)裝入和啟動(dòng)虛擬機(jī)解釋執(zhí)行程序的命令java所識(shí)別出的錯(cuò)誤稱為運(yùn)行時(shí)刻錯(cuò)誤(run-timeerror)如果程序在編譯時(shí)刻和運(yùn)行時(shí)刻均沒(méi)有發(fā)生錯(cuò)誤,但是運(yùn)行結(jié)果并不正確,則程序中存在邏輯錯(cuò)誤(logicalerrors)571.7代碼風(fēng)格命名約定留白塊風(fēng)格58命名約定類名:大駝峰命名法只有一個(gè)單詞類名首字母大寫(xiě)。如果類名中包含多個(gè)單詞,則每個(gè)單詞的首字母大寫(xiě)如RuntimeException成員名:小駝峰命名法只有一個(gè)單詞的變量名和方法名中的字母均小寫(xiě)。如果變量名或方法名中含有多個(gè)單詞,則除了第一個(gè)單詞外,其它單詞首字母大寫(xiě)如executeQuery()常量名的所有字母大寫(xiě)。如果名字中含有多個(gè)單詞,則使用下劃線隔開(kāi)。如MAX_VALUE。59名字要有意義StackOverflow的創(chuàng)始人JoelSpolsky說(shuō),“起一個(gè)好名字應(yīng)該很難,因?yàn)?,一個(gè)好名字需要把要義濃縮在一到兩個(gè)詞?!薄癈reatinggoodnamesishard,butitshouldbehard,becauseagreatnamecapturesessentialmeaninginjustoneortwowords.”60留白“留白”是繪畫(huà)中的術(shù)語(yǔ),指在一幅畫(huà)中要有空白。源代碼中也要有空白,以形成清晰的邏輯結(jié)構(gòu)。雖然留白不會(huì)影響程序的正確性,但影響程序的可讀性。三種留白的方法縮進(jìn)空行空格61縮進(jìn)縮進(jìn)(Indentation)使用平面空間的布局關(guān)系反映了程序部件間的邏輯關(guān)系(比如包含關(guān)系)62publicclassCalculator{privateinta;privateintb;
voidsetA(intx){a=x;}
voidsetB(inty){b=y;}
intadd(){returna+b; }
intminus(){returna-b;}}空行不同代碼片段應(yīng)使用空行隔開(kāi)。例如每個(gè)方法有使用空行與前一個(gè)方法隔開(kāi)。63空格每個(gè)二元運(yùn)算符的前后都有一個(gè)空格(blank)。例如:a+b;//Goodstylea+b;//Badstyle提倡使用空格而不是使用制表符(\t)實(shí)現(xiàn)代碼風(fēng)格。使用4個(gè)空格縮進(jìn)而不是使用制表符Java語(yǔ)句把空格、制表符,回車、換行都看作空白符(whitespace)。編譯器忽略空白符64塊風(fēng)格塊是使用一對(duì)大括號(hào)“{}”括起來(lái)的一組語(yǔ)句。有兩種塊風(fēng)格:next-line風(fēng)格end-of-line風(fēng)格65塊風(fēng)格next-line風(fēng)格為塊另起一行并把開(kāi)括號(hào)“{”放在新行的行首:66classA{voidaMethod(){//Dosomething}}塊風(fēng)格end-of-line風(fēng)格不為塊另起一行,而是直接把開(kāi)括號(hào)“{”置于行尾:67classA{voidaMethod(){//Dosomething}}關(guān)鍵是保持一致1.8注釋實(shí)現(xiàn)注釋(implementationcomment
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腸癌手術(shù)患者的心理護(hù)理與支持
- 2025年辦公室地面環(huán)氧地坪協(xié)議
- 《吸嗅類(合香制品)保健用品生產(chǎn)技術(shù)規(guī)范》標(biāo)準(zhǔn) 征求意見(jiàn)稿
- 太陽(yáng)能建筑一體化原理與應(yīng) 課件 第3章 太陽(yáng)能的吸收與透射
- 城市歷史文化保護(hù)傳承
- 2025年智慧養(yǎng)老院監(jiān)護(hù)技術(shù) AI陪護(hù)機(jī)器人24小時(shí)應(yīng)用
- 2026 年中職咖啡科學(xué)與工程(咖啡基礎(chǔ))試題及答案
- 小升初蘇教版試題及答案
- 基于量子計(jì)算的JavaScript框架探索
- 2025年海南省公需課學(xué)習(xí)-全民健身計(jì)劃實(shí)施方案716
- 2025中央廣播電視總臺(tái)招聘144人筆試歷年題庫(kù)附答案解析
- 2026年瓦工職業(yè)技能鑒定考試題庫(kù)及答案
- 2025年云南省人民檢察院聘用制書(shū)記員招聘(22人)筆試考試參考題庫(kù)及答案解析
- MOOC 理解馬克思-南京大學(xué) 中國(guó)大學(xué)慕課答案
- 安全工器具登記臺(tái)賬
- 《荷塘月色》《故都的秋》比較閱讀-統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 中央電大護(hù)理專業(yè)本科通科實(shí)習(xí)出科考核病歷
- 衛(wèi)生院基本公共衛(wèi)生服務(wù)獎(jiǎng)懲制度
- 氣動(dòng)沖床設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書(shū)
- β-丙氨酸補(bǔ)充對(duì)運(yùn)動(dòng)能力的影響
- 南昌工程學(xué)院水電站課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論