




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.JAVA語(yǔ)言編程教案(第0-3章)前 言一、課程概述本課程主要包括以下內(nèi)容:- Java編程語(yǔ)言句法- 應(yīng)用于Java編程語(yǔ)言的面向?qū)ο蟮母拍? 圖形用戶界面(GUI)編程- 創(chuàng)建Applet- 了解ServletJSP- JavaBean本課程首先討論了Java運(yùn)行環(huán)境和Java編程語(yǔ)言句法,然后闡述了應(yīng)用于Java編程語(yǔ)言的面向?qū)ο蟮母拍?;隨著課程的進(jìn)展還將討論有關(guān)Java平臺(tái)的更先進(jìn)的特性。本課程授課對(duì)象應(yīng)具備運(yùn)用Java 編程語(yǔ)言或其它語(yǔ)言進(jìn)行基本語(yǔ)言設(shè)計(jì)的能力,它是“非程序員Java編程”(“Java Programming for NonProgrammers”,SL-110)課
2、程的延續(xù)。二、課程目標(biāo)完成本課程的學(xué)習(xí)后,你應(yīng)該能夠:- 描述語(yǔ)言的主要特性- 編譯并運(yùn)行Java應(yīng)用程序- 理解和使用在線超文本Java技術(shù)文件- 描述語(yǔ)言句法元素和構(gòu)造- 理解面向?qū)ο蟮睦硬⑹褂迷撜Z(yǔ)言的面向?qū)ο筇匦? 理解并使用異常- 開(kāi)發(fā)簡(jiǎn)單的圖形用戶界面- 理解事件處理- 了解Swing的主要特性- 開(kāi)發(fā)Java applets - 讀寫(xiě)文件和其它數(shù)據(jù)源 三、如何做好準(zhǔn)備?如何做好準(zhǔn)備?在學(xué)習(xí)本課程前,你應(yīng)該已經(jīng)完成了下列內(nèi)容的學(xué)習(xí):- 用C或C+創(chuàng)建編譯程序- 用文本編輯器創(chuàng)建并編輯文本文件(例如 EditPlus)- 使用World Wide Web(WWW)瀏覽器,如Micro
3、Soft IE第0章 Java起步1.1 編譯和執(zhí)行實(shí)例程序1、 下載和安裝Java軟件開(kāi)發(fā)工具包(Java Software Development Kit,SDK)2、 按照下述規(guī)則,認(rèn)真編寫(xiě)和編譯Java程序:Ø Java類(lèi)或模塊的名字必須匹配它所在文件的名字。(例如System與system是不同的)Ø 首先應(yīng)避免使用開(kāi)發(fā)環(huán)境,因?yàn)檫@意味著除了學(xué)習(xí)Java之外,還要學(xué)習(xí)其他額外的內(nèi)容。3、 一個(gè)基本的Java應(yīng)用程序象其它編程語(yǔ)言一樣,Java編程語(yǔ)言也被用來(lái)創(chuàng)建應(yīng)用程序。一個(gè)共同的小應(yīng)用程序范例是在屏幕上顯示字串“Hello World!”。下列代碼給出了這個(gè)Ja
4、va應(yīng)用程序。Ø 源文件HelloWorldApp 1. / 2. / Sample HelloWorld application 3. / 4. public class HelloWorldApp 5. public static void main (String args) 6. System.out.println ("Hello World!"); 7. 8. 以上程序行是在你的屏幕上打印“Hello World!”所需的最少組件。Ø 描述HelloWorldApp第1-3行程序中的1-3行是注釋行1 /2 / Sample HelloWor
5、ld application3 / 第4行第4行聲明類(lèi)名為HelloWorldApp。類(lèi)名(Classname)是在源文件中指明的,它可在與源代碼相同的目錄上創(chuàng)建一個(gè)classname·class文件。在本例題中,編譯器創(chuàng)建了一個(gè)稱(chēng)為HelloWorldApp.class的文件, 它包含了公共類(lèi)HelloWorldApp的編譯代碼。4 public class HelloWorldApp第5行第5行是程序執(zhí)行的起始點(diǎn)。Java技術(shù)解釋器必須發(fā)現(xiàn)這一嚴(yán)格定義的點(diǎn),否則將拒絕運(yùn)行程序。其它程序語(yǔ)言(特別是C和C+)也采用main ()聲明作為程序執(zhí)行的起始點(diǎn)。此聲明的不同部分將在本課程的
6、后幾部分介紹。如果在程序的命令行中給出了任何自變量,它們將被傳遞給main()方法中被稱(chēng)作args的String數(shù)組。在本例題中,未使用自變量。5 public static void main (String args) - public方法main()可被任何程序訪問(wèn),包括Java技術(shù)解釋器。- static 是一個(gè)告知編譯器main()是用于類(lèi)HelloWorldApp中的函數(shù)的關(guān)鍵字。為使main()在程序做其它事之前就開(kāi)始運(yùn)行,這一關(guān)鍵字是必要的。- void 表明main()不返回任何信息。這一點(diǎn)是重要的,因?yàn)镴ava編程語(yǔ)言要進(jìn)行謹(jǐn)慎的類(lèi)型檢查,包括檢查調(diào)用的方法確實(shí)返回了這些方
7、法所聲明的類(lèi)型。- String args 是一個(gè)String數(shù)組的聲明,它將包含位于類(lèi)名之后的命令行中的自變量。 java HelloWorldApp args0args1····第6行第6行聲明如何使用類(lèi)名、對(duì)象名和方法調(diào)用。它使用由System類(lèi)的out成員引用的PrintStreamout對(duì)象的println()方法,將字串“Hello World!”打印到標(biāo)準(zhǔn)輸出上。6 System.out.println (“Hello World!”);在這個(gè)例子中,println()方法被輸入了一個(gè)字串自變量并將其寫(xiě)在了標(biāo)準(zhǔn)輸出流上。第7-8行本程序的7
8、-8行分別是方法main()和類(lèi)HelloWorldApp的下括號(hào)。7 8 Ø 編譯并運(yùn)行HelloWorldApp 編譯并運(yùn)行HelloWorldApp- 編譯HelloWorldApp.java javac HelloworldApp.java- 運(yùn)行應(yīng)用程序 java HelloWorldApp- 判定編譯和運(yùn)行的共同錯(cuò)誤編譯當(dāng)你創(chuàng)建了HelloWorldApp.java源文件后,用下列程序行進(jìn)行編譯: c:studentjavac HelloWorldApp.java如果編譯器未返回任何提示信息,新文件HelloWorldApp.class則被存儲(chǔ)在與源文件相同的目錄中,除非
9、另有指定。運(yùn)行為運(yùn)行你的HelloWorldApp應(yīng)用程序,需使用Java解釋器和位于bin目錄下的java: c:student java HelloWorldApp Hello World!注意必須設(shè)置PATH環(huán)境變量以發(fā)現(xiàn)java和javac,確認(rèn)它包括c:jdk1.2bin1.2 Java的最大優(yōu)點(diǎn)Java程序只需在任何一個(gè)系統(tǒng)上編譯一次,然后就可以在任何計(jì)算機(jī)上運(yùn)行。1、 關(guān)于軟件的可移植性2、 J2EE、J2ME和J2SEØ J2EE企業(yè)版(大型平臺(tái))Ø J2ME微型版(小型平臺(tái))Ø J2SE標(biāo)準(zhǔn)版(中型平臺(tái))1.3 Java虛擬機(jī)Java源代碼編譯后
10、生成的目標(biāo)代碼是字節(jié)碼(bytecode),他不是任何現(xiàn)有系統(tǒng)上的二進(jìn)制指令代碼,而是一種中立結(jié)構(gòu)的機(jī)器代碼,可以快速的解釋并運(yùn)行在任何特定的計(jì)算機(jī)上。Java程序的執(zhí)行是通過(guò)一個(gè)稱(chēng)為JVM(Java Virtual Machine,Java虛擬機(jī))的程序?qū)崿F(xiàn)的。垃圾收集- 不再需要的分配存儲(chǔ)器應(yīng)取消分配- 在其它語(yǔ)言中,取消分配是程序員的責(zé)任- Java編程語(yǔ)言提供了一種系統(tǒng)級(jí)線程以跟蹤存儲(chǔ)區(qū)分配- 垃圾收集- 可檢查和釋放不再需要的存儲(chǔ)器- 可自動(dòng)完成上述工作- 可在JVM實(shí)現(xiàn)周期中,產(chǎn)生意想不到的變化許多編程語(yǔ)言都允許在程序運(yùn)行時(shí)動(dòng)態(tài)分配存儲(chǔ)器,分配存儲(chǔ)器的過(guò)程由于語(yǔ)言句法不同而有所變化
11、,但總是要將指針?lè)祷氐酱鎯?chǔ)區(qū)的起始位置 當(dāng)分配存儲(chǔ)器不再需要時(shí)(存儲(chǔ)器指針已溢出范圍),程序或運(yùn)行環(huán)境應(yīng)取消分配存儲(chǔ)器。在C,C+ 或其它語(yǔ)言中,程序員負(fù)責(zé)取消分配存儲(chǔ)器。有時(shí),這是一件很困難的事情。因?yàn)槟悴⒉豢偸鞘孪戎来鎯?chǔ)器應(yīng)在何時(shí)被釋放。當(dāng)在系統(tǒng)中沒(méi)有能夠被分配的存儲(chǔ)器時(shí),可導(dǎo)致程序癱瘓,這種程序被稱(chēng)作具有存儲(chǔ)器漏洞。Java編程語(yǔ)言解除了程序員取消分配存儲(chǔ)器的責(zé)任,它可提供一種系統(tǒng)級(jí)線程以跟蹤每一存儲(chǔ)器的分配情況。在Java虛擬機(jī)的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的存儲(chǔ)器。 垃圾收集在Java技術(shù)程序的生命周期中自動(dòng)進(jìn)行,它解除了取消分配存儲(chǔ)器的要求,并避免了存儲(chǔ)器漏洞。然
12、而,垃圾收集可在JVM實(shí)現(xiàn)的周期中,產(chǎn)生意想不到的變化。Java的安全性Java源程序文件通過(guò)“編譯”,在你的感覺(jué)中,就好象是將它們從程序員編寫(xiě)的文本文件格式轉(zhuǎn)換成了一組字節(jié)碼。字節(jié)碼被存儲(chǔ)在 .class文件中。構(gòu)成Java軟件程序的字節(jié)碼在運(yùn)行時(shí)被加載、校驗(yàn)并在解釋器中運(yùn)行。當(dāng)運(yùn)行applets時(shí),字節(jié)碼可被下載,然后由建于瀏覽器中的JVM進(jìn)行解釋。解釋器具備兩種功能,一是執(zhí)行字節(jié)碼,二是對(duì)底層硬件做適當(dāng)調(diào)用。在一些使用Java技術(shù)的運(yùn)行環(huán)境中,部分校驗(yàn)過(guò)的字節(jié)碼被編譯成原始機(jī)器碼并直接運(yùn)行于硬件平臺(tái)。這就使Java軟件代碼能夠以C或C+接近的速度運(yùn)行,只是在加載時(shí), 因?yàn)橐幾g成原始機(jī)器
13、碼而略有延遲。1.4 Java平臺(tái)的組成1、 Java編程語(yǔ)言2、 Java虛擬機(jī)3、 伴隨系統(tǒng)的軟件庫(kù)4、 運(yùn)行時(shí)環(huán)境1.5 Java語(yǔ)言Java語(yǔ)言是一種面向?qū)ο蟮木幊陶Z(yǔ)言。Java語(yǔ)言的特征:1、 線程2、 異常處理3、 無(wú)用單元收集Java是:- 一種編程語(yǔ)言- 一種開(kāi)發(fā)環(huán)境- 一種應(yīng)用環(huán)境- 一種部署環(huán)境 Java編程語(yǔ)言的句法與C+的句法相似,語(yǔ)義則與Small Talk TM的語(yǔ)義相似。Java編程語(yǔ)言可被用來(lái)創(chuàng)建任何常規(guī)編程語(yǔ)言所能創(chuàng)建的應(yīng)用程序。在World Wide Web(WWW)和能夠運(yùn)行稱(chēng)為applets程序的瀏覽器的有關(guān)介紹中,人們經(jīng)常提及Java編程語(yǔ)言。Appl
14、ets是一種貯存于WWW服務(wù)器的用Java編程語(yǔ)言編寫(xiě)的程序,它通常由瀏覽器下載到客戶系統(tǒng)中,并通過(guò)瀏覽器運(yùn)行。Applets通常較小,以減少下載時(shí)間,它由超文本標(biāo)識(shí)語(yǔ)言(HTML)的Web頁(yè)來(lái)調(diào)用。 Java applications是一種獨(dú)立的程序,它不需要任何Web瀏覽器來(lái)執(zhí)行。它們是一種典型的通用程序;可運(yùn)行于任何具備Java運(yùn)行環(huán)境的設(shè)備中。Java編程語(yǔ)言的主要目標(biāo)提供一種解釋環(huán)境為- 提高開(kāi)發(fā)速度- 代碼可移植性- 使用戶能運(yùn)行不止一個(gè)活動(dòng)線程- 當(dāng)程序運(yùn)行時(shí),能動(dòng)態(tài)支持程序改變- 提供更好的安全性 設(shè)計(jì)Java編程語(yǔ)言的主要目標(biāo)是 提供一種易于編程的語(yǔ)言,從而Ú 消除
15、其它語(yǔ)言在諸如指針運(yùn)算和存儲(chǔ)器管理方面影響健壯性的缺陷。Ú 利用面向?qū)ο蟮母拍钍钩绦蛘嬲爻蔀榭梢暬绦?#218; 為使代碼盡可能清晰合理、簡(jiǎn)明流暢提供了一種方法1.6 Java庫(kù)1、 API:應(yīng)用編程接口2、 Java庫(kù)可以分為兩大類(lèi):Ø 捆綁到JDK的核心庫(kù)Ø 可選的JDK附加標(biāo)準(zhǔn)庫(kù)表1核心API及其功能Java運(yùn)行時(shí)Java基礎(chǔ)類(lèi)安全Java IDLJava BeanJava RMI表2某些可選的API及其功能Java CommunicationInfobusJavaHelpJavaMailJava MediaJNDI類(lèi)和包介紹1. 什么是類(lèi)和包?2. J
16、ava類(lèi)庫(kù)中的幾個(gè)重要包 java.lang java.awt java.applet java.io java.util類(lèi)是描述提供某種功能的模塊的一般術(shù)語(yǔ)。Java開(kāi)發(fā)集(JDK)給出了一套標(biāo)準(zhǔn)的類(lèi)(稱(chēng)作類(lèi)庫(kù)),這些類(lèi)可執(zhí)行大部分所需的基本行為 不僅為編程任務(wù)(例如,類(lèi)可提供基本的數(shù)學(xué)函數(shù)、數(shù)組和字符串),而且為圖形和網(wǎng)絡(luò)。類(lèi)庫(kù)被組織成許多包,每個(gè)包都包含幾個(gè)類(lèi)。如下所列為一些重要的包:java.lang包含一些形成語(yǔ)言核心的類(lèi),如String、Math、Integer和Thread。java.awt包含了構(gòu)成抽象窗口工具包(AWT)的類(lèi),這個(gè)包被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶界面。ja
17、va.applet包含了可執(zhí)行applet特殊行為的類(lèi)。 包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類(lèi)和處理接口及統(tǒng)一資源定位器(URLs)的類(lèi)。 java.io包含處理I/O文件的類(lèi)。java.util包含為任務(wù)設(shè)置的實(shí)用程序類(lèi),如隨機(jī)數(shù)發(fā)生、定義系統(tǒng)特性和使用與日期日歷相關(guān)的函數(shù)。1.7 Java程序的三種執(zhí)行環(huán)境1、 單獨(dú)的程序2、 在瀏覽器中運(yùn)行的程序3、 在WEB服務(wù)器中運(yùn)行的程序1.8 一個(gè)圖形界面的Java程序把下面的程序輸入到一個(gè)稱(chēng)為myframe.java的文件中import java.awt.*; class myframe extends Frame static int x=0,y=1
18、20; / x,y position to display message static int i=0; static int horizScroll=1; / 1->we are moving msg L-to-R Font fb = new Font("TimesRoman", Font.BOLD, 36); String msg="Java", "Portable", "Secure", "Easy" Color color=Color.blue, Color.yellow, Co
19、lor.green, Color.red;public void paint(Graphics g) / gets called by runtime library g.setFont( fb ); g.setColor( colori ); g.drawString(msgi,x,y); static public void main(String s) throws Exception myframe mf = new myframe(); mf.setSize(200,200); mf.setVisible(true); int pixelsPerLine=200, totalLine
20、s=4; for (int j=0;j<pixelsPerLine*totalLines; j+) Thread.sleep(25); mf.repaint(); if (horizScroll=1) / increase x to scroll horizontally if ( (x+=3) < 200) continue; i = +i % 4; / move index to next msg/color x=50; y=0; horizScroll=0; / scroll vertically next time else / increase y to scroll v
21、ertically if ( (y+=3) < 200) continue; i = +i % 4; / move index to next msg/color x=0; y=120; horizScroll=1; / horiz scroll next time System.exit(0); 打開(kāi)一個(gè)命令行窗口(DOS窗口),在提示符后敲入:javac myframe.java成功編譯好后,再在提示符后敲入:java myframe第二章 Java基本語(yǔ)法前言第一步:安裝JDK第二步:用EditPlus建立一個(gè)Java源文件第三步:在EditPlus里編寫(xiě)一個(gè)Java源文件 Hel
22、loWorld.java第斯步:保存HelloWorld.java第五步:編譯HelloWorld.java、運(yùn)行HelloWorld.class2.1 注釋 注釋?zhuān)菏浅绦蚝痛a的說(shuō)明文字,本身并不運(yùn)行。Java有3種注釋?zhuān)?#216; 單行注釋?zhuān)?Ø 多行注釋?zhuān)?* . */Ø 文檔注釋?zhuān)?* . */2.1.1 單行注釋1、 System.out.println( “HelloWorld!” ) / This is output a string2、 / System.out.println( “HelloWorld!” ) 2.1.2多行注釋 以/*開(kāi)始,以*/結(jié)束,
23、他們之間的所有行都被注釋掉了。 /* int j = 9;j = j + 1;System.out.print( j ); */2.1.3文檔注釋 以/*開(kāi)始,以*/結(jié)束,他們之間的所有行都被注釋掉了,而且被看作是文檔注釋?zhuān)ㄟ^(guò)特殊軟件可以將程序中的文檔注釋提取出來(lái)形成文檔。舉例:public class Demo public static void main(String args) int x;x = 1;x = x + 1;System.out.println("x=" + x );運(yùn)行結(jié)果:public class Demo public static void
24、main(String args) int x;x = 1;/x = x + 1;System.out.println("x=" + x );運(yùn)行結(jié)果:x=1/x = x + 1; 等價(jià)于 /* x = x + 1;public class Demo public static void main(String args) int x , y;x = 1;y = 2;/x = x + 1; /y = y + 1;System.out.println("x=" + x +", y=" + y );/x = x + 1;/y = y +
25、1;等價(jià)于/*x = x + 1; y = y + 1;*/2.2標(biāo)識(shí)符1、 標(biāo)識(shí)符:是程序中那些中間不帶空格的單詞,并以字母、下劃線_或美元符號(hào)$開(kāi)頭,且不能以數(shù)字字符開(kāi)頭。標(biāo)識(shí)符的中間也只能出現(xiàn)下劃線_或美元符號(hào)$這樣的特殊字符,不能出現(xiàn)其他特殊字符,如中劃線-等等。Ø 合法的標(biāo)識(shí)符variable2 _whatavariable _3_$anothervarØ 非法的標(biāo)識(shí)符2variable*abc2、 保留字(關(guān)鍵字):Java語(yǔ)言中有固定含義的標(biāo)識(shí)符,不能用作程序員隨意定義的標(biāo)識(shí)符。Ø 用于內(nèi)置類(lèi)型boolean char byte short int
26、short long float double strictfp voidØ 用于對(duì)象new this superØ 用于語(yǔ)句選擇語(yǔ)句:if else switch case break default循環(huán)語(yǔ)句:for continue do while控制轉(zhuǎn)移語(yǔ)句:return throw異常處理語(yǔ)句:try catch finally assert線程語(yǔ)句:synchronizedØ 用于修飾聲明static abstract final private protected publicØ 用于其他方法或相關(guān)類(lèi)class instanceof thr
27、ows native transient volatileØ 用于類(lèi)的擴(kuò)展和接口的繼承extends interface implements package importØ 留作將來(lái)使用的const goto舉例: if( x = 1 ) y = 1; else y = 0;3、 變量、賦值語(yǔ)句和輸出語(yǔ)句Ø 變量:就是程序員自定義的標(biāo)識(shí)符,程序員用這種標(biāo)識(shí)符說(shuō)明它代表某個(gè)事物例如: x = 1 y = 2 z = x + y變量的空間分配注意:1) 變量使用前必須聲明其類(lèi)型:public class Demo public static void main(St
28、ring args) int x;int y;x = 1;y = x + 1;System.out.println("y=" + y );2) 變量聲明后,就不能再次聲明: public class Demo public static void main(String args) int x;x = 1;int x = 2; System.out.println("x=" + x );3) 變量聲明后,使用前必須賦值:public class Demo public static void main(String args) int x;int y;x
29、 = 1;System.out.println("y=" + y );注意:若是聲明一個(gè)變量后,程序沒(méi)有使用它,那么可以不賦值,編譯是不會(huì)出錯(cuò)Ø = 是賦值符int x = 1; 就是一條賦值語(yǔ)句 ,等價(jià)于 int x ; x = 1;結(jié)果為:Ø 輸出語(yǔ)句:System.out.print System.out.println的用法/c2:Print1.java/author:ZhangHongbin /This program is protected by copyright laws./The effects of print and printl
30、n.public class Print1public static void main(String args) int x=1;int y=2;int z=3;System.out.print("x1="+x); System.out.print(" y1="+y);System.out.print(" z1="+z);System.out.println();System.out.println("x2="+x+",y2="+y+",z2="+z);結(jié)果為:2.3 語(yǔ)句
31、和語(yǔ)句塊(首先按照書(shū)上P27講解)1、 語(yǔ)句:表達(dá)式加上分號(hào)int x ; x = 1;y= 7 + x;2、 語(yǔ)句塊:在花括號(hào)之間的所有語(yǔ)句組成了語(yǔ)句塊public class XYZpublic static void main( String args ) /語(yǔ)句塊if(條件) /語(yǔ)句塊3、 書(shū)寫(xiě)Java源程序時(shí)要遵守一些規(guī)范Ø 對(duì)齊Ø 縮進(jìn)2.4 基本數(shù)據(jù)類(lèi)型1、 整型:Ø byte(8位)Ø short(16位)Ø int(32位)Ø long(64位)public class Var2 public static void
32、 main(String args) byte abyte=12;int aint=12;System.out.println("a byte= "+abyte);System.out.println("an int= "+aint); 注意:下面的程序編譯能通過(guò)嗎,也就是有沒(méi)有語(yǔ)法錯(cuò)誤?public class Var3 public static void main(String args) byte abyte;System.out.println("a byte= "+abyte); 若在一個(gè)方法(函數(shù))中聲明一個(gè)變量,那么在
33、使用這個(gè)變量前,必須對(duì)其賦值。 八進(jìn)制和十六進(jìn)制 一個(gè)數(shù)字前面有0,表示這個(gè)數(shù)為八進(jìn)制數(shù):例如int x = 017若前面是0x,表示這個(gè)數(shù)為十六進(jìn)制數(shù):例如int x = 0x17public class Var4 public static void main(String args) int aint2 = 017; int aint3 = 0x17; int aint4 = 0xab; System.out.println("aint2= " + aint2); System.out.println("aint3= " + aint3);Syst
34、em.out.println("aint4= " + aint4); 結(jié)果為:2、 浮點(diǎn)型:Ø float(32位):?jiǎn)尉热纾?.37f ,9F。注意必須有f(F)1、 聲明一個(gè)float變量float num;2、 聲明一個(gè)float變量,同時(shí)給其賦值float num = 9.7f 3、float num = 9.3 是非法的,因?yàn)橄到y(tǒng)會(huì)把9.3看作double型 大家把書(shū)翻到第31頁(yè),看例程VarInit5Ø double(64位):雙精度如:4.8d ,7D 8.9。注意可以沒(méi)有d(D)Ø 不能把一個(gè)大的數(shù)據(jù)類(lèi)型的數(shù)賦值給小的數(shù)據(jù)類(lèi)型
35、變量float x = 15.7int y = 23.3f3、 字符型(char):Ø 聲明一個(gè)char變量char ch;Ø 聲明一個(gè)char變量,同時(shí)給其賦值char ch = Achar ch = 65char ch = n char ch = u0061 舉例:public class Base public static void main(String argv) char ch = 'n' System.out.print( "->1" ); System.out.print( ch ); System.out.pri
36、nt( "->1" ); 結(jié)果為:把程序改為:public class Base public static void main(String argv) char ch = 'n' System.out.print( "->1" ); /System.out.print( ch ); System.out.print( "->1" ); 結(jié)果為:大家把書(shū)翻到第33頁(yè),看例程VarInit54、 布爾型(boolean):Ø trueØ false舉例:public class D
37、emo public static void main(String argv) boolean b1 = true; boolean b2 = false; System.out.println( "b1=" + b1 ); System.out.println( "b2=" + b2 ); 5、 常量:final float PI = 3.14ffinal int A = 3final char CH = cfinal boolean B = true注意:常量定義的時(shí)侯必須確定它的值,而且再不能改變它的值。如 final int I = 9; I
38、= 1; /出錯(cuò)public class Test final float PI = 3.1415f;int x = 0;float y = 0f;boolean z = true;char c = 'u'void fun() System.out.println( "x=" + x );System.out.println( "y=" + y );System.out.println( "z=" + z );System.out.println( "c=" + c );System.out.pri
39、ntln( "PI=" + PI );public static void main(String args) Test s = new Test();s.fun(); 結(jié)果為:2.5 運(yùn)算符,表達(dá)式和返回值運(yùn)算符和變量組合起來(lái)就形成了表達(dá)式如:算術(shù)表達(dá)式:a + b / 3 5 返回?cái)?shù)值關(guān)系表達(dá)式:a > b 返回布爾值邏輯表達(dá)式:!x && y 返回布爾值混合表達(dá)式:(a+b)> 13 返回布爾值舉例:public class Demo public static void main(String args) int a = 2; int b
40、 = 0;boolean x = true;boolean y = true;System.out.println( "a+b/3-5 = " + (a+b/3-5) );System.out.println( "a > b = " + (a > b) );System.out.println( "x && y=" + (x && y) );System.out.println( "(a+b)> 13 = " + (a+b)> 13) ); 結(jié)果為:2.6 數(shù)
41、學(xué)計(jì)算 數(shù)學(xué)運(yùn)算符包括:1、 取負(fù)運(yùn)算:int x = 5;int y = -x; 舉例:public class XYZ public static void main(String args)int x = 1;int y = -(x + 1);System.out.print( "x=" + x + " y=" + y ); 結(jié)果為:x=1 y=-22、 加減乘除運(yùn)算: (參見(jiàn)教材P36代碼片段)3、 求余運(yùn)算: (參見(jiàn)教材P36代碼片段)4、 數(shù)學(xué)運(yùn)算的若干規(guī)則Ø 整數(shù)運(yùn)算語(yǔ)法規(guī)則int x = 2;long y = 1;x = y;
42、/error會(huì)有什么發(fā)生?byte b1 = 1;byte b2 = 2;byte b3 = b1 + b2; /errorbyte b4 = 3 + 2;byte b5 = 1 + b1; / errorØ 浮點(diǎn)數(shù)運(yùn)算語(yǔ)法規(guī)則2.0f + 4.0的結(jié)果為double型int result = 5 / 2的結(jié)果只保留整數(shù)部分5、 浮點(diǎn)數(shù)運(yùn)算時(shí),結(jié)果可能不夠準(zhǔn)確例如1.2+2.4的結(jié)果也許不是3.66、 除零問(wèn)題:不允許整數(shù)除零,允許浮點(diǎn)數(shù)除零結(jié)果為:2.7 賦值運(yùn)算1、 賦值運(yùn)算符是等號(hào),其右邊是一個(gè)表達(dá)式,左邊是變量,他把右部的值賦給左部的變量。x = 2 + 5;y = 4 +
43、x 2、賦值運(yùn)算也是表達(dá)式y(tǒng) = 4 + ( x = 2 + 5 ) 3、x = x + 5 :把x加5,然后再賦值給x 結(jié)果為:7、 測(cè)試賦值語(yǔ)句返回值的程序public class LValue public static void main(String args) int x,y;y = ( x = 2 + 5 );System.out.println();System.out.println( "x = " + x + " , y = " + y ); 結(jié)果為:x=7 y=72.8 類(lèi)型轉(zhuǎn)換1、表達(dá)式結(jié)果的類(lèi)型和表達(dá)式在最大的數(shù)據(jù)類(lèi)型一致,如:
44、10078.6f,其結(jié)果為float類(lèi)型2、 賦值語(yǔ)句的左值和右值的類(lèi)型要兼容Ø 左右類(lèi)型一致:int x = 100 7;Ø 右部的類(lèi)型取值范圍小于左部:float r = 100 7 3、 類(lèi)型強(qiáng)制轉(zhuǎn)換當(dāng)右部的類(lèi)型取值范圍大于左部時(shí),在表達(dá)式的前面加上類(lèi)型名。float r = 100 7 8.6f 對(duì)。int r = 100 7 8.6f 錯(cuò)。改為int r = ( int )( 100 7 8.6f )4、 byte r = (byte)(20*20);r的值為多少?結(jié)果為:2.9 自增和自減運(yùn)算1、 I:先用I值,然后對(duì)I自增12、 I:先對(duì)I自增1,然后在用I值
45、注意: int result = 1; result+; 等價(jià)于 int result = 1; result = result + 1; 參見(jiàn)P42下的程序片段參見(jiàn)一個(gè)P43程序2.10 比較運(yùn)算(關(guān)系運(yùn)算)1、比較運(yùn)算符(關(guān)系運(yùn)算符):< , > , <= , >= , = = , !=2、比較運(yùn)算表達(dá)式的結(jié)果:true , false結(jié)果為:2.11 邏輯運(yùn)算1、邏輯運(yùn)算符:! |2、邏輯運(yùn)算表達(dá)式的結(jié)果:true , false與(&&)或(|)異或()00000010111001111110Ø 若exp為false,表達(dá)式!exp的值
46、為trueØ 若exp1和exp2都為true,表達(dá)式exp1&& exp2的值為trueØ 若exp1和exp2中有一個(gè)為true,表達(dá)式exp1| exp2的值為true結(jié)果為:注意:若有3個(gè)&&連接的表達(dá)式,當(dāng)計(jì)算第一個(gè)給false時(shí),那么邏輯表達(dá)式的值為false,其余的兩個(gè)表達(dá)式不再計(jì)算;若有3個(gè)|連接的表達(dá)式,當(dāng)計(jì)算第一個(gè)給true時(shí),那么邏輯表達(dá)式的值為true,其余的兩個(gè)表達(dá)式不再計(jì)算。public class ShortCiruitpublic static void main(String args) int n = 3;
47、int m = 4;System.out.println();System.out.println( ( ( n > m ) && ( +n ) > m ) ); System.out.println( "n= " + n );System.out.println( "-" );System.out.println( ( ( n < m ) && ( +n ) > m ) ); System.out.println( "n= " + n );結(jié)果為:falsen=3-falsen
48、=42.12 位運(yùn)算和移位運(yùn)算1、 位運(yùn)算符: 3 & 5的結(jié)果為1,因?yàn)?的二進(jìn)制值為0011,5的二進(jìn)制值為0101,因此按位與的結(jié)果為0001public class CompareNumber public static void main(String args) int n = 3;int m = 5;System.out.println( "3 & 5 = " + (n&m) ); System.out.println( "3 | 5 = " + (n|m) );System.out.println( "3
49、 5 = " + (nm) ); 結(jié)果為:3 & 5 = 1; 3 | 5 = 7;3 5 = 6;2、移位運(yùn)算符:<< >> >>>Ø >>:執(zhí)行算術(shù)或帶符號(hào)的右移Ø >>:執(zhí)行算術(shù)或帶符號(hào)的左移Ø >>>:執(zhí)行無(wú)符號(hào)的右移Ø <<<:執(zhí)行無(wú)符號(hào)的左移例:128 >> 1 的結(jié)果為 64 128的二進(jìn)制值為10000000,則右移一位為01000000,即為64第三章 程序流程設(shè)計(jì)和控制3.1 算法、偽代碼和流程圖1、算法
50、:解決問(wèn)題的步驟或者過(guò)程 包括:1)需要采取的各個(gè)行動(dòng) 2)這些行動(dòng)的順序2、偽代碼:并非真正的Java語(yǔ)句,而是類(lèi)似Java語(yǔ)句,用來(lái)描述問(wèn)題的求解過(guò)程 “洗澡算法”可以用偽代碼來(lái)描述:1)燒水2)寬衣3)如浴4)關(guān)水3、流程圖:用圖解的方式描述解決某個(gè)問(wèn)題所需要的步驟和順序計(jì)算16的流程圖3.2 If語(yǔ)句 1)if ( 條件 )語(yǔ)句塊;意義:如果條件成立,那么就執(zhí)行語(yǔ)句塊否則不執(zhí)行。舉例:int choice = 1;int num = 0;if ( choice = 1 ) num = 1;System.out.print( num );結(jié)果:num = 1下面給出一個(gè)完整的程序:運(yùn)行結(jié)
51、果為:choice= 1 num= 1if 的語(yǔ)法格式還可以是:if ( 條件 )語(yǔ)句塊;參見(jiàn)教材P54 例程If2.java 2)if ( 條件 )語(yǔ)句塊1;else 語(yǔ)句塊2;意義:如果條件成立,那么就執(zhí)行語(yǔ)句塊1否則執(zhí)行語(yǔ)句塊2。舉例:int choice = 0/1/2; /分析當(dāng)choice的值分別為0、1、2,程序的結(jié)果是什么?int num = 0;if ( choice = 1 ) num = 1;else num = 2;System.out.print( num );一個(gè)完整的Java程序:運(yùn)行結(jié)果:choice= 1 num= 1if 的語(yǔ)法格式還可以是:if ( 條件 ) 語(yǔ)句塊1; else 語(yǔ)句塊2;舉例:int num = 0;if ( choice = 1 ) num = 1; choice = 0;else num = 2; cho
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濱州足球場(chǎng)圍欄網(wǎng)施工方案
- 河北地質(zhì)大學(xué)《舞蹈編導(dǎo)與技術(shù)(四)》2023-2024學(xué)年第二學(xué)期期末試卷
- 麗江輕鋼結(jié)構(gòu)房施工方案
- 浙江東方職業(yè)技術(shù)學(xué)院《法國(guó)國(guó)情》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門(mén)軟件職業(yè)技術(shù)學(xué)院《商科生的數(shù)字技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊幼兒師范高等專(zhuān)科學(xué)?!冬F(xiàn)代漢語(yǔ)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西運(yùn)城農(nóng)業(yè)職業(yè)技術(shù)學(xué)院《機(jī)器人技術(shù)及實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南理工學(xué)院南湖學(xué)院《動(dòng)力電池技術(shù)與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 農(nóng)村水泥地面防水施工方案
- 反物質(zhì)能源研究安全協(xié)議
- 《柔性棚洞防護(hù)結(jié)構(gòu)技術(shù)規(guī)程》
- 危險(xiǎn)廢物綜合利用與處置技術(shù)規(guī)范 通則
- 植物組織培養(yǎng)技術(shù)應(yīng)用研究進(jìn)展
- 教育心理學(xué)課件(完整版)
- YYT 1898-2024 血管內(nèi)導(dǎo)管導(dǎo)絲 親水性涂層牢固度試驗(yàn)方法
- 2023年安徽電氣工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能試題及答案解析
- JIS-D1601-1995-汽車(chē)零部件振動(dòng)試驗(yàn)方法
- 高血壓腎病護(hù)理查房課件
- 基坑開(kāi)挖影響周邊環(huán)境與建筑物研究
- 《民事訴訟法》課件
- 環(huán)保合規(guī)與企業(yè)風(fēng)險(xiǎn)管理
評(píng)論
0/150
提交評(píng)論