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

下載本文檔

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

文檔簡介

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

2、設計思想(續(xù))程序設計語言發(fā)展的歷程 機器語言 匯編語言 高級語言 面向對象的語言51.1 Java語言與面向對象的程序設計1.1.1 面向對象的程序設計思想(續(xù))面向對象的思想 將客觀事物看作具有狀態(tài)和行為的對象,通過抽象找出同一類對象的共同狀態(tài)和行為,構成類。61.1 Java語言與面向對象的程序設計1.1.1 面向對象的程序設計思想(續(xù)) 例: 構建一個汽車類,需要提取所有汽車對象的共有的狀態(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語言與面向對象的程序設計1.1.1 面向對象的程序設計思想(續(xù))面向對象技術給軟件發(fā)展帶來的益處 可重用性 可靠性 面向對象語言的基本特征 抽象和封裝 繼承性 多態(tài)性81.1 Java語言與面向對象的程序設計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語言的特點面向對象安全性 Java不支持指針 Java的內部安全措施平臺無關性 編譯后的字節(jié)碼對應于Java虛擬機,因此可在不同平臺上運行多線程 Java是第一個在語言級提供內置多線程支持的高級語言內存管理 Java對內存自動進行管理并進行垃圾回收111.1 Java語言與面向對象的程序設計1.2 Java語言的特點(續(xù))Java 語言的優(yōu)點 易于學習 代碼效率高 代碼質量高 開發(fā)程序快 體系結構中立,純Java程序不依賴于平臺 一處編寫,各處運行 軟件易于發(fā)布121.1 Java語言與面向對象的程序設計1.2 Java語言的特點(續(xù))

5、Java與C+的區(qū)別 Java中沒有#include 和#define 等預處理功能,用import語來句包含其它類和包; Java中沒有structure,union及typedef; Java中沒有不屬于類成員的函數(shù),沒有指針和多重繼承,Java只支持單重繼承; Java中禁用goto,但goto還是保留的關鍵字; Java中沒有操作符重載; Java中沒有全局變量,可以在類中定義公用、靜態(tài)的數(shù)據(jù)成員實現(xiàn)相同功能;.131.1 Java語言與面向對象的程序設計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 (應用程序接口) 經過編譯的,可在程序中使用的Java代碼標準庫。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 技術體系技術體系J ava S E 以Web為中心的客戶端或服務器端的軟件開發(fā)以前稱為 JDK 1.X Java SE 的實現(xiàn): Java Software Development Kit (SDK), Standard Edition + Java Runtime Environment, Standard EditionJava ME針對消費類的電子設備如手機、數(shù)字置頂盒、汽車導航系統(tǒng)等。語言精簡、運行環(huán)境高度優(yōu)化。Java EE 開發(fā)企業(yè)級和服務器端的應用。 Java SE+Enter

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

9、重載 設立自動內存回收設立自動內存回收JavaJava特征特征- -簡單性簡單性 語法和語義都比較單純,容易學習和使用語法和語義都比較單純,容易學習和使用提供大量功能豐富的可重用類庫簡化了提供大量功能豐富的可重用類庫簡化了 編程工作量編程工作量JavaJava特征特征- -面向對象面向對象 Java Java 是最純潔的面向對象語言,對面向是最純潔的面向對象語言,對面向對象方法學的支持也最全面對象方法學的支持也最全面: :JAVAJAVA對象有模塊化性質和信息隱藏能力,對象有模塊化性質和信息隱藏能力, 滿足面向對象的封裝要求;滿足面向對象的封裝要求;支持繼承;支持繼承;通過抽象類與接口通過抽象

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

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

12、定, 而是運行系統(tǒng)根據(jù)所在的硬件平臺的特性決定;而是運行系統(tǒng)根據(jù)所在的硬件平臺的特性決定; 取消了取消了C、C+的指針,的指針,JAVA編譯器通過符號編譯器通過符號 指針來引用內存,由指針來引用內存,由JAVA運行系統(tǒng)在運行時將運行系統(tǒng)在運行時將 符號指針具體解釋為實際的內存地址。符號指針具體解釋為實際的內存地址。Java特征特征- 多線程多線程 JAVA在在語言級語言級嵌入對并發(fā)的支持功能,嵌入對并發(fā)的支持功能, 具體機制就是多線程。具體機制就是多線程。 線程是比進程更小、更線程是比進程更小、更 經濟的并發(fā)執(zhí)行單位,不擁有單獨的內存空間。經濟的并發(fā)執(zhí)行單位,不擁有單獨的內存空間。 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)地維護應用系統(tǒng)及可以動態(tài)地維護應用系統(tǒng)及其支持類之間的一致性。其支持類之間的一致性。 Java編譯生成的字節(jié)碼與機器代碼十分接近。提供即時編譯等措施。Java特征-高性能JAVA的語法機制概述的語法機制概述與與C+一致的語法機制:一致的語法機制: 數(shù)據(jù)類型、表達式、程

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

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

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

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

18、VA解釋器解釋器JAVA Applet- JAVA兼容的兼容的Web瀏覽器。瀏覽器。JAVA運行系統(tǒng)的構成運行系統(tǒng)的構成類裝配器類裝配器字節(jié)碼驗證器字節(jié)碼驗證器解釋器解釋器代碼生成器代碼生成器運行支持庫運行支持庫JAVA程序運行過程程序運行過程Hello.javajavac Hello.javaHello.class網(wǎng)絡網(wǎng)絡類裝配器類裝配器字節(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ù)器、棧頂指針等;棧結構:提供各種參數(shù)等;棧結構:提供各種參數(shù)等;存儲區(qū):存放字節(jié)碼的方法代碼、符號表存儲區(qū):存放字節(jié)碼的方法代碼、符號

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

21、實現(xiàn)的要求: 必須支持必須支持SUN的的.class文件結構文件結構 必須支持字節(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) 電子商務電子商務遠程教育遠程教育企業(yè)綜合信息服務企業(yè)綜合信息服務分布式計算分布式計算(移動計算)移動計算)嵌入式應用嵌入式應用JAVA應用應用兩種應用程序兩種應用程序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等。等。關鍵性術語關鍵性術語Java核心類包舉例核心類包舉例 Java.lang JAVA語言的核心類組成,包括了基本數(shù)據(jù)類型語言的核心類組成,包括了基本數(shù)據(jù)類型 和出錯處理方法等。和出錯處理方法等。 Java.io JAVA語言的標準語言的標準I/O庫庫 Java.util

23、工具類,如工具類,如Date等。等。 J 實現(xiàn)網(wǎng)絡操作。實現(xiàn)網(wǎng)絡操作。 Java.awt-(Abstract Window Toolkit)創(chuàng)建用戶界面。創(chuàng)建用戶界面。 Java.applet 支持支持Applet開發(fā)。開發(fā)。Java應用程序舉例應用程序舉例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:圖形化,客戶端與服務器端:圖形化,客戶端與服務器端 JCreator :輕型:輕型Java開發(fā)環(huán)境開發(fā)環(huán)境1.3.1 Java開發(fā)環(huán)境(續(xù))J2SEJ2SDK的核心部分 開發(fā)工具 編譯器 調試器 文檔制作工具 運行環(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í)行已經轉換成Bytecode的java應用程序。 Jdb:Java調試器, 用來調試java程序。 Javap:反編譯,將類文件還原回方法和變量。 Javadoc:文檔生成器,創(chuàng)建HTML文件。 Appletviwer:Applet解釋器, 用來解釋已經轉換成Bytecode的java小應用程序。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后產生如下目錄: 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程序 可在客戶端機器中讀寫 可使用自己的主窗口、標題欄和菜單 程序可大可小 能夠以命令行方式運行 主類必須有一個主方法main(),作為程序運行的入口。611.3 Java程序概述1.4 基本數(shù)據(jù)類型與表達式變量與常量基本數(shù)據(jù)類型表達式與運算符類型轉換621.4.1 變量與常量變量 一個由標識符命名的項 每個變量都有類型, 例如 int 類型或 Object類型, 變量還有作用域. 變量的值可以被改變. 常量 常量一旦被初始化以后就不可改變。631.4 基本數(shù)據(jù)類型與表達式1.4.1 變量與常量(續(xù))標識符 標識符是一個名稱,與內

29、存中的某個位置(地址)相對應 標識符的第一個字符必須是下列字符之一: 大寫字母大寫字母 (A-Z) 小寫字母小寫字母 (a-z) 下劃線(_) 美元符號 ($) 標識符的第二個字符及后繼字符必須是: 上述列表中的任意字符 數(shù)字字符 (0-9) 641.4 基本數(shù)據(jù)類型與表達式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ù)類型與表達式1.

30、4.2 基本數(shù)據(jù)類型(續(xù))整數(shù)運算 比較運算符(關系運算符) 算術比較運算符 , , and = 算術相等比較運算符 = and != 算術運算符 一元運算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自減運算符 +/- 移位運算符 , and 位運算符 , &, |, and 條件運算符 ? : 類型轉換運算符 字符串連接運算符 + 661.4 基本數(shù)據(jù)類型與表達式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ù)不能從高精度到低精度的轉換 Byteshortintlongfloatdouble float a=3.4;是過不去的,在java中小數(shù)默認是double(雙精度)的 應該寫成是float a=3.4f; 不過可以強制轉換:int a=(int)1.2; int b=(int)1.9671.4 基本數(shù)據(jù)類型與表達式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ù))浮點運算 比較運算符(關系運算符) 算術比較運算符 , , and = 算術相等比較運算符 = and != 算術運算符 一元運算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自減運算符 +/- 移位運算符 , and 位運算符 , &, |, and 條件運算符 ? : 類型轉換運算符 字符串連接運算符 + 701.4 基本數(shù)據(jù)類型與表達式1.4.2 基本數(shù)據(jù)類型(續(xù))布爾類型和布爾值 布爾類型表示一個邏輯量, 有兩個取值: true和false 例如:boolea

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

34、JDK標準類集合中的一部分String animal = walrus;731.4 基本數(shù)據(jù)類型與表達式1.4.2 基本數(shù)據(jù)類型(續(xù))文字量 直接出現(xiàn)在程序中并被編譯器直接使用的值. 整數(shù)文字量 十進制如: 15 十六進制如: 0 xff 八進制如: 0377741.4 基本數(shù)據(jù)類型與表達式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ù)類型與表達式1.4.2 基本數(shù)據(jù)類型(續(xù)) 字符文字量 一個字符文字量表示為一個字符或者一個轉義序列,用單引號括起 例如 a Z 格式字符 b backspace BS t horizontal tab HT r carriage return CR double quote single quote backslash 761.4 基本數(shù)據(jù)類型與表達式1.4.2 基本數(shù)據(jù)類型(續(xù)) 字符串文字量

36、由零個或多個字符組成,以雙引號括起 每一個字符都可以用轉義序列來表示 例如: / 空字符串 / 只包含 的字符串 This is a string / 有16個字符的字符串 This is a + string /字符串常量表達式,由兩個字符串常量組成771.4 基本數(shù)據(jù)類型與表達式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ù)類型與表達式1.4.3 表達式與運算符79表達式是由一系列變量、運算符、方法調用構成的,表達式可以計算出一個值來程序中的很多工作是通過計算表達式的值來完成的。 有時需要的是表達式的副作用,例如賦值表達式將數(shù)值賦給變量 更多時候起作用的是表達式的值,這個值可以用作方法的參數(shù),或更大的表達式的操作數(shù),或者影響語句的執(zhí)行順序1.4 基本數(shù)據(jù)類

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

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

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

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

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

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

44、非負整數(shù)下標值引用數(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ù)組元素分配內存空間 不能直接使用,必須經過初始化分配內存后才能使用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用關鍵字new構成數(shù)組的創(chuàng)建表達式,可以指定數(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ù)組便被賦予默認值初始值。 基本類型數(shù)值數(shù)據(jù),默認的初始值為0; boolean類型數(shù)據(jù),默認值為false; 引用類型元素的默認值為null。 程序也可以在數(shù)組被構造之后改變數(shù)組元素值1.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用99通過下面的表達式引用數(shù)

47、組的一個元素:arrayNameindex數(shù)組下標必須是 int , short, byte, 或者 char.下標從零開始計數(shù). 元素的個數(shù)即為數(shù)組的長度,可以通過 arryName.length引用元素下標最大值為 length 1,如果超過最大值,將會產生數(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ù)組元素默認初始化為0 /myArray10=100; /將產生數(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運行結果:a10 = 2a11 = 3a12 = 4a13 = 5a14 = 61.6 數(shù)組的創(chuàng)建和引用1.6.4 數(shù)組的引用(續(xù))106字符串引用構成的數(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論