Java語言程序設計上清華大學442_第1頁
Java語言程序設計上清華大學442_第2頁
Java語言程序設計上清華大學442_第3頁
Java語言程序設計上清華大學442_第4頁
Java語言程序設計上清華大學442_第5頁
已閱讀5頁,還剩437頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、java 語言程序設計清華大學清華大學 鄭鄭 莉莉第一章第一章 java 語言基礎知識語言基礎知識第二章第二章 類與對象的基本概念類與對象的基本概念第三章第三章 類的方法類的方法第四章第四章 類的重用類的重用第五章第五章 接口與多態(tài)接口與多態(tài)第六章第六章 輸入輸入/輸出流和文件輸出流和文件第七章第七章 對象群體的組織對象群體的組織第八章第八章 線程線程第九章第九章 圖形用戶界面圖形用戶界面第十章第十章 jdbc與數(shù)據(jù)庫訪問與數(shù)據(jù)庫訪問第十一章第十一章 servlet程序設計程序設計第十二章第十二章 jsp程序設計程序設計java 語言程序設計第一章第一章java 語言基礎知識語言基礎知識清華大

2、學清華大學 鄭鄭 莉莉java語言程序設計清華大學 鄭莉4目錄目錄1.1 java語言與面向對象的程序設計語言與面向對象的程序設計1.2 java程序概述程序概述1.3 基本數(shù)據(jù)類型與表達式基本數(shù)據(jù)類型與表達式1.4 數(shù)組的概念數(shù)組的概念1.5 數(shù)組的創(chuàng)建和引用數(shù)組的創(chuàng)建和引用1.6 本章小結本章小結java語言程序設計清華大學 鄭莉51.1 java語言與面向對象的程序設計語言與面向對象的程序設計ljava語言是一個面向對象的程序設計語言是一個面向對象的程序設計語言。語言。l除了面向對象的特點以外,除了面向對象的特點以外,java語言語言還在安全性、平臺無關性、支持多線還在安全性、平臺無關性

3、、支持多線程、內(nèi)存管理等許多方面具有卓越的程、內(nèi)存管理等許多方面具有卓越的優(yōu)點。優(yōu)點。java語言程序設計清華大學 鄭莉61.1.1 面向對象的程序設計思想面向對象的程序設計思想l計算機程序設計計算機程序設計 對問題進行抽象 用計算機語言表述,利用機器求解java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉71.1.1 面向對象的程序設計思想面向對象的程序設計思想(續(xù)續(xù))l程序設計語言發(fā)展的歷程程序設計語言發(fā)展的歷程 機器語言 匯編語言 高級語言 面向對象的語言java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉81.1.1 面向對象的程序設計思想面向對象的程序設計

4、思想(續(xù)續(xù))l面向對象的思想面向對象的思想 將客觀事物看作具有狀態(tài)和行為的對象,通過抽象找出同一類對象的共同狀態(tài)和行為,構成類。java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉91.1.1 面向對象的程序設計思想面向對象的程序設計思想(續(xù)續(xù))l例:例: 構建一個汽車類,需要提取所有汽車對象的共有的狀態(tài)和行為。將狀態(tài)用變量表示,行為用方法表示。class car int color_number; int door_number; int speed; void brake() void speedup() ; void slowdown() ; java語言與面向對象的程序設

5、計java語言程序設計清華大學 鄭莉101.1.1 面向對象的程序設計思想面向對象的程序設計思想(續(xù)續(xù))l面向對象技術給軟件發(fā)展帶來的益處面向對象技術給軟件發(fā)展帶來的益處 可重用性 可靠性 l面向對象語言的基本特征面向對象語言的基本特征 抽象和封裝 繼承性 多態(tài)性java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉111.1.2 java語言的特點語言的特點l面向對象面向對象l安全性安全性 java不支持指針 java的內(nèi)部安全措施l平臺無關性平臺無關性 編譯后的字節(jié)碼對應于java虛擬機,因此可在不同平臺上運行l(wèi)多線程多線程 java是第一個在語言級提供內(nèi)至多線程支持的高級語言

6、l內(nèi)存管理內(nèi)存管理 java對內(nèi)存自動進行管理并進行垃圾回收java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉121.1.2 java語言的特點語言的特點(續(xù)續(xù))ljava 語言的優(yōu)點語言的優(yōu)點 易于學習 代碼效率高 代碼質量高 開發(fā)程序快 體系結構中立,純java程序不依賴于平臺 一處編寫,各處運行 軟件易于發(fā)布java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉131.1.2 java語言的特點語言的特點(續(xù)續(xù))ljava與與c+的區(qū)別的區(qū)別 java中沒有#include 和#define 等預處理功能,用import語來句包含其它類和包; java中沒有s

7、tructure,union及typedef; java中沒有不屬于類成員的函數(shù),沒有指針和多重繼承,java只支持單重繼承; java中禁用goto,但goto還是保留的關鍵字; java中沒有操作符重載; java中沒有全局變量,可以在類中定義公用、靜態(tài)的數(shù)據(jù)成員實現(xiàn)相同功能;.java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉141.1.3 java類庫類庫l組成組成java程序的最小單位是類,類封程序的最小單位是類,類封裝了數(shù)據(jù)與處理數(shù)據(jù)的方法。裝了數(shù)據(jù)與處理數(shù)據(jù)的方法。l對于大多數(shù)常用的功能,有大量已經(jīng)對于大多數(shù)常用的功能,有大量已經(jīng)編譯好、經(jīng)過測試的類,這些類的集編

8、譯好、經(jīng)過測試的類,這些類的集合就是合就是java類庫。類庫。ljava類庫主要是隨編譯器一起提供,類庫主要是隨編譯器一起提供,也有些類庫是由獨立軟件開發(fā)商提供也有些類庫是由獨立軟件開發(fā)商提供的。的。java語言與面向對象的程序設計java語言程序設計清華大學 鄭莉151.2 java程序概述程序概述ljava 開發(fā)環(huán)境開發(fā)環(huán)境lapplication 舉例舉例lapplet舉例舉例lservlet舉例舉例ljsp舉例舉例java語言程序設計清華大學 鄭莉161.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境java程序概述java程序編譯執(zhí)行的過程java語言程序設計清華大學 鄭莉171.2.1 java

9、開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))一次編寫,各處運行一次編寫,各處運行java程序概述java語言程序設計清華大學 鄭莉18編譯編譯,沒有絕對地址沒有絕對地址將將.class文件裝載文件裝載到內(nèi)存到內(nèi)存java源程序源程序(.java文件文件)java編譯器編譯器java bytecode(.class文件文件)系統(tǒng)執(zhí)行平臺系統(tǒng)執(zhí)行平臺bytecode 解釋器解釋器bytecode 載入器載入器字節(jié)碼校驗器字節(jié)碼校驗器不存在偽造的指針不存在偽造的指針不違反訪問權限不違反訪問權限不非法訪問對象不非法訪問對象不導致操作棧溢出不導致操作棧溢出java的編譯與執(zhí)行java程序概述 1.2.1 java開發(fā)環(huán)境開

10、發(fā)環(huán)境 (續(xù)續(xù))java語言程序設計清華大學 鄭莉19 1.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境 (續(xù)續(xù))ljava apis (應用應用程序接口程序接口) 經(jīng)過編譯的,可在程序中使用的java代碼標準庫。ljava vm(虛擬(虛擬機)機) java 程序由java虛擬機程序執(zhí)行(或解釋執(zhí)行)。java 程序java apisjava 虛擬機計算機系統(tǒng)java 平臺java程序概述java語言程序設計清華大學 鄭莉201.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))java2 sdk(software development kit) standard edition (j2se) enterpri

11、se edition (j2ee) mobile edition (j2me)java程序概述java語言程序設計清華大學 鄭莉211.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))j2sej2sdk的核心部分的核心部分l開發(fā)工具開發(fā)工具 編譯器 調試器 文檔制作工具l運行環(huán)境運行環(huán)境 java 虛擬機 組成java 2 平臺api的類。 幫助文檔l附加庫附加庫 ljava程序(程序(applets 和和 applications) 的演示的演示 java程序概述java語言程序設計清華大學 鄭莉22java開發(fā)工具包括開發(fā)工具包括ljavac: java編譯器,用來將java程序編譯成 bytec

12、ode。l java: java解釋器,執(zhí)行已經(jīng)轉換成bytecode的java應用程序。l jdb: java調試器, 用來調試java程序。l javap: 反編譯,將類文件還原回方法和變量。l javadoc: 文檔生成器,創(chuàng)建html文件。l appletviwer: applet解釋器, 用來解釋已經(jīng)轉換成bytecode的java小應用程序。1.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))java程序概述java語言程序設計清華大學 鄭莉231.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))環(huán)境安裝環(huán)境安裝以以j2sdk1.4.0為例為例l下載地址 http:/l下載文件 j2sdk-1_4

13、_0-win.exe j2sdk-1_4_0-doc.zipl安裝安裝 直接運行“j2sdk-1_4_0-win.exe” 。l文檔文檔 解開“j2sdk-1_4_0-doc.zip” 。java程序概述java語言程序設計清華大學 鄭莉241.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))安裝安裝jdk后產(chǎn)生如下目錄:后產(chǎn)生如下目錄:lbin目錄:目錄:java開發(fā)工具,包括開發(fā)工具,包括java編譯器、解釋器等編譯器、解釋器等l demo目錄:一些實例程序目錄:一些實例程序l lib目錄:目錄:java開發(fā)類庫開發(fā)類庫l jre目錄:目錄: java運行環(huán)境,包括運行環(huán)境,包括java虛擬機、運

14、行類庫等虛擬機、運行類庫等l java程序概述java語言程序設計清華大學 鄭莉251.2.1 java開發(fā)環(huán)境開發(fā)環(huán)境(續(xù)續(xù))幾種集成開發(fā)環(huán)境幾種集成開發(fā)環(huán)境lnetbeansljcreator lelborland jbuilderlmicrosoft visual j+libm : visual age for javalsun one studiojava程序概述java語言程序設計清華大學 鄭莉261.2.2 application舉例舉例application運行在客戶端java虛擬機上的java程序可在客戶端機器中讀寫可使用自己的主窗口、標題欄和菜單程序可大可小能夠以命令行方式運

15、行主類必須有一個主方法main(),作為程序運行的入口。java程序概述java語言程序設計清華大學 鄭莉27public class myclass private int val1,val2 ;public void myfun(int x,int y) val1=x ; val2=y ; system.out.println(the sum is: +(val1+val2) ; public static void main(string arg) myclass myobj=new myclass(); myobj.myfun(1,2);1.2.3 application舉例舉例(續(xù)續(xù)

16、) 例例1-1java程序概述java語言程序設計清華大學 鄭莉281.2.3 application舉例舉例(續(xù)續(xù)) 例例1-1 運行結果運行結果使用如下命令編譯并運行程序:使用如下命令編譯并運行程序:javac myclass.javajava myclass運行結果如下:運行結果如下:the sum is: 3java程序概述java語言程序設計清華大學 鄭莉29lapplet小應用程序小應用程序運行于支持java的web瀏覽器中瀏覽器的解釋器把字節(jié)碼轉換成和機器匹配的指令,在網(wǎng)頁中執(zhí)行小程序。applet和application的差別:運行環(huán)境的不同,小應用程序總是放在web瀏覽器的圖

17、形用戶界面中1.2.3 applet舉例舉例java程序概述java語言程序設計清華大學 鄭莉30lapplet的優(yōu)點的優(yōu)點web 瀏覽器軟件包括很多小應用程序運行所需的功能lapplet的局限性的局限性在客戶端主機的文件系統(tǒng)中讀/寫受限不能運行客戶端主機的任何程序僅能在服務器和客戶端之間建立聯(lián)系1.2.3 applet舉例舉例(續(xù)續(xù))java程序概述java語言程序設計清華大學 鄭莉31java applet:import java.awt.graphics;import java.applet.applet;public class myapplet extends appletpubli

18、c string s;public void init() s=new string(hello world !); public void paint(graphics g) g.drawstring(s,25,25); html:applet code= width=400 height=4001.2.3 applet舉例舉例(續(xù)續(xù)) 例例1-2java程序概述java語言程序設計清華大學 鄭莉321.2.3 applet舉例舉例(續(xù)續(xù)) 例例1-2注釋注釋lgraphics類類 使得applet繪制直線、矩形、橢圓形、字符串等l方法方法init() 初始化,實現(xiàn)了字符串的創(chuàng)建l方法方法p

19、aint() 中中 g為graphics類的對象。調用了graphics的drawstring方法繪制字符串。 此方法執(zhí)行的結果就是從坐標(60,40)開始繪制出字符串hello world! 。java程序概述java語言程序設計清華大學 鄭莉331.2.3 applet舉例舉例(續(xù)續(xù)) 例例1-2運行運行l(wèi)用支持用支持java的瀏覽器,比如的瀏覽器,比如ie6.0,打開打開applet1.htmljava程序概述java語言程序設計清華大學 鄭莉341.2.3 applet舉例舉例(續(xù)續(xù)) 例例1-2運行運行l(wèi)用用java自帶的自帶的appletviewer瀏覽瀏覽 輸入:appletvi

20、ewer applet1.htmljava程序概述java語言程序設計清華大學 鄭莉35servletservlet運行在服務器端,響應客戶端請求,擴展了服務器的功能 運行servlet需要服務器的支持,需要在服務器中進行部署servlet用到的包在j2ee的api中能找到所有的servlet都必須實現(xiàn)servlet接口1.2.4 servlet舉例舉例java程序概述java語言程序設計清華大學 鄭莉36程序首先構建程序首先構建httpservletrequesthttpservletrequest,并建立一個數(shù)據(jù),并建立一個數(shù)據(jù)表單;點擊表單;點擊submitsubmit按鈕后,按鈕后,s

21、ervletservlet再次被調用,并產(chǎn)再次被調用,并產(chǎn)生一個含有表單的網(wǎng)頁。生一個含有表單的網(wǎng)頁。public class public class echoformechoform extends extends httpservlethttpservlet public void public void service(httpservletrequestservice(httpservletrequest reqreq, , httpservletresponsehttpservletresponse resres) throws) throws ioexceptionioexcep

22、tion res.setcontenttype(textres.setcontenttype(text/html);/html); printwriterprintwriter out = out = res.getwriterres.getwriter();(); enumeration enumeration fldsflds = = req.getparameternamesreq.getparameternames();(); 1.2.5 servlet舉例舉例(續(xù)續(xù)) 例例1-3java程序概述java語言程序設計清華大學 鄭莉371.2.5 servlet舉例舉例(續(xù)續(xù)) 例例1-

23、3 if(!flds.hasmoreelementsif(!flds.hasmoreelements()() out.printout.print();(); out.printout.print(form method=post ();); for(intfor(int i = 0; i 10; i+) i = 0; i 10; i+) out.printout.print(field + i + +(field + i + + input type=text+ );); out.printout.print(input type=submit name=submit(); value=su

24、bmit); java程序概述java語言程序設計清華大學 鄭莉38elseelse out.print(your form contained:); out.print(your form contained:); while(flds.hasmoreelementswhile(flds.hasmoreelements()() string field= ( string field= (string)flds.nextelementstring)flds.nextelement();(); string value= string value= req.getparameter(field

25、req.getparameter(field);); out.print(field + = + value+ out.print(field + = + value+ );); out.close(); out.close(); 1.2.5 servlet舉例舉例(續(xù)續(xù)) 例例1-3java程序概述java語言程序設計清華大學 鄭莉39ljsp就是嵌入了就是嵌入了java代碼的代碼的html ljsp和和servlet同是服務器端的技術。同是服務器端的技術。實際上,實際上,jsp文檔在后臺被自動轉換文檔在后臺被自動轉換成成servlet l使用使用jsp便于實現(xiàn)網(wǎng)頁的動靜分離便于實現(xiàn)網(wǎng)頁的動

26、靜分離l相對于相對于servlet,jsp在服務器的部署在服務器的部署簡單簡單1.2.6 jsp舉例舉例java程序概述java語言程序設計清華大學 鄭莉40the time in second is:the time in second is: 1.2.6 jsp舉例舉例(續(xù)續(xù))java程序概述java語言程序設計清華大學 鄭莉411.3 基本數(shù)據(jù)類型與表達式基本數(shù)據(jù)類型與表達式l變量與常量變量與常量l基本數(shù)據(jù)類型基本數(shù)據(jù)類型l表達式與運算符表達式與運算符l類型轉換類型轉換java語言程序設計清華大學 鄭莉421.3.1 變量與常量變量與常量 l變量變量 一個由標識符命名的項 每個變量都有類

27、型, 例如 int 類型或 object類型, 變量還有作用域. 變量的值可以被改變. l常量常量 常量一旦被初始化以后就不可改變?;緮?shù)據(jù)類型與表達式java語言程序設計清華大學 鄭莉43l標識符標識符 標識符是一個名稱,與內(nèi)存中的某個位置(地址)相對應 標識符的第一個字符必須是下列字符之一: l大寫字母大寫字母 (a-z) l小寫字母小寫字母 (a-z) l下劃線(_) l美元符號 ($) 標識符的第二個字符及后繼字符必須是: l上述列表中的任意字符 l數(shù)字字符 (0-9) 基本數(shù)據(jù)類型與表達式1.3.1 變量與常量變量與常量(續(xù)續(xù)) java語言程序設計清華大學 鄭莉44l整數(shù)整數(shù) by

28、te 8 bits -128 +127 short 16 bits -32768 + 32767 int 32 bits 231(231-1) long 64 bits 263(263-1) char 8 bits 0 65535 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 java語言程序設計清華大學 鄭莉45l整數(shù)運算整數(shù)運算 比較運算符(關系運算符)l算術比較運算符 , , and = l算術相等比較運算符 = and != 算術運算符l一元運算符 + 和 -l+,- *, /, 和 % (取余 )l自增/自減運算符 +/-l移位運算符 , and l位運算符 , &

29、;, |, and 條件運算符 ? : 類型轉換運算符 字符串連接運算符 + 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉46l浮點數(shù)浮點數(shù) floatl單精度浮點數(shù)l32-bitl- m2e m2e m 是一個小于 224的正整數(shù) e 是一個介于 -149和104之間(含)的整數(shù) doublel雙精度浮點數(shù)l64-bitl- m2e m2e m是一個小于 253的正整數(shù) e是一個介于 -1045 和 1000之間(含)的整數(shù)基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉47l浮點運算

30、浮點運算 比較運算符(關系運算符)l算術比較運算符 , , and = l算術相等比較運算符 = and != 算術運算符l一元運算符 + 和 -l+,- *, /, 和 % (取余 )l自增/自減運算符 +/-l移位運算符 , and l位運算符 , &, |, and 條件運算符 ? : 類型轉換運算符 字符串連接運算符 + 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉48l布爾類型和布爾值布爾類型和布爾值 布爾類型表示一個邏輯量, 有兩個取值: true和false 例如:boolean is_salaried;boolea

31、n is_hourly;is_salaried = true; /將 is_salaried設置為trueis_hourly = false; /將is_hourly設置為false 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉49l布爾運算符布爾運算符 關系運算符 = and != 邏輯“非”運算符 ! 邏輯運算符 &, , 和 | 條件“與” 和條件“或”運算符 & 和 | 條件運算符 ? : 字符串連接運算符 +基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉50l

32、string字符串字符串 string 是一個類 string類jdk標準類集合中的一部分string animal = walrus;基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉51l文字量文字量 直接出現(xiàn)在程序中并被編譯器直接使用的值. 整數(shù)文字量l十進制如: 15l十六進制如: 0 xffl八進制如: 0377基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉52基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) 浮點文字量l一個浮點文字量包括以下幾個部分 整數(shù)部分 小

33、數(shù)點 小數(shù)部分 指數(shù) (e or e) 類型后綴 (f or f for float, d or d for double)lfloat 類型文字量舉例: 1e 1f 2.f .3f 0f 3.1 4f 6.022137e+23f ldouble 類型文字量舉例: 1e1 2. .3 0.0 3.1 4 1e-9d 1e137 布爾文字量l布爾類型只有兩個值,由文字量 true 和 false表示java語言程序設計清華大學 鄭莉53 字符文字量l一個字符文字量表示為一個字符或者一個轉義序列,用單引號括起 例如 a z l格式字符 b backspace bs t horizontal tab

34、 ht n linefeed lf f form feed ff r carriage return cr double quote single quote backslash 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉54 字符串文字量l由零個或多個字符組成,以雙引號括起l每一個字符都可以用轉義序列來表示 l例如: / 空字符串 / 只包含 的字符串 this is a string / 有16個字符的字符串 this is a + string /字符串常量表達式,由兩個字符串常量組成 基本數(shù)據(jù)類型與表達式1.3.2 基本數(shù)據(jù)類型

35、基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉55public class ex1_1 public static void main(string args ) final int price=30; final double pi = 3.141592654; int num,total; double v,r,h; num=10; total=num*price; system.out.println(total); r=2.5; h=3.2; v=pi*r*r*h; system.out.println(v); 變量聲明變量聲明變量變量文字量文字量常量聲明常量聲明基本數(shù)據(jù)類型

36、與表達式1.3.2 基本數(shù)據(jù)類型基本數(shù)據(jù)類型(續(xù)續(xù)) java語言程序設計清華大學 鄭莉56l表達式是由一系列變量、運算符、方法調表達式是由一系列變量、運算符、方法調用構成的,表達式可以計算出一個值來用構成的,表達式可以計算出一個值來l程序中的很多工作是通過計算表達式的值程序中的很多工作是通過計算表達式的值來完成的。來完成的。 有時需要的是表達式的副作用,例如賦值表達式將數(shù)值賦給變量 更多時候起作用的是表達式的值,這個值可以用作方法的參數(shù),或更大的表達式的操作數(shù),或者影響語句的執(zhí)行順序基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符 java語言程序設計清華大學 鄭莉57l算術運算

37、符算術運算符運算符 + 和 -例如: i+; -j; 一元運算符 + 和 加法運算符 + 和 - 乘法運算符 *, /, 和 % 基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉58l賦值運算符賦值運算符簡單賦值運算符 =復合賦值運算符*= /= %= += -= = = &= = |= e1 op= e2 等效于 e1 = (t)(e1) op (e2), 其中t 是 e1的類型基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉59l舉例舉例a=5表達式的值為 5a=b=c=

38、5 表達式的值以及 a,b,c 的值都是 5 a=5+(c=6) 表達式的值是 11, a 是 11, c 是 6a=(b=4)+(c=6) 表達式的值是 10, a是10,b是4,c是6a=(b=10)/(c=2)表達式的值是 5, a是5,b是10,c是2a+=a-=a*a 等效于 a=a+(a=a-a*a)基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉60l關系運算符關系運算符 關系表達式的類型永遠是布爾類型(bool). 算術比較運算符 , , and = 類型比較運算符 instanceofl例如: e instanceof

39、point /point 是一個類基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉61l相等關系運算符相等關系運算符 數(shù)字相等運算符 = , != 布爾相等運算符 = , != 引用相等運算符 = , !=基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉62l邏輯運算符邏輯運算符 “與”運算 &l如果兩個操作數(shù)的值都為true運算結果為true; 否則,結果為false. “或”運算 |l如果兩個操作數(shù)的值都為false運算結果為false;否則,結果true “非”運算符!

40、l操作數(shù)的類型必須是布爾類型l如果操作數(shù)的結果為 false,則表達式的結果為 true ,如果操作數(shù)的結果為 true則表達式的結果為 false基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉63條件運算符條件運算符 ( (表達式表達式1 1?表達式?表達式2 2:表達式:表達式3)3)首先計算表達式1如果表達式1的值為 true, 則選擇表達式2的值如果表達式1的值為 false,則選擇表達式3的值基本數(shù)據(jù)類型與表達式1.3.3 表達式與運算符表達式與運算符(續(xù)續(xù)) java語言程序設計清華大學 鄭莉64l每個表達式都有類型每個表達

41、式都有類型l如果表達式的類型對于上下文不合適如果表達式的類型對于上下文不合適 有時可能會導致編譯錯誤 有時語言會進行隱含類型轉換基本數(shù)據(jù)類型與表達式1.3.4 類型轉換類型轉換 java語言程序設計清華大學 鄭莉65l擴展轉換擴展轉換 byte, short, int, long, float, double char 從一種整數(shù)類型到另一種整數(shù)類型,或者從float到double的轉換不損失任何信息 從整數(shù)類形向float或double轉換,會損失精度l窄化轉換窄化轉換 double, float, long, int, short, byte,char 窄化轉換可能會丟失信息基本數(shù)據(jù)類型與

42、表達式1.3.4 類型轉換類型轉換(續(xù)續(xù)) java語言程序設計清華大學 鄭莉66l字符串轉換字符串轉換 任何類型(包括null類型)都可以轉換為字符串類型基本數(shù)據(jù)類型與表達式1.3.4 類型轉換類型轉換(續(xù)續(xù)) java語言程序設計清華大學 鄭莉67l賦值轉換賦值轉換 將表達式類型轉換為制定變量的類型l方法調用轉換方法調用轉換 適用于方法或構造方法調用中的每一個參數(shù)l強制轉換強制轉換 將一個表達式轉換為指定的類型 例如 (float)5.0l字符串轉換字符串轉換 只當一個操作數(shù)是string類型時,適用于+運算符的操作數(shù)基本數(shù)據(jù)類型與表達式1.3.4 類型轉換類型轉換(續(xù)續(xù)) java語言程

43、序設計清華大學 鄭莉68l 數(shù)字提升數(shù)字提升 將算術運算符的操作數(shù)轉換為共同類型 一元數(shù)字提升一元數(shù)字提升l如果一個操作數(shù)是 byte, short, 或 char類型, 一元數(shù)字提升通過擴展轉換將它轉換為int類型 二元數(shù)字提升二元數(shù)字提升l二元數(shù)字提升作用在特定操作符的操作數(shù)上*, /, %, +, -, , , =, =, !=, &, , | and?:l在必要時使用擴展轉換來轉換操作數(shù)類型基本數(shù)據(jù)類型與表達式1.3.4 類型轉換類型轉換(續(xù)續(xù)) java語言程序設計清華大學 鄭莉69l標準輸入輸出簡介標準輸入輸出簡介 標準輸入流 system.in 標準輸出流 system.

44、out 例如 system.out.println(hello world!);基本數(shù)據(jù)類型與表達式1.3.4 類型轉換類型轉換(續(xù)續(xù)) java語言程序設計清華大學 鄭莉70l數(shù)組由同一類型的一連串對象或數(shù)組由同一類型的一連串對象或者基本數(shù)據(jù)組成,并封裝在同一者基本數(shù)據(jù)組成,并封裝在同一個標識符(數(shù)組名稱)下。個標識符(數(shù)組名稱)下。l數(shù)組是對象數(shù)組是對象 動態(tài)初始化 可以賦值給object類型的變量 在數(shù)組中可以調用類object 的所有方法1.4 數(shù)組的概念數(shù)組的概念java語言程序設計清華大學 鄭莉71l數(shù)組元素數(shù)組元素 數(shù)組中的變量被稱作數(shù)組的元素 元素沒有名字,通過數(shù)組名字和非負整

45、數(shù)下標值引用數(shù)組元素。 每個數(shù)組都有一個由 public final 修飾的成員變量:length ,即數(shù)組含有元素的個數(shù)(length可以是正數(shù)或零)數(shù)組的概念1.4 數(shù)組的概念數(shù)組的概念(續(xù)續(xù))java語言程序設計清華大學 鄭莉721.5 數(shù)組的創(chuàng)建和引用數(shù)組的創(chuàng)建和引用l數(shù)組的聲明數(shù)組的聲明l數(shù)組的創(chuàng)建數(shù)組的創(chuàng)建l數(shù)組元素的初始化數(shù)組元素的初始化l數(shù)組的引用數(shù)組的引用l多維數(shù)組多維數(shù)組java語言程序設計清華大學 鄭莉73數(shù)組的創(chuàng)建和引用1.5.1 數(shù)組的聲明數(shù)組的聲明 l聲明(聲明(declaration) 聲明數(shù)組時無需指明數(shù)組元素的個數(shù),也不為數(shù)組元素分配內(nèi)存空間 不能直接使用,必

46、須經(jīng)過初始化分配內(nèi)存后才能使用java語言程序設計清華大學 鄭莉74type arrayname; 例如:int intarray; string stringarray; type arrayname ; 例如:int intarray; string stringarray;1.5.1 數(shù)組的聲明數(shù)組的聲明(續(xù)續(xù)) 數(shù)組的創(chuàng)建和引用java語言程序設計清華大學 鄭莉75l用關鍵字用關鍵字new構成數(shù)組的創(chuàng)建表達式,可構成數(shù)組的創(chuàng)建表達式,可以指定數(shù)組的類型和數(shù)組元素的個數(shù)。元以指定數(shù)組的類型和數(shù)組元素的個數(shù)。元素個數(shù)可以是常量也可以是變量素個數(shù)可以是常量也可以是變量 l基本類型數(shù)組的每個元

47、素都是一個基本類基本類型數(shù)組的每個元素都是一個基本類型的變量;引用類型數(shù)組的每個元素都是型的變量;引用類型數(shù)組的每個元素都是對象的的引用對象的的引用 1.5.2 數(shù)組的創(chuàng)建數(shù)組的創(chuàng)建 數(shù)組的創(chuàng)建和引用java語言程序設計清華大學 鄭莉76arryname=new typecomponets number; 例如:int ai; ai=new int10;string s; s=new string3; 或者可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行int ai=new int10;可以在一條聲明語句中創(chuàng)建多個數(shù)組 string s1=new string3, s2=new string8;1.5.2 數(shù)組

48、的創(chuàng)建數(shù)組的創(chuàng)建(續(xù)續(xù)) 數(shù)組的創(chuàng)建和引用java語言程序設計清華大學 鄭莉77l聲明數(shù)組名時,給出了數(shù)組的初始值,程序便會利聲明數(shù)組名時,給出了數(shù)組的初始值,程序便會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始化化 int a=22, 33, 44, 55; l創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便被賦創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便被賦予默認值初始值。予默認值初始值。 基本類型數(shù)值數(shù)據(jù),默認的初始值為0; boolean類型數(shù)據(jù),默認值為false; 引用類型元素的默認值為null。 l程序也可以在數(shù)組被構造之后改變數(shù)組元素值程序也可

49、以在數(shù)組被構造之后改變數(shù)組元素值數(shù)組的創(chuàng)建和引用1.5.3 數(shù)組元素的初始化數(shù)組元素的初始化 java語言程序設計清華大學 鄭莉78l通過下面的表達式引用數(shù)組的一個元素:通過下面的表達式引用數(shù)組的一個元素:arraynameindexl數(shù)組下標必須是數(shù)組下標必須是 intint , shortshort, bytebyte, 或者或者 charchar.l下標從零開始計數(shù)下標從零開始計數(shù). l元素的個數(shù)即為數(shù)組的長度,可以通過元素的個數(shù)即為數(shù)組的長度,可以通過 arryname.length引用引用l元素下標最大值為元素下標最大值為 length 1,如果超過最大值,將會產(chǎn)生數(shù)組越界異常(ar

50、rayindexoutofboundsexception) 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用 java語言程序設計清華大學 鄭莉79intint data = new int10; data = new int10;ldata -1 非法的非法的ldata 10 非法的非法的 ldata 1.5 非法的非法的 ldata 0 合法的合法的 ldata 9 合法的合法的 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉80int values = new int7;int index;index = 0;values index = 7

51、1; index = 5;values index = 23; index = 3;values 2+2 = values index-3 ; 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉81public class myarray public static void main(string args) int myarray; /聲明數(shù)組聲明數(shù)組 myarray=new int10; /創(chuàng)建數(shù)組創(chuàng)建數(shù)組 system.out.println(indexttvalue); for(int i=0; imyarray.length;i+) sys

52、tem.out.println(i+tt+myarrayi); /證明數(shù)組元素默認初始化為證明數(shù)組元素默認初始化為0 /myarray10=100; /將產(chǎn)生數(shù)組越界異常將產(chǎn)生數(shù)組越界異常 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉82class gauss public static void main(string args) int ia = new int101; for (int i = 0; i ia.length; i+) iai = i; int sum = 0; for (int i = 0; i ia.length; i+)

53、 sum += iai; system.out.println(sum); 輸出輸出: 5050 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉83l數(shù)組名是一個引用:數(shù)組名是一個引用:例子例子public class arrays public static void main(string args) int a1 = 1, 2, 3, 4, 5 ; int a2; a2 = a1; for(int i = 0; i a2.length; i+) a2i+; for(int i = 0; i a1.length; i+) system.out.

54、println( a1 + i + = + a1i); 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉841.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù))運行結果:運行結果:a10 = 2a11 = 3a12 = 4a13 = 5a14 = 6數(shù)組的創(chuàng)建和引用java語言程序設計清華大學 鄭莉85l字符串引用構成的數(shù)組:字符串引用構成的數(shù)組:string strarray;strarray = new string8 ;strarray0= hello ;數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉86l例子

55、例子public class public class arrayofstringsdemoarrayofstringsdemo public static void main(string public static void main(string argsargs) ) string string anarrayanarray = = string one, string two, string three; string one, string two, string three; for ( for (intint i = 0; i i = 0; i anarray.lengthan

56、array.length; i+); i+) system.out.println(anarrayi.tolowercasesystem.out.println(anarrayi.tolowercase();(); 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) 運行結果:string onestring twostring threejava語言程序設計清華大學 鄭莉87l數(shù)組的復制:數(shù)組的復制: public static void public static void arraycopyarraycopy(object(object sourcesource , , intin

57、t srcindexsrcindex , object , objectdestdest , , intint destindexdestindex , , intint lengthlength ) ) source數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉88 例子例子public class arraycopydemo public static void main(string args) char copyfrom = d, e, c, a, f, f, e, i, n, a, t, e, d; char copyto = new c

58、har7; system.arraycopy(copyfrom, 2, copyto, 0, 7); system.out.println(new string(copyto); 數(shù)組的創(chuàng)建和引用1.5.4 數(shù)組的引用數(shù)組的引用(續(xù)續(xù)) java語言程序設計清華大學 鄭莉89int gradetableint gradetable; ;gradetablegradetable 0 1 0 1 為為42gradetablegradetable 3 4 3 4 為為93gradetablegradetable 6 2 6 2 為為78數(shù)組的創(chuàng)建和引用1.5.5 多維數(shù)組多維數(shù)組 java語言程序設

59、計清華大學 鄭莉90l二維數(shù)組的聲明和構造二維數(shù)組的聲明和構造 int myarray ;lmyarray 可以存儲一個指向2維整數(shù)數(shù)組的引用。其初始值為null。 int myarray = new int35 ;l建立一個數(shù)組對象,把引用存儲到myarray。這個數(shù)組所有元素的初始值為零。 int myarray = 8,1,2,2,9, 1,9,4,0,3, 0,3,0,0,7 ;l建立一個數(shù)組并為每一個元素賦值。數(shù)組的創(chuàng)建和引用1.5.5 多維數(shù)組多維數(shù)組(續(xù)續(xù)) java語言程序設計清華大學 鄭莉91l二維數(shù)組的長度二維數(shù)組的長度class unevenexample2class u

60、nevenexample2 public static void main( string arg public static void main( string arg ) ) int int uneven = uneven = 1, 9, 4 , 1, 9, 4 , 0, 2, 0, 2, 0, 1, 2, 3, 4 ; 0, 1, 2, 3, 4 ; system.out.println(length system.out.println(length is: + is: + uneven.length );uneven.length ); 數(shù)組的創(chuàng)建和引用1.5.5 多維數(shù)組多維數(shù)組(續(xù)續(xù)) 運行結果:length is: 3java語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論