第1章Java語言基礎(chǔ)知識_第1頁
第1章Java語言基礎(chǔ)知識_第2頁
第1章Java語言基礎(chǔ)知識_第3頁
第1章Java語言基礎(chǔ)知識_第4頁
第1章Java語言基礎(chǔ)知識_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java語言程序設(shè)計(第2版)第 1 章Java 語言基礎(chǔ)知識目錄1.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.2 Java語言特點1.3 Java程序概述1.4 基本數(shù)據(jù)類型與表達(dá)式1.5 數(shù)組的概念1.6 數(shù)組的創(chuàng)建和引用1.7 本章小結(jié)21.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計 Java語言是一個面向?qū)ο蟮某绦蛟O(shè)計語言。 除了面向?qū)ο蟮奶攸c以外,Java語言還在安全性、平臺無關(guān)性、支持多線程、內(nèi)存管理等許多方面具有卓越的優(yōu)點。31.1.1 面向?qū)ο蟮某绦蛟O(shè)計思想計算機程序設(shè)計 對問題進行抽象 用計算機語言表述,利用機器求解41.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.1.1 面向?qū)ο蟮某绦?/p>

2、設(shè)計思想(續(xù))程序設(shè)計語言發(fā)展的歷程 機器語言 匯編語言 高級語言 面向?qū)ο蟮恼Z言51.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.1.1 面向?qū)ο蟮某绦蛟O(shè)計思想(續(xù))面向?qū)ο蟮乃枷?將客觀事物看作具有狀態(tài)和行為的對象,通過抽象找出同一類對象的共同狀態(tài)和行為,構(gòu)成類。61.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.1.1 面向?qū)ο蟮某绦蛟O(shè)計思想(續(xù)) 例: 構(gòu)建一個汽車類,需要提取所有汽車對象的共有的狀態(tài)和行為。將狀態(tài)用變量表示,行為用方法表示。class Car int color_number; int door_number; int speed; void brake() void spee

3、dUp() ; void slowDown() ; 71.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.1.1 面向?qū)ο蟮某绦蛟O(shè)計思想(續(xù))面向?qū)ο蠹夹g(shù)給軟件發(fā)展帶來的益處 可重用性 可靠性 面向?qū)ο笳Z言的基本特征 抽象和封裝 繼承性 多態(tài)性81.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.2 Java語言的特點 1990 sun 啟動啟動 綠色計劃綠色計劃 1992 創(chuàng)建創(chuàng)建 oak語言語言 java 1994 gosling 參加參加 硅谷大會硅谷大會 演示演示java功能功能 震震驚世界驚世界 1995 sun 正式發(fā)布正式發(fā)布java第一個版本,目前最新第一個版本,目前最新的是的是jdk7.0J

4、ames GoslingWikipedia1.2 Java語言的特點面向?qū)ο蟀踩?Java不支持指針 Java的內(nèi)部安全措施平臺無關(guān)性 編譯后的字節(jié)碼對應(yīng)于Java虛擬機,因此可在不同平臺上運行多線程 Java是第一個在語言級提供內(nèi)置多線程支持的高級語言內(nèi)存管理 Java對內(nèi)存自動進行管理并進行垃圾回收111.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.2 Java語言的特點(續(xù))Java 語言的優(yōu)點 易于學(xué)習(xí) 代碼效率高 代碼質(zhì)量高 開發(fā)程序快 體系結(jié)構(gòu)中立,純Java程序不依賴于平臺 一處編寫,各處運行 軟件易于發(fā)布121.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.2 Java語言的特點(續(xù))

5、Java與C+的區(qū)別 Java中沒有#include 和#define 等預(yù)處理功能,用import語來句包含其它類和包; Java中沒有structure,union及typedef; Java中沒有不屬于類成員的函數(shù),沒有指針和多重繼承,Java只支持單重繼承; Java中禁用goto,但goto還是保留的關(guān)鍵字; Java中沒有操作符重載; Java中沒有全局變量,可以在類中定義公用、靜態(tài)的數(shù)據(jù)成員實現(xiàn)相同功能;.131.1 Java語言與面向?qū)ο蟮某绦蛟O(shè)計1.3 Java程序概述Java 開發(fā)環(huán)境Application 舉例141.3.1 Java開發(fā)環(huán)境Java程序編譯執(zhí)行的過程15

6、1.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))一次編寫,各處運行161.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))Java 平臺Java APIs (應(yīng)用程序接口) 經(jīng)過編譯的,可在程序中使用的Java代碼標(biāo)準(zhǔn)庫。Java VM(虛擬機) Java 程序由Java虛擬機程序執(zhí)行(或解釋執(zhí)行)。17Java 程序Java APIsJava 虛擬機計算機系統(tǒng)1.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))Java 平臺Java2 SDK(Software Development Kit) Standard Edition (J2SE) Enterprise Edi

7、tion (J2EE) Mobile Edition (J2ME)181.3 Java程序概述Java 技術(shù)體系技術(shù)體系J ava S E 以Web為中心的客戶端或服務(wù)器端的軟件開發(fā)以前稱為 JDK 1.X Java SE 的實現(xiàn): Java Software Development Kit (SDK), Standard Edition + Java Runtime Environment, Standard EditionJava ME針對消費類的電子設(shè)備如手機、數(shù)字置頂盒、汽車導(dǎo)航系統(tǒng)等。語言精簡、運行環(huán)境高度優(yōu)化。Java EE 開發(fā)企業(yè)級和服務(wù)器端的應(yīng)用。 Java SE+Enter

8、price JavaBeans(EJB),Java Servlets API + Java Server Pages(JSP).Java EE Application Model Java 平臺平臺JavaJava的特征的特征SunSun在在JAVA“JAVA“白皮書白皮書”中指出:中指出: JAVAJAVA是一種是一種“簡單、面向?qū)ο?、分布簡單、面向?qū)ο蟆⒎植际?、解釋型、健壯、安全、體系結(jié)構(gòu)中立、式、解釋型、健壯、安全、體系結(jié)構(gòu)中立、可移植、高性能和動態(tài)可移植、高性能和動態(tài)”的編程語言的編程語言對對C+進行成功改造進行成功改造 去掉指針,取消多重繼承和運算符重載去掉指針,取消多重繼承和運算符

9、重載 設(shè)立自動內(nèi)存回收設(shè)立自動內(nèi)存回收J(rèn)avaJava特征特征- -簡單性簡單性 語法和語義都比較單純,容易學(xué)習(xí)和使用語法和語義都比較單純,容易學(xué)習(xí)和使用提供大量功能豐富的可重用類庫簡化了提供大量功能豐富的可重用類庫簡化了 編程工作量編程工作量JavaJava特征特征- -面向?qū)ο竺嫦驅(qū)ο?Java Java 是最純潔的面向?qū)ο笳Z言,對面向是最純潔的面向?qū)ο笳Z言,對面向?qū)ο蠓椒▽W(xué)的支持也最全面對象方法學(xué)的支持也最全面: :JAVAJAVA對象有模塊化性質(zhì)和信息隱藏能力,對象有模塊化性質(zhì)和信息隱藏能力, 滿足面向?qū)ο蟮姆庋b要求;滿足面向?qū)ο蟮姆庋b要求;支持繼承;支持繼承;通過抽象類與接口通過抽象

10、類與接口支持多態(tài)支持多態(tài)JavaJava特征特征- -半編譯,半解釋半編譯,半解釋JavaJava特征特征- -半編譯,半解釋半編譯,半解釋編譯器編譯編譯器編譯JAVA源程序源程序字節(jié)碼字節(jié)碼解釋器解釋執(zhí)行解釋器解釋執(zhí)行優(yōu)點優(yōu)點: 兼具編譯執(zhí)行的效率優(yōu)勢和解釋執(zhí)行的靈活性;兼具編譯執(zhí)行的效率優(yōu)勢和解釋執(zhí)行的靈活性; 提高了應(yīng)用程序的可移植性:源程序、中間代碼提高了應(yīng)用程序的可移植性:源程序、中間代碼JavaJava特征特征- -可移植性可移植性.JAVA源程序源程序JAVA編譯器編譯器(Pentium).(SPARC)JAVA字節(jié)碼字節(jié)碼JAVA解釋器解釋器.(Pentium).(SPARC)

11、“一次編程,到處運行一次編程,到處運行”- WORA可移植性源于兩方面:可移植性源于兩方面: Java的半編譯、半解釋的特征的半編譯、半解釋的特征 Java采用標(biāo)準(zhǔn)的獨立于硬件平臺的數(shù)據(jù)類型采用標(biāo)準(zhǔn)的獨立于硬件平臺的數(shù)據(jù)類型JavaJava特征特征- -可移植性可移植性JavaJava特征特征- -安全性安全性在語言和運行環(huán)境中引入了多級安全措施:在語言和運行環(huán)境中引入了多級安全措施: Java的內(nèi)存分配和引用模型對于程序員透明,的內(nèi)存分配和引用模型對于程序員透明, 完全由底層的運行系統(tǒng)控制;完全由底層的運行系統(tǒng)控制; 內(nèi)存布局與內(nèi)存布局與C、 C+不同,不是由編譯器決定,不同,不是由編譯器決

12、定, 而是運行系統(tǒng)根據(jù)所在的硬件平臺的特性決定;而是運行系統(tǒng)根據(jù)所在的硬件平臺的特性決定; 取消了取消了C、C+的指針,的指針,JAVA編譯器通過符號編譯器通過符號 指針來引用內(nèi)存,由指針來引用內(nèi)存,由JAVA運行系統(tǒng)在運行時將運行系統(tǒng)在運行時將 符號指針具體解釋為實際的內(nèi)存地址。符號指針具體解釋為實際的內(nèi)存地址。Java特征特征- 多線程多線程 JAVA在在語言級語言級嵌入對并發(fā)的支持功能,嵌入對并發(fā)的支持功能, 具體機制就是多線程。具體機制就是多線程。 線程是比進程更小、更線程是比進程更小、更 經(jīng)濟的并發(fā)執(zhí)行單位,不擁有單獨的內(nèi)存空間。經(jīng)濟的并發(fā)執(zhí)行單位,不擁有單獨的內(nèi)存空間。 JAVA中

13、線程的同步采用中線程的同步采用C.A.R.Hoare的臨界區(qū)的臨界區(qū) 保護規(guī)則。保護規(guī)則。 JAVA線程執(zhí)行中被映射到實際的操作系統(tǒng)線程線程執(zhí)行中被映射到實際的操作系統(tǒng)線程。JavaJava特征特征- -動態(tài)特性動態(tài)特性 JAVA程序的基本組成單元程序的基本組成單元類是運行時動態(tài)類是運行時動態(tài)裝載裝載 的。使的。使JAVA可以動態(tài)地維護應(yīng)用系統(tǒng)及可以動態(tài)地維護應(yīng)用系統(tǒng)及其支持類之間的一致性。其支持類之間的一致性。 Java編譯生成的字節(jié)碼與機器代碼十分接近。提供即時編譯等措施。Java特征-高性能JAVA的語法機制概述的語法機制概述與與C+一致的語法機制:一致的語法機制: 數(shù)據(jù)類型、表達(dá)式、程

14、序流控制、結(jié)構(gòu)化數(shù)據(jù)類型、表達(dá)式、程序流控制、結(jié)構(gòu)化 異常處理等;異常處理等;與與C+不同的語法機制:不同的語法機制: 類、接口(類、接口(Interface)、程序包、程序包(Package)、 自動內(nèi)存回收以及多線程。自動內(nèi)存回收以及多線程。JAVA與與C+不同的語法機制不同的語法機制類:類: 最重要、最基本的語法設(shè)施,類的定義與繼承與最重要、最基本的語法設(shè)施,類的定義與繼承與 C+類似,主要區(qū)別:類似,主要區(qū)別: JAVA不允許多重繼承,多重繼承必須通過接口實現(xiàn)。不允許多重繼承,多重繼承必須通過接口實現(xiàn)。 JAVA引進了引進了abstract 和和final修飾詞。修飾詞。 帶帶abst

15、ract的類稱為抽象類,只能作為父類使用,的類稱為抽象類,只能作為父類使用, 不能直接產(chǎn)生實例對象。不能直接產(chǎn)生實例對象。 帶帶final的類不能用作父類被繼承,的類不能用作父類被繼承, 帶帶final的屬性的屬性在定義式必須賦初值并稱為常量,帶在定義式必須賦初值并稱為常量,帶final的方法將的方法將 禁止子類禁止子類(Overriding)。JAVA與與C+不同的語法機制不同的語法機制接口接口 是一種抽象類,其中只能出現(xiàn)靜態(tài)常量或抽象方法定義。是一種抽象類,其中只能出現(xiàn)靜態(tài)常量或抽象方法定義。 主要目的是實現(xiàn)多重繼承功能,避免主要目的是實現(xiàn)多重繼承功能,避免C+在多重繼承在多重繼承 語義上

16、的復(fù)雜性。語義上的復(fù)雜性。 一個一個JAVA類可以實現(xiàn)(繼承)多個接口。類可以實現(xiàn)(繼承)多個接口。程序包程序包 是一些相關(guān)類或接口的集合。是一些相關(guān)類或接口的集合。 JAVA提供包括可重用類標(biāo)準(zhǔn)程序包,用戶可自提供包括可重用類標(biāo)準(zhǔn)程序包,用戶可自 定義程序包。定義程序包。 通過通過 import 語句將程序包引入應(yīng)用程序。語句將程序包引入應(yīng)用程序。JAVA與與C+不同的語法機制不同的語法機制自動內(nèi)存回收自動內(nèi)存回收 JAVA取消了指針類型,所有動態(tài)內(nèi)存請求均取消了指針類型,所有動態(tài)內(nèi)存請求均 通過通過new運算符,并且得到的不是指針而是引用。運算符,并且得到的不是指針而是引用。 系統(tǒng)進行內(nèi)存

17、回收。系統(tǒng)進行內(nèi)存回收。JAVA與與C+不同的語法機制不同的語法機制多線程多線程 依賴操作系統(tǒng)提供的線程管理的依賴操作系統(tǒng)提供的線程管理的API:與平臺綁定:與平臺綁定 語言級支持多線程:忽略操作系統(tǒng)多線程機制的差異,語言級支持多線程:忽略操作系統(tǒng)多線程機制的差異, 軟件具有更好的可靠性和可移植性。軟件具有更好的可靠性和可移植性。JAVA運行系統(tǒng)運行系統(tǒng)引入運行系統(tǒng)的必要性引入運行系統(tǒng)的必要性: 將字節(jié)碼轉(zhuǎn)化為本機代碼;將字節(jié)碼轉(zhuǎn)化為本機代碼; 類的裝載與符號的消解;類的裝載與符號的消解; 控制執(zhí)行代碼??刂茍?zhí)行代碼。 運行環(huán)境的種類:運行環(huán)境的種類:JAVA Application - JA

18、VA解釋器解釋器JAVA Applet- JAVA兼容的兼容的Web瀏覽器。瀏覽器。JAVA運行系統(tǒng)的構(gòu)成運行系統(tǒng)的構(gòu)成類裝配器類裝配器字節(jié)碼驗證器字節(jié)碼驗證器解釋器解釋器代碼生成器代碼生成器運行支持庫運行支持庫JAVA程序運行過程程序運行過程Hello.javajavac Hello.javaHello.class網(wǎng)絡(luò)網(wǎng)絡(luò)類裝配器類裝配器字節(jié)碼驗證器字節(jié)碼驗證器解釋器解釋器代碼生成器代碼生成器運行支持庫運行支持庫本地系統(tǒng)本地系統(tǒng)編譯編譯運行運行執(zhí)行字節(jié)碼的過程代碼的裝入代碼的裝入代碼的驗證代碼的驗證代碼的執(zhí)行代碼的執(zhí)行:解釋方式、即時編譯解釋方式、即時編譯JIT方式方式JAVA虛擬機虛擬機

19、JVM的定義:的定義: An imaginary machine that is implemented by emulating it in software on a real machine. Code for the Java Virtual Machine is stored in .class files.JVM規(guī)范定義了一組抽象的邏輯組件,包括:規(guī)范定義了一組抽象的邏輯組件,包括:指令集;指令集;寄存器組:程序計數(shù)器、棧頂指針等;寄存器組:程序計數(shù)器、棧頂指針等;棧結(jié)構(gòu):提供各種參數(shù)等;棧結(jié)構(gòu):提供各種參數(shù)等;存儲區(qū):存放字節(jié)碼的方法代碼、符號表存儲區(qū):存放字節(jié)碼的方法代碼、符號

20、表;垃圾收集器垃圾收集器JVM組成部分組成部分JVM與與 JAVA運行系統(tǒng)運行系統(tǒng) JAVA運行系統(tǒng)是各供應(yīng)商對運行系統(tǒng)是各供應(yīng)商對JVM的具體實現(xiàn),的具體實現(xiàn),JVM需需要針對不同的軟硬件平臺做專門的實現(xiàn)要針對不同的軟硬件平臺做專門的實現(xiàn) JVM的意義:的意義: 保證不同平臺上的保證不同平臺上的JAVA運行系統(tǒng)功能統(tǒng)一運行系統(tǒng)功能統(tǒng)一Java應(yīng)用程序應(yīng)用程序Java虛擬機虛擬機UNIX LinuxSPARC Java應(yīng)用程序應(yīng)用程序Java虛擬機虛擬機WindowsX86 應(yīng)用程序?qū)討?yīng)用程序?qū)覬ava平臺層平臺層操作系統(tǒng)層操作系統(tǒng)層硬件層硬件層對運行系統(tǒng)的設(shè)計與實現(xiàn)的要求:對運行系統(tǒng)的設(shè)計與

21、實現(xiàn)的要求: 必須支持必須支持SUN的的.class文件結(jié)構(gòu)文件結(jié)構(gòu) 必須支持字節(jié)碼定義必須支持字節(jié)碼定義 必須支持必須支持JVM規(guī)范規(guī)范使使Java運行系統(tǒng)功能是統(tǒng)一的,運行系統(tǒng)功能是統(tǒng)一的,并且只能執(zhí)行統(tǒng)一格式的字節(jié)碼并且只能執(zhí)行統(tǒng)一格式的字節(jié)碼.JVM與與 JAVA運行系統(tǒng)運行系統(tǒng) 電子商務(wù)電子商務(wù)遠(yuǎn)程教育遠(yuǎn)程教育企業(yè)綜合信息服務(wù)企業(yè)綜合信息服務(wù)分布式計算分布式計算(移動計算)移動計算)嵌入式應(yīng)用嵌入式應(yīng)用JAVA應(yīng)用應(yīng)用兩種應(yīng)用程序兩種應(yīng)用程序Java application: 編譯器編譯編譯器編譯運行運行Java applet: 編譯器編譯編譯器編譯編寫編寫HTML文件把文件把App

22、let嵌入其中嵌入其中瀏覽器中運行瀏覽器中運行類庫類庫API Java API是是SUN提供的用提供的用Java語言開發(fā)的類集合。語言開發(fā)的類集合。 Java API包括幾十個包,常用的有:包括幾十個包,常用的有:java.lang, java.io, java.util, , java.awt, java.applet等。等。關(guān)鍵性術(shù)語關(guān)鍵性術(shù)語Java核心類包舉例核心類包舉例 Java.lang JAVA語言的核心類組成,包括了基本數(shù)據(jù)類型語言的核心類組成,包括了基本數(shù)據(jù)類型 和出錯處理方法等。和出錯處理方法等。 Java.io JAVA語言的標(biāo)準(zhǔn)語言的標(biāo)準(zhǔn)I/O庫庫 Java.util

23、工具類,如工具類,如Date等。等。 J 實現(xiàn)網(wǎng)絡(luò)操作。實現(xiàn)網(wǎng)絡(luò)操作。 Java.awt-(Abstract Window Toolkit)創(chuàng)建用戶界面。創(chuàng)建用戶界面。 Java.applet 支持支持Applet開發(fā)。開發(fā)。Java應(yīng)用程序舉例應(yīng)用程序舉例HelloWorldApp.java:Public class HelloWorldApppublic static void main( String args )System.out.println(“Hello World!”);Java 程序編寫、編譯過程程序編寫、編譯過程 main聲明聲明- Java程序入口點程序入口點格式格式p

24、ublic static void main(String args) 源文件的名字與源文件的名字與main()方法所在的類名相同,方法所在的類名相同,擴展名必須是擴展名必須是 .java。編譯編譯javac HelloWordApp.java生成生成HelloWorldApp.class運行運行java HelloWorldAppJDK1.6的安裝運行JDK1.6中的安裝程序改變環(huán)境變量:JAVA_HOME c:javajdk1.6.0_13PATHc:javajdk1.6.0_13bin CLASSPATH = .;c:javajdk1.6.0_13libdt.jar; c:javajdk

25、1.6.0_13libtools.jar;Java常用開發(fā)環(huán)境常用開發(fā)環(huán)境 JDK (V1. 2 V1.3.0, V1.3.1, V1.4.2 , V1.5.0,V1.6, V1.7) Eclipse:開源的開源的Java開發(fā)集成環(huán)境開發(fā)集成環(huán)境 Netbeans : Sun推出的集成開發(fā)環(huán)境推出的集成開發(fā)環(huán)境 Jbuilder:圖形化,客戶端與服務(wù)器端:圖形化,客戶端與服務(wù)器端 JCreator :輕型:輕型Java開發(fā)環(huán)境開發(fā)環(huán)境1.3.1 Java開發(fā)環(huán)境(續(xù))J2SEJ2SDK的核心部分 開發(fā)工具 編譯器 調(diào)試器 文檔制作工具 運行環(huán)境 Java 虛擬機 組成Java 2 平臺API的

26、類。 幫助文檔 附加庫 Java程序(Applications) 的演示 561.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))Java開發(fā)工具包括 Javac:Java編譯器,用來將java程序編譯成 Bytecode。 Java:Java解釋器,執(zhí)行已經(jīng)轉(zhuǎn)換成Bytecode的java應(yīng)用程序。 Jdb:Java調(diào)試器, 用來調(diào)試java程序。 Javap:反編譯,將類文件還原回方法和變量。 Javadoc:文檔生成器,創(chuàng)建HTML文件。 Appletviwer:Applet解釋器, 用來解釋已經(jīng)轉(zhuǎn)換成Bytecode的java小應(yīng)用程序。571.3 Java程序概述1.3.1 J

27、ava開發(fā)環(huán)境(續(xù))環(huán)境安裝 下載地址 http:/ 下載文件 安裝581.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))JDK后產(chǎn)生如下目錄: bin目錄:Java開發(fā)工具,包括Java編譯器、解釋器等 demo目錄:一些實例程序 lib目錄:Java開發(fā)類庫 jre目錄: Java運行環(huán)境,包括Java虛擬機、運行類庫等 591.3 Java程序概述1.3.1 Java開發(fā)環(huán)境(續(xù))幾種集成開發(fā)環(huán)境 netBeans Jcreator LE Borland Jbuilder Sun ONE Studio Eclipse601.3 Java程序概述1.3.2 Application舉

28、例Application 運行在客戶端Java虛擬機上的Java程序 可在客戶端機器中讀寫 可使用自己的主窗口、標(biāo)題欄和菜單 程序可大可小 能夠以命令行方式運行 主類必須有一個主方法main(),作為程序運行的入口。611.3 Java程序概述1.4 基本數(shù)據(jù)類型與表達(dá)式變量與常量基本數(shù)據(jù)類型表達(dá)式與運算符類型轉(zhuǎn)換621.4.1 變量與常量變量 一個由標(biāo)識符命名的項 每個變量都有類型, 例如 int 類型或 Object類型, 變量還有作用域. 變量的值可以被改變. 常量 常量一旦被初始化以后就不可改變。631.4 基本數(shù)據(jù)類型與表達(dá)式1.4.1 變量與常量(續(xù))標(biāo)識符 標(biāo)識符是一個名稱,與內(nèi)

29、存中的某個位置(地址)相對應(yīng) 標(biāo)識符的第一個字符必須是下列字符之一: 大寫字母大寫字母 (A-Z) 小寫字母小寫字母 (a-z) 下劃線(_) 美元符號 ($) 標(biāo)識符的第二個字符及后繼字符必須是: 上述列表中的任意字符 數(shù)字字符 (0-9) 641.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型 整數(shù)類型,浮點類型,布爾類型,字符類型整數(shù) byte 8 bits short 16 bits int 32 bits long 64 char 16 (注意,注意,C C+中占一個字節(jié))中占一個字節(jié))可以存可以存放漢字放漢字, char test1 =中中; 651.4 基本數(shù)據(jù)類型與表達(dá)式1.

30、4.2 基本數(shù)據(jù)類型(續(xù))整數(shù)運算 比較運算符(關(guān)系運算符) 算術(shù)比較運算符 , , and = 算術(shù)相等比較運算符 = and != 算術(shù)運算符 一元運算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自減運算符 +/- 移位運算符 , and 位運算符 , &, |, and 條件運算符 ? : 類型轉(zhuǎn)換運算符 字符串連接運算符 + 661.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù)) 浮點數(shù) float 單精度浮點數(shù) 32-bit - m2e m2e m 是一個小于 224的正整數(shù) e 是一個介于 -149和104之間(含)的整數(shù) double 雙精度浮點

31、數(shù) 64-bit - m2e m2e m是一個小于 253的正整數(shù) e是一個介于 -1045 和 1000之間(含)的整數(shù)數(shù)據(jù)不能從高精度到低精度的轉(zhuǎn)換 Byteshortintlongfloatdouble float a=3.4;是過不去的,在java中小數(shù)默認(rèn)是double(雙精度)的 應(yīng)該寫成是float a=3.4f; 不過可以強制轉(zhuǎn)換:int a=(int)1.2; int b=(int)1.9671.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù)) int a=1;int b=a+1.2; 這句話有錯嗎1.4.2 基本數(shù)據(jù)類型(續(xù)) 改成int a=1;double b=a

32、+1.2; 或者 int a=1;float b=a+1.2f; 就解決了1.4.2 基本數(shù)據(jù)類型(續(xù))浮點運算 比較運算符(關(guān)系運算符) 算術(shù)比較運算符 , , and = 算術(shù)相等比較運算符 = and != 算術(shù)運算符 一元運算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自減運算符 +/- 移位運算符 , and 位運算符 , &, |, and 條件運算符 ? : 類型轉(zhuǎn)換運算符 字符串連接運算符 + 701.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù))布爾類型和布爾值 布爾類型表示一個邏輯量, 有兩個取值: true和false 例如:boolea

33、n is_salaried;boolean is_hourly;is_salaried = true; /將 is_salaried設(shè)置為trueis_hourly = false; /將is_hourly設(shè)置為false 711.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù))布爾運算符 關(guān)系運算符 = and != 邏輯“非”運算符 ! 邏輯運算符 &, , 和 | 條件“與” 和條件“或”運算符 & 和 | 條件運算符 ? : 字符串連接運算符 +721.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù))String字符串 String 是一個類 String類

34、JDK標(biāo)準(zhǔn)類集合中的一部分String animal = walrus;731.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù))文字量 直接出現(xiàn)在程序中并被編譯器直接使用的值. 整數(shù)文字量 十進制如: 15 十六進制如: 0 xff 八進制如: 0377741.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù)) 浮點文字量 一個浮點文字量包括以下幾個部分 整數(shù)部分 小數(shù)點 小數(shù)部分 指數(shù) (e or E) 類型后綴 (f or F for float, d or D for double) float 類型文字量舉例: 1e 1f 2.f .3f 0f 3.1 4f 6.022137

35、e+23f double 類型文字量舉例: 1e1 2. .3 0.0 3.1 4 1e-9d 1e137 布爾文字量 布爾類型只有兩個值,由文字量 true 和 false表示751.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù)) 字符文字量 一個字符文字量表示為一個字符或者一個轉(zhuǎn)義序列,用單引號括起 例如 a Z 格式字符 b backspace BS t horizontal tab HT r carriage return CR double quote single quote backslash 761.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù)) 字符串文字量

36、由零個或多個字符組成,以雙引號括起 每一個字符都可以用轉(zhuǎn)義序列來表示 例如: / 空字符串 / 只包含 的字符串 This is a string / 有16個字符的字符串 This is a + string /字符串常量表達(dá)式,由兩個字符串常量組成771.4 基本數(shù)據(jù)類型與表達(dá)式1.4.2 基本數(shù)據(jù)類型(續(xù))78public 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=

37、10; total=num*PRICE; System.out.println(total); r=2.5; h=3.2; v=PI*r*r*h; System.out.println(v); 變量聲明變量聲明變量變量文字量文字量常量聲明常量聲明1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符79表達(dá)式是由一系列變量、運算符、方法調(diào)用構(gòu)成的,表達(dá)式可以計算出一個值來程序中的很多工作是通過計算表達(dá)式的值來完成的。 有時需要的是表達(dá)式的副作用,例如賦值表達(dá)式將數(shù)值賦給變量 更多時候起作用的是表達(dá)式的值,這個值可以用作方法的參數(shù),或更大的表達(dá)式的操作數(shù),或者影響語句的執(zhí)行順序1.4 基本數(shù)據(jù)類

38、型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))80算術(shù)運算符 運算符 + 和 -例如: i+; -j;注意 前+和后+的區(qū)別,舉例 一元運算符 + 和 加法運算符 + 和 - 乘法運算符 *, /, 和 % 1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))81賦值運算符 簡單賦值運算符 = 復(fù)合賦值運算符*= /= %= += -= = = &= = |= 左邊空出的位以0填充E1 op= E2 等 效于 E1 = (T)(E1) op (E2), 其中T 是 E1的類型1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))82關(guān)系運算符 關(guān)系表達(dá)式的類型永遠(yuǎn)是布爾類型(

39、bool). 算術(shù)比較運算符 , , and = 類型比較運算符 instanceof 例如: e instanceof Point /Point 是一個類1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))83相等關(guān)系運算符 數(shù)字相等運算符 = , != 布爾相等運算符 = , != 引用相等運算符 = , !=1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))84邏輯運算符 “與”運算 & 如果兩個操作數(shù)的值都為true運算結(jié)果為true; 否則,結(jié)果為false. “或”運算 | 如果兩個操作數(shù)的值都為false運算結(jié)果為false;否則,結(jié)果true “非”運

40、算符! 操作數(shù)的類型必須是布爾類型 如果操作數(shù)的結(jié)果為 false,則表達(dá)式的結(jié)果為 true ,如果操作數(shù)的結(jié)果為 true則表達(dá)式的結(jié)果為 false1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.3 表達(dá)式與運算符(續(xù))85條件運算符 (表達(dá)式1?表達(dá)式2:表達(dá)式3) 首先計算表達(dá)式1 如果表達(dá)式1的值為 true, 則選擇表達(dá)式2的值 如果表達(dá)式1的值為 false,則選擇表達(dá)式3的值1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.4 類型轉(zhuǎn)換86每個表達(dá)式都有類型如果表達(dá)式的類型對于上下文不合適 有時可能會導(dǎo)致編譯錯誤 有時語言會進行隱含類型轉(zhuǎn)換1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.4 類型轉(zhuǎn)換(續(xù))87 擴

41、展轉(zhuǎn)換 byte, char, short, int, long, float, double 從一種整數(shù)類型到另一種整數(shù)類型,或者從float到double的轉(zhuǎn)換不損失任何信息 從整數(shù)類形向float或double轉(zhuǎn)換,會損失精度 窄化轉(zhuǎn)換 double, float, long, int, short, byte,char 窄化轉(zhuǎn)換可能會丟失信息1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.4 類型轉(zhuǎn)換(續(xù))88賦值轉(zhuǎn)換 將表達(dá)式類型轉(zhuǎn)換為制定變量的類型方法調(diào)用轉(zhuǎn)換 適用于方法或構(gòu)造方法調(diào)用中的每一個參數(shù)強制轉(zhuǎn)換 將一個表達(dá)式轉(zhuǎn)換為指定的類型 例如 (float)5.0字符串轉(zhuǎn)換 任何類型(包括nu

42、ll類型)都可以轉(zhuǎn)換為字符串類型 只當(dāng)一個操作數(shù)是String類型時,適用于+運算符的操作數(shù)1.4 基本數(shù)據(jù)類型與表達(dá)式1.4.4 類型轉(zhuǎn)換(續(xù))89 數(shù)字提升 將算術(shù)運算符的操作數(shù)轉(zhuǎn)換為共同類型 一元數(shù)字提升一元數(shù)字提升 如果一個操作數(shù)是 byte, short, 或 char類型, 一元數(shù)字提升通過擴展轉(zhuǎn)換將它轉(zhuǎn)換為int類型 二元數(shù)字提升二元數(shù)字提升 二元數(shù)字提升作用在特定操作符的操作數(shù)上*, /, %, +, -, , , =, =, !=, &, , | and?: 在必要時使用擴展轉(zhuǎn)換來轉(zhuǎn)換操作數(shù)類型1.4 基本數(shù)據(jù)類型與表達(dá)式標(biāo)準(zhǔn)輸入輸出簡介90 標(biāo)準(zhǔn)輸入流 System

43、.in 標(biāo)準(zhǔn)輸出流 System.out 例如 System.out.println(Hello world!); BufferedReader br = new BufferedReader(new InputStreamReader(System.in); praseInt1.4 基本數(shù)據(jù)類型與表達(dá)式1.5 數(shù)組的概念數(shù)組由同一類型的一連串對象或者基本數(shù)據(jù)組成,并封裝在同一個標(biāo)識符(數(shù)組名稱)下。數(shù)組是對象 動態(tài)初始化 可以賦值給Object類型的變量 在數(shù)組中可以調(diào)用類Object 的所有方法911.5 數(shù)組的概念(續(xù))數(shù)組元素 數(shù)組中的變量被稱作數(shù)組的元素 元素沒有名字,通過數(shù)組名字和

44、非負(fù)整數(shù)下標(biāo)值引用數(shù)組元素。 每個數(shù)組都有一個由 public final 修飾的成員變量:length ,即數(shù)組含有元素的個數(shù)(length可以是正數(shù)或零)921.6 數(shù)組的創(chuàng)建和引用數(shù)組的聲明數(shù)組的創(chuàng)建數(shù)組元素的初始化數(shù)組的引用多維數(shù)組931.6.1 數(shù)組的聲明941.6 數(shù)組的創(chuàng)建和引用聲明(Declaration) 聲明數(shù)組時無需指明數(shù)組元素的個數(shù),也不為數(shù)組元素分配內(nèi)存空間 不能直接使用,必須經(jīng)過初始化分配內(nèi)存后才能使用1.6.1 數(shù)組的聲明95Type arrayName; 例如:int intArray; String stringArray; Type arrayName ;

45、例如:int intArray; String stringArray;1.6 數(shù)組的創(chuàng)建和引用1.6.2 數(shù)組的創(chuàng)建96用關(guān)鍵字new構(gòu)成數(shù)組的創(chuàng)建表達(dá)式,可以指定數(shù)組的類型和數(shù)組元素的個數(shù)。元素個數(shù)可以是常量也可以是變量 基本類型數(shù)組的每個元素都是一個基本類型的變量;引用類型數(shù)組的每個元素都是對象的的引用1.6 數(shù)組的創(chuàng)建和引用1.6.2 數(shù)組的創(chuàng)建(續(xù))97arryName=new Typecomponets number; 例如:int ai; ai=new int10;String s; s=new String3; 或者可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行int ai=new int10

46、; 可以在一條聲明語句中創(chuàng)建多個數(shù)組 String s1=new String3, s2=new String8;1.6 數(shù)組的創(chuàng)建和引用1.6.3 數(shù)組元素的初始化98 聲明數(shù)組名時,給出了數(shù)組的初始值,程序便會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始化 int a=22, 33, 44, 55; 創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便被賦予默認(rèn)值初始值。 基本類型數(shù)值數(shù)據(jù),默認(rèn)的初始值為0; boolean類型數(shù)據(jù),默認(rèn)值為false; 引用類型元素的默認(rèn)值為null。 程序也可以在數(shù)組被構(gòu)造之后改變數(shù)組元素值1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用99通過下面的表達(dá)式引用數(shù)

47、組的一個元素:arrayNameindex數(shù)組下標(biāo)必須是 int , short, byte, 或者 char.下標(biāo)從零開始計數(shù). 元素的個數(shù)即為數(shù)組的長度,可以通過 arryName.length引用元素下標(biāo)最大值為 length 1,如果超過最大值,將會產(chǎn)生數(shù)組越界異常(ArrayIndexOutOfBoundsException) 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))100int data = new int10;data -1 非法的data 10 非法的 data 1.5 非法的 data 0 合法的 data 9 合法的 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引

48、用(續(xù))101int values = new int7;int index;index = 0;values index = 71; index = 5;values index = 23; index = 3;values 2+2 = values index-3 ; 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))102public class MyArray public static void main(String args) int myArray; /聲明數(shù)組 myArray=new int10; /創(chuàng)建數(shù)組 System.out.println(IndexttValue)

49、; for(int i=0; imyArray.length;i+) System.out.println(i+tt+myArrayi); /證明數(shù)組元素默認(rèn)初始化為0 /myArray10=100; /將產(chǎn)生數(shù)組越界異常 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))103class 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+) s

50、um += iai; System.out.println(sum); 輸出: 5050 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))104數(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.println( a1 + i + = + a1i); 1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))105運行結(jié)果:a10 = 2a11 = 3a12 = 4a13 = 5a14 = 61.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))106字符串引用構(gòu)成的數(shù)組:String strArray;strArray = new String8 ;strArray0= Hello ;1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))107例子public class ArrayOfStringsDemo public static void main(String args) String anArray = String One, Strin

溫馨提示

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

評論

0/150

提交評論