版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、J2SE簡介 JAVA初步 面向對象 常用接口/類 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與java體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Java基礎語法、數(shù)據類型、數(shù)組 Java編寫習慣 1.機器語言 2.匯編 3.高級語言:結構化、面向對象 4. 面向用戶語言(智能編程)?所見即所得(圖 形化)?SQL? 5.自然語言? 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與java體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Java基礎語法、數(shù)據類型、數(shù)組 Java編寫
2、習慣 95年,Sun發(fā)布JDK1.0 98年,JDK1.2,更名為Java2 后續(xù)JDK1.3、1.4、JDK1.5,更名為Java 5.0 (最 新為JDK JDK 7 7) j2se java web j2eej2me移動增值 JAVA能開發(fā)那些類型的程序? Software Devleopment Kit (軟件開發(fā) 包) Java Runtime Environment (Java運行環(huán) 境) 開發(fā)需要JDK 用戶只需JRE 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與java體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Jav
3、a基礎語法、數(shù)據類型、數(shù)組 Java編寫習慣 Java兩種核心機制 Java虛擬機(Java Virtual Machine) 垃圾收集機制(Garbage collection) 源程序源程序 (*.java文件)文件) 字節(jié)碼字節(jié)碼 (*.class文件)文件) Java編譯器編譯器 類裝載器類裝載器 Class Loader 字節(jié)碼校驗器字節(jié)碼校驗器 byte verifier 解釋器解釋器 interpretor 系統(tǒng)平臺系統(tǒng)平臺 Java虛擬機可以理解成一個以字節(jié)碼為機器指令的 CPU。 對于不同的運行平臺,有不同的虛擬機。 Java 虛擬機機制屏蔽了底層運行平臺的差別,實現(xiàn)了“一次
4、編譯,隨處運 行”。 UNIX JVM for UNIX Windows JVM for Windows Other Platform JVM for Other *.java*.class 編譯編譯執(zhí)行執(zhí)行 garbage collector 不再使用的內存空間應回收垃圾收集。 在C/C+ 等語言中,由程序員負責回收無用內存。 Java語言消除了程序員回收無用內存空間的責任; 它提供一種系統(tǒng)級線程跟蹤存儲空間的分配情況。 并在JVM的空閑時,檢查并釋放那些可被釋放的存 儲器空間。 垃圾收集在Java程序運行過程中自動進行,程序員 無法精確控制和干預。 硬盤 程序 內存 代碼 操作系統(tǒng) 代碼
5、1:Load到內存區(qū) 2:找到main方法開始執(zhí)行 heap stack data segment code segment 3:執(zhí)行過程中的內存管理 存放代碼 靜態(tài)變量 字符串常量 局部變量 new出來的東 西 一種面向對象的語言。 一種平臺無關的語言,提供程序運行的解釋環(huán)境。 一種健壯的語言,吸收了C/C+ 語言的優(yōu)點,但 去掉了其影響程序健壯性的部分(如:指針、內存 的申請與釋放等)。 1.平臺無關性 平臺無關性是指Java能運行于不同的平臺。Java引進虛擬機 原理,并運行于虛擬機,實現(xiàn)不同平臺的 Java接口之間。使用Java編寫的程序能在世界范圍內共享。Java的數(shù)據類型與 機器無
6、關,Java虛擬機 (Java Virtual Machine)是建立在硬件和操作系統(tǒng)之上,實現(xiàn)Java二進制代碼的解釋執(zhí)行功能, 提 供于不同平臺的接口的。 2.安全性 Java的編程類似C+,學習過C+的讀者將很快掌握Java的精髓。Java舍棄了C+的指針對存儲器地 址的直接操作,程序運行時,內存由操作系統(tǒng)分配,這樣可以避免病毒通過指針侵入系統(tǒng)。Java對程序 提供了安全管理器,防止程序的非法訪問。 3.面向對象 Java吸取了C+面向對象的概念,將數(shù)據封裝于類中,利用類的優(yōu)點,實現(xiàn)了程序的簡潔性和便于維 護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然后通過上述特性
7、反復利 用。程序員只需把主要精力用在類和接口的設計和應用上。Java提供了眾多的一般對象的類,通過繼承 即可使用父類的方法。在Java中,類的繼承關系是單一的非多重的,一個子類只有一個父類,子類的父 類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵倒立的樹形,根類為Object類, Object類功能強大,經常會使用到它及其它派生的子類。 4.分布式 Java建立在擴展TCP/IP網絡平臺上。庫函數(shù)提供了用HTTP和FTP協(xié)議傳送和接受信息的方法。這使得 程序員使用網絡上的文件和使用本機文件一樣容易。 5.健壯性 Java致力于檢查程序在編譯和運行時的錯誤。類型檢查幫助檢
8、查出許多開發(fā)早期出現(xiàn)的錯誤。Java自己 操縱內存減少了內存出錯的可能性。Java還實現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據的可能,這些功能特征大大 提高了開發(fā)Java應用程序的周期。并且Java還提供了Null指針檢測、數(shù)組邊界檢測、異常出口、Byte code校驗等功能。 效率(運行速度) 內存操作限制(指針) 多態(tài)在運行時實現(xiàn) 平臺無關性(不直接調用操作系統(tǒng)) 逆向編譯 線程調度 可移植性帶來的線程調度不夠精細 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與java體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Java基礎語法、數(shù)據類型、數(shù)組
9、Java編寫習慣 配置Java開發(fā)環(huán)境步驟(WindowsXP) 下載并安裝最新版本的J2SDK。 設置 Windows 環(huán)境變量。PATH/CLASSPATHPATH/CLASSPATH 選擇合適的文本編輯器或使用集成開發(fā)環(huán)境。 下載 http:/ 安裝 配置 path class A 編譯運行 編譯命令:Javac Test.java 編譯通過后運行:java Test(不加.class) 為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類 的命名沖突問題,Java引入包(package)機制, 提供類的多重類命名空間。打包語句在源文件開頭 class體之外 ,語句格式為: package pk
10、g1.pkg2.pkg3; java io lang System String Object util 如果將一個類打包,則使用該類時,必須使用該類的全 名(例如:com.sxt.MyClass),Java編譯器才會在找 到該類。 也可以使用 import 在文件的開頭引入要使用到的類; 例如: 可以不需要用import語句直接使用 java.lang 包中的 類。 import com.sxt.MyClass; import java.util.*;/引入引入java.util包中所有的類包中所有的類 . . . MyClass myClass = new MyClass(); /可以直接
11、使用類名可以直接使用類名 . . . java.lang包含一些Java語言的核心類,如String、 Math、Integer、System和Thread,提供常用功 能。 java.awt包含了構成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構建 和管理應用程序的圖形用戶界面(GUI)。 包含執(zhí)行與網絡相關的操作的類。 java.io包含能提供多種輸入/輸出功能的類。 java.util包含一些實用工具類,如定義系統(tǒng)特性、 使用與日期日歷相關的函數(shù)。 jar -cvf test.jar 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與jav
12、a體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Java基礎語法、數(shù)據類型、數(shù)組 Java編寫習慣 標示符 對各種變量、方法和類等要素命名時使用的字符序列 運算符 算數(shù)運算符、關系運算符、邏輯運算符、賦值運算符、三目條件運算符等 表達式與語句 符合一定語法規(guī)則的運算符和操作數(shù)的序列即表達式 Java程序由一條條語句構成 關鍵字 條件:if else switch 循環(huán):for while do break continue 方法 修飾符修飾符1 修飾符修飾符2 返回值類型返回值類型 方法名方法名(形式參數(shù)列表形式參數(shù)列表) Java語句;語句;
13、遞歸 基本數(shù)據類型 四類八種 引用數(shù)據類型 類型轉換 默認基本數(shù)據類型轉換 強制類型轉換 常量/變量 常量:基本數(shù)據類型/”Strings”/final變量 變量 變量作用域 數(shù)組可以看成是多個相同類型數(shù)據組合,對這些數(shù)據的統(tǒng)一管理。 數(shù)組變量屬引用類型,數(shù)組也可以看成是對象,數(shù)組中的每個元素相當于該對象的成員變量。 數(shù)組中的元素可以是任何數(shù)據類型,包括基本類型和引用類型。 一維數(shù)組的聲明方式: type var; 或 type var; 創(chuàng)建數(shù)組對象,使用關鍵字 new 創(chuàng)建數(shù)組對象,格式為: 數(shù)組名 new 數(shù)組元素的類型 數(shù)組元素的個數(shù) 數(shù)組初始化 動態(tài)初始化 數(shù)組定義與為數(shù)組元素分配空
14、間和賦值的操作分開進行 靜態(tài)初始化 在定義數(shù)組的同時就為數(shù)組元素分配空間并賦值 數(shù)組元素的默認初始化 數(shù)組是引用類型,它的元素相當于類的成員變量,因此數(shù)組分配空間后,每個元素也被按照成員變量的規(guī) 則被隱式初始化, 數(shù)組元素的引用 定義并用運算符new為之分配空間后后,才可以引用數(shù)組中的每個元素,數(shù)組元素的引用方式為: arrayNameindex 每個數(shù)組都有一個屬性length指明它的長度 二維數(shù)組 數(shù)組的拷貝 java.lang.System類public static void arraycopy (Object src,int srcPos,Object dest, int destP
15、os,int length) 計算機語言發(fā)展史及Java的歷史地位 Java發(fā)展史與java體系 Java程序運行機制及優(yōu)劣勢分析 Java開發(fā)環(huán)境配置 Java開發(fā)、編譯、運行、打包 Java基礎語法、數(shù)據類型、數(shù)組 Java編寫習慣 命名 類名首字母大寫 MyClass 變量名方法名首字母小寫 myClass.myMethod() 駝峰標識 格式 大括號對齊 縮進tab/shift+tab 程序塊間空行(eg. for 語句) 并排語句加空格 運算符兩側加空格(條件語句中可以減少) 前空格 成對編程 建行編程規(guī)范 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪
16、問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 面向對象編程語言三大特征 隱藏/封裝 繼承 多態(tài) 類與對象 對象用計算機語言對問題域中事物的描述,對象通過“屬屬 性(性(attributeattribute)”和和“方法(方法(methodmethod)”來分別對應事 物所具有的靜態(tài)屬性和動態(tài)屬性。 類是用于描述同一類形的對象的一個抽象的概念,類中定 義了這一類對象所應具有的靜態(tài)和動態(tài)屬性。 類可以看成一類對象的模板,對象可以看成該類的一個具 體實例。 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/
17、 多態(tài) Object類 Fanail關 鍵字 抽象類接口 用用 class 關鍵字定義一個類,例如:關鍵字定義一個類,例如: class Person /成員變量定義成員變量定義 private int id; private int age = 20; /方法定義方法定義 public int getAge() return age; public void setAge(int i) age = i; public int getId() return id; 類的定義主要由兩方面組成類的定義主要由兩方面組成 成員變量和方法。成員變量和方法。 聲明成員變量的格式為:聲明成員變量的格式為:
18、type =defaultValue ; 例如:例如: private int id; private int age = 20; 聲明方法的格式為:聲明方法的格式為: () 例如:例如: public int getAge() return age; 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 必須使用 new 關鍵字創(chuàng)建對象(構造方法) Person person= newnew Person (); 使用對象(引用) . . 成員變量來引用對象的成員 變量。 person
19、.age 使用對象(引用) . . 方法(參數(shù)列表)來調用對 象的方法。 person. setAge(23) 同一類的每個對象有不同的成員變量存儲空間。 同一類的每個對象共享該類的方法。 public class Person int id; int age; Person(int n,int i) id = n; age = i; public class Test public static void main(String args) Person tom = new Person(1,25); Person john = new Person(2,27); Person() id =
20、 0; age = 20; Person(int i) id = 0; age = i; Person(int n,int i) id = n; age = i; 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 方法的方法的重載重載是指一個類中可以定義有相同的名字,是指一個類中可以定義有相同的名字, 但參數(shù)不同的多個方法。但參數(shù)不同的多個方法。 調用時,會根據不同的調用時,會根據不同的 參數(shù)表選擇對應的方法。參數(shù)表選擇對應的方法。 例:在例:在Person類中存在如下方法類中存在如
21、下方法 void info() System.out.println(My id is +id); void info(String t) System.out.println(t+ +id+ +age); 調用方法 (); (hello); 與普通方法一樣,構造方法也可以重載 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 繼承 Java 中使用 extends 關鍵字實現(xiàn)類的繼承機制 通過繼承,子類自動擁有了基類(superclass)的所有成員(成員變
22、量和方法)。 Java只支持單繼承,不允許多繼承: 一個子類只能有一個基類 一個基類可以派生出多個子類 重寫 在子類中可以根據需要對從基類中繼承來的方法進行重寫。 重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回類型。 重寫方法不能使用比被重寫方法更嚴格的訪問權限。 繼承中的構造方法 子類的構造的過程中必須調用其基類的構造方法。 子類可以在自己的構造方法中使用super(argument_list)調用基類的構造方法。 使用this(agument list)調用本類另外的構造方法 如果用super,必須寫在方法的第一句 如果子類的構造方法中沒有顯式地調用基類構造方法,則系統(tǒng)默認調用基
23、類無參數(shù) 的構造方法。 如果子類構造方法中既沒有顯式調用基類構造方法,而基類中又沒有無參的構造方法, 則編譯出錯。 this 關鍵字 在類的方法定義中使用的 this 關鍵字代表使用該方法的對象的引用。 當必須指出當前使用方法的對象是誰時要使用this。 有時使用this可以處理方法中成員變量和參數(shù)重名的情況。 super 關鍵字 在Java類中使用super來引用基類的成分 static 關鍵字 在類中,用static聲明的成員變量成員變量為靜態(tài)成員變量,它為該類的公用變量, 在第一次使用時被初始化,對于該類的所以對象來說,static成員變量只 有一份。 用static聲明的方法為靜態(tài)方法
24、靜態(tài)方法,在調用該方法時,不會將對象的引用傳 遞給它,所以在static方法中不可訪問非static的成員。 可以通過對象引用或類名(不需要實例化)訪問靜態(tài)成員。 this可以看作是一個類中的變量,它的值是當前對象的引用 (static class) 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 Java權限修飾符 public protected private 置于類的成 員定義前,用來限定其他對象對該類對象成員的訪問權 限。 對于class的權限修飾只可以用 public
25、和 default。 (inner class除外) public類可以在任意地方被訪問 default類只可以被同一個包內部的類訪問 修飾符修飾符類內部類內部同一個包同一個包子類子類任何地方任何地方 privateYes default|packageYesYes protectedYesYesYes publicYesYesYesYes 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 一個基類的引用類型變量可以“指向”其子類的對象。 一個基類的引用不可以訪問其子類對象新增加的成
26、員 (屬性和方法)。 可以使用 引用 變量 instanceof 類名 來判斷該引用型 變量所所“指向指向”的對象的對象是否屬于該類或該類的子類。 子類的對象可以當作基類的對象來使用稱作向上轉型 (upcasting),反之稱為向下轉型(downcasting) 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 動態(tài)綁定是指 “在執(zhí)行期間 (而非編譯期) 判斷所引用對象 的實際類型,根 據其實際的類型 調用其相應的方 法。 上面例子中,根 據 Lady 對象的 成員變量 pet 所引
27、用的不同的 實際類型而調用 相應的 enjoy方 法 class Bird extends Animal private String featherColor; Bird(String n,String f) super(n); featherColor = f; public void enjoy() System.out.println(鳥叫聲鳥叫聲.); public class Test public static void main(String args) Lady l3 = new Lady (l3,new Bird(birdname,green); l3.myPetEnjoy
28、(); 多態(tài)的存在要有3個必要條件: 要有繼承,要有重寫,父類引用指向子類對象 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 ObjectObject類類 ObjectObject類是所有類是所有JavaJava類的根基類類的根基類 如果在類的聲明中未使用如果在類的聲明中未使用extendsextends關鍵字指明其基類,則默認基類為關鍵字指明其基類,則默認基類為ObjectObject類類 public class Person public class Person 等價于:
29、等價于:public class Person extends Object public class Person extends Object ObjectObject的方法的方法 toStringtoString方法方法 描述當前對象的有關信息。 在進行String與其它類型數(shù)據的連接操作時(如: System.out.println(“info”+person),將自動調用該對象類的 toString()方法 可以根據需要在用戶自定義類型中重寫toString()方法 equals方法 提供定義對象是否“相等”的邏輯。 Object 的 equals 方法 定義為:x.equals (
30、 y ) 當 x 和 y是同一個對象的應用時返回 true 否則返回 false。 J2SDK提供的一些類,如String,Date等,重寫了Object的equals方法,調用這些類 的equals方法, x.equals (y) ,當x和y所引用的對象是同一類對象且屬性內容相等時 (并不一定是相同對象),返回 true 否則返回 false。 可以根據需要在用戶自定義類型中重寫equals方法。 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 final的成員變量的值不能夠被改
31、變 final的方法不能夠被重寫 final的類不能夠被繼承 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 用abstract關鍵字來修飾一個類時,這個類叫做抽 象類;用abstract來修飾一個方法時,該方法叫做 抽象方法。 含有抽象方法的類必須被聲明為抽象類,抽象類必 須被繼承,抽象方法必須被重寫。如果重寫不了, 應該聲明自己為抽象。 抽象類不能被實例化。 抽象方法只需聲明,而不需實現(xiàn)。 abstract class Animal private String name; A
32、nimal(String name) = name; public abstract void enjoy(); class Cat extends Animal private String eyesColor; Cat(String n,String c) super(n); eyesColor = c; public void enjoy() System.out.println (貓叫聲貓叫聲.); 面向對象 簡介 類的定義 對象的創(chuàng) 建和使用 方法重載 繼承與方 法重寫 訪問控制 對象轉型 動態(tài)綁定/ 多態(tài) Object類 Fanail關 鍵字 抽象類接口 接口(
33、interface)是抽象方法和常量值的定義的集 合。 從本質上講,接口是一種特殊的抽象類,這種抽象 類中只包含常量和方法的定義,而沒有變量和方法 的實現(xiàn)。 接口定義舉例: public interface Runner public static final int id = 1; public void start(); public void run(); public void stop(); 接口可以多重實現(xiàn); 接口中聲明的屬性默認為 public static final 的; 也只能是 public static final 的; 接口中只能定義抽象方法,而且這些方法默認為 pu
34、blic的、也只能是public的; 接口可以繼承其它的接口,并添加新的屬性和抽象 方法。 多個無關的類可以實現(xiàn)同一個接口。 一個類可以實現(xiàn)多個無關的接口。 與繼承關系類似,接口與實現(xiàn)類之間存在多態(tài)性。 定義Java類的語法格式: class extends implements ,* * interface Singer public void sing(); public void sleep(); class Student implements Singer private String name; Student(String name) = name; publ
35、ic void study() System.out.println(studying); public String getName()return name; public void sing() System.out.println(student is singing); public void sleep() System.out.println(student is sleeping); interface Singer public void sing(); public void sleep(); interface Painter public void paint(); p
36、ublic void eat(); class Student implements Singer private String name; Student(String name) = name; public void study()System.out.println(studying); public String getName()return name; public void sing() System.out.println (student is singing); public void sleep() System.out.println (stude
37、nt is sleeping); class Teacher extends Object implements Singer,Painter private String name; public String getString() return name; Teacher(String name) = name; public void teach()System.out.println(teaching); public void sing()System.out.println (teacher is singing); public void sleep()Sys
38、tem.out.println (teacher is sleeping); public void paint()System.out.println (teacher is painting); public void eat()System.out.println (teacher is eating); public class Test public static void main(String args) Singer s1 = new Student(le); s1.sing(); s1.sleep(); Singer s2 = new Teacher(steven); s2.
39、sing(); s2.sleep(); Painter p1 = (Painter)s2;/也可以當作也可以當作Painter來看來看 p1.paint(); p1.eat(); 輸出結果:輸出結果: student is singing student is sleeping teacher is singing teacher is sleeping teacher is painting teacher is eating public class Test public static void main(String args) int a; a = new int3; a0 = 3;
40、 a1 = 9; a2 = 8; Date days; days = new Date3; days0 = new Date(1, 4, 2004); days1 = new Date(2, 4, 2004); days2 = new Date(3, 4, 2004); class Date int year,month,day; Date(int y, int m, int d) year = y; month = m; day = d; public class Test public static void main(String args) int a = new int 3, 9,
41、8 ; Date days = new Date(1, 4, 2004), new Date(2, 4, 2004), new Date(3, 4, 2004) ; class Date int year,month,day; Date(int y, int m, int d) year = y; month = m; day = d; int a = new int3; a0 = new int2; a1 = new int4; a2 = new int3 int t1 = new int4; /非法非法 靜態(tài)初始化:靜態(tài)初始化: int intA = 1,2,2,3,3,4,5; int
42、intB32 = 1,2,2,3,4,5;/非法非法 動態(tài)初始化:動態(tài)初始化: int a = new int35; int b = new int3 b0 = new int2; b1 = new int3; b2 = new int5; 異常處理字符串包裝類 MathFileEnum 容器IO流線程 java.lang.Throwable 程序中異常的來源 調用的方法可能拋出異常 自定義new一個異常并throws 異常的處理 在本方法中處理:trycatch() 扔給上級:throws Tips:調用一個方法時注意它的聲明是否拋出了異常 Throwable Error eg.動態(tài)鏈接 庫
43、連接失敗、 虛擬機錯誤 Exception RuntimeException: 無需在程序中顯示地 catch或throws InterruptedException、 IOException etc.:必須在 程序中catch或者throws 異常處理字符串包裝類 MathFileEnum 容器IO流線程 Java.lang.String extends Object Implements Serializable,Comparable,CharSequenc e String創(chuàng)建 String s1 = “” 基本數(shù)據類型-包裝類 int/long/byte/short/char/bool
44、ean/float/double Integer/Character/大寫首字母 用途 需要傳入Objec作為參數(shù)、基本數(shù)據類型需要作為普通 Object處理eg. hashCode() 靜態(tài)成員變量 MAX_VALUE、MINVALUE 靜態(tài)方法int parseInt(String) 屬性/方法定義類似一般class 使用: MyColour m = MyColour.red MyColour0 ? 異常處理字符串包裝類 MathFileEnum 容器IO流線程 能裝其他對象的器具: 數(shù)組(容量受限、可以用于基礎數(shù)據類型) Collection/Map (java.util.* 包中,容量
45、可以擴展,只能添加引 用對象) Java Collections Framework 定義存取方法 Interface Collection 單個裝入 定義存儲方式 Interface Set 無序、不可重復 Interface List 有序、可重復 TreeSetHashSetLinkedList ArrayList 定義存儲方式 Interface Map 成對裝入:key-value AbstractMap HashMapTreeMap 容器的簡單用法 add remove contains retainAll addAll 涉及到的相等判斷 比較時涉及的方法 Collection:e
46、quals i.hasNext();)對i.next()操作; 增強的for循環(huán) String s for(String ss: s) interface Set 沒有比Collection多出額外的方法 元素不重復且無序 HashSet TreeSet interface List 元素有序且可以重復 每個元素對應一個整形序號記載位置,據此可存取元素 特有方法 Object get(int index) Object set(int index, Object element) 替換 返回舊元素 Void add(index, element)index后的元素向后挪一位 Object re
47、move(index) int indexOf(O) int lastIndexOf(O) java.util.Collections提供基于List的常用算法 Void sort(List) Void shuffle(List) Void reverse(List) Void fill(List, object) 填充 void copy(List, List) int binarySearch(List, Object) 先進行sort排序 interface Map 成對存儲,只可存儲對象 以鍵為索引,索引不可重復 HashMap(Hash表)、TreaMap(二叉樹) 常用方法 Obj
48、ect put(Object key, Object value) Object get(key) Object remove(key) boolean containsKey(key),boolean containsValue(value) JDK1.5 支持自動打包:基礎類型作為Map中方法的參 數(shù),直接被打包為相應的包裝類 add(“one”, 1)等價于add(“one”, new Integer(1) 如何選擇數(shù)據結構 Array讀快改慢讀取比較頻繁的數(shù)據 Linked改快讀慢修改比較頻繁 Hash搜索極快,遍歷極慢 Tree插入/搜索都比較快,適合做索引 泛型 Generic A
49、PI中接口或類后有/等形式即適用泛型 作用 實現(xiàn)類型自動檢查 集合中取出對象不需強制類型轉換 自動打包 異常處理字符串包裝類 MathFileEnum 容器IO流線程 java.io.* 包中定義了多個流類型(類或抽象類)來實 現(xiàn)輸入/輸出功能;可以從不同的角度對其進行分類: 按數(shù)據流的方向不同可以分為輸入流和輸出流。(以程序 的角度來考慮) 按處理數(shù)據單位不同可以分為字節(jié)流和字符流。 按照功能不同可以分為節(jié)點流和處理流。 J2SDK 所提供的所有流類型位于包java.io內都分別 繼承自以下四種抽象流類型。 字節(jié)流字節(jié)流字符流字符流 輸入流輸入流InputStreamReader 輸出流輸出
50、流OutputStream Writer 節(jié)點流和處理流 節(jié)點流為可以從一個特定的數(shù)據源(節(jié)點)讀寫數(shù)據(如: 文件,內存) 文件流、字節(jié)/符數(shù)組流等 處理流是“套接”在已存在的流(節(jié)點流或處理流)之上, 通過對數(shù)據的處理為程序提供更為強大的讀寫功能。 緩沖流、轉換流、打印流、對象流等 數(shù)據源數(shù)據源 程序程序 節(jié)點流節(jié)點流 數(shù)據源數(shù)據源 程序程序 處理流處理流 節(jié)點流類 類類 型型 字字 符符 流流字字 節(jié)節(jié) 流流 File(文件)文件) FileReader FileWriter FileInputStream FileOutputStream Memory Array CharArrayR
51、eader CharArrayWriter ByteArrayInputStream ByteArrayOutputStream Memory String StringReader StringWriter Pipe(管道)管道) PipedReader PipedWriter PipedInputStream PipedOutputStream 處理流類 處理類型處理類型 字字 符符 流流字字 節(jié)節(jié) 流流 Buffering BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream Filtering Fi
52、lterReader FilterWriter FilterInputStream FilterOutputStream Converting between bytes and character InputStreamReader OutputStreamWriter Object Serialization ObjectInputStream ObjectOutputStream Data conversion DataInputStream DataOutputStream CountingLineNumberReaderLineNumberInputStream Peeking ah
53、eadPusbackReaderPushbackInputStream PrintingPrintWriterPrintStream 四種基礎抽象流之:InputSteam 繼承自InputSteam的流用于向程序中輸入以字節(jié)(8bit)為單位 的數(shù)據 常用方法 int read() throws IOException /讀一個字節(jié)以整數(shù)的形式返回(0255),到輸入流的末尾返回-1 int read(byte buffer) throws IOException /讀多個字節(jié)并存儲到數(shù)組buffer,返回實際讀取的字節(jié)數(shù),讀取 前已到流末尾返回-1 int read(byte buffer
54、, int off, int len) throws IOException/讀取length個字節(jié)并存儲到一個字節(jié)數(shù)組buffer,從 off位置開始存,最多l(xiāng)en,返回實際讀取的字節(jié)數(shù),如果讀取前以到 輸入流的末尾返回-1 void close() throws IOException/關閉流釋放內存資源 四種基礎抽象流之:OutputSteam 繼承自OutputSteam的流用于程序中輸出以字節(jié)(8bit)為單位的 數(shù)據 常用方法 void write(int b) throws IOException/向輸出流中寫入一個字 節(jié)數(shù)據,該字節(jié)數(shù)據為參數(shù)b的低8位 void write(b
55、yte b) throws IOException/將一個字節(jié)類型的數(shù) 組中的數(shù)據寫入輸出流 void write(byte b, int off, int len) throws IOException/ 將一個字節(jié)類型的數(shù)組中的從指定位置(off)開始的len個字節(jié)寫 入到輸出流 void close() throws IOException /關閉流釋放內存資源 void flush() throws IOException/將輸出流中緩沖的數(shù)據全部寫 出到目的地 四種基礎抽象流之:Reader 繼承自Reader的流都是向程序中輸入以字符(16bit)為單 位的數(shù)據 常用類 int r
56、ead() throws IOException int read(char cbuf) throws IOException int read(char cbuf, int off, int len) throws IOException void close() throws IOException 四種基礎抽象流之:Writer 繼承自Writer流都是程序中輸出以字符(16bit)為單位的數(shù)據 常用類 void write(int c) throws IOException void write(char cbuf) throws IOException void write(char
57、 cbuf, int offset, int length) throws IOException void write(String string) throws IOException void write(String string, int offset, int length) throws IOException void close() throws IOException void flush() throws IOException 對File的訪問 FileInputSteam FileOutPutSteam FileReader FileWriter 構造函數(shù) 傳入的參數(shù)
58、常用String或者File 輸出流構造時可增加第二個參數(shù)boolean來開關是否是覆 蓋性輸出 構造會拋異常,用try-catch 常用方法 讀寫的時候也需要try-catch 直接讀寫效率比較低,一般都用處理流包裝 緩沖流 “套接”在相應的節(jié)點流之上,對讀寫的數(shù)據提供緩沖區(qū),增 加了一些新方法 BufferedReader/BufferedWriter BufferedInputStream/BufferedOutStream 構造函數(shù) 套接時一一對應 緩沖區(qū)大小可以指定 常用方法 繼承自父類常規(guī)方法 BufferedReader繼承的mark與reset方法 BufferedReader
59、新增readLine、BufferedWriter新增newLine 操作結束后記得close(輸出還應先flush) 轉換流 用于將字節(jié)流轉換為字符流 InputStreamReader/OutputStreamReader 構造函數(shù) 傳入InputStream/OutputStream類型的參數(shù)(子類) 可以傳入String charset指定轉換編碼所用字符集 常用方法 write時可以寫任意形式的字符串而不做處理 close(對于套接的流,關閉最外層即可) 什么是字符集什么是字符集? ?什么是編碼什么是編碼? ? 字符字符(Character)(Character):是文字與符號的總稱
60、,包括文字、圖形 符號、數(shù)學符號等。 字符集字符集(Charset)(Charset):就是一組抽象字符的集合。 字符集常常和一種具體的語言文字對應起來,該文字中的所 有字符或者大部分常用字符就構成了該文字的字符集,比如 英文字符集。 一組有共同特征的字符也可以組成字符集,比如繁體漢字字 符集、日文漢字字符集。 編碼編碼(Encoding)(Encoding): 制定編碼首先要確定字符集,并將字符集內的字符排序,然 后和二進制數(shù)字對應起來。根據字符集內字符的多少,會確 定用幾個字節(jié)來編碼。 常用的字符集有哪些? ASCII American Standard Code for Informat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 反并購條款的案例分析-廣發(fā)收購中信
- 國防支出變動趨勢分析及熱點問題1
- nste-acs多支血管病變靶血管的判定
- 債務服務合同(2篇)
- 公共事業(yè)資產管理合同(2篇)
- 2025年濾波型無功補償裝置項目合作計劃書
- 《職場溝通》電子教案 項目二職場溝通情商培養(yǎng)教案
- 2025年脫硝催化劑項目合作計劃書
- 工商局租賃合同
- 深圳廠房租賃合同書
- 中資企業(yè)出海報告:潮涌浪闊四海揚帆
- 老舊小區(qū)改造室外消火栓工程施工方案和技術措施
- 《地質災害監(jiān)測技術規(guī)范》
- 2024-2030年中國云母制品制造市場發(fā)展狀況及投資前景規(guī)劃研究報告
- 2025年上半年內蒙古鄂爾多斯伊金霍洛監(jiān)獄招聘17名(第三批)易考易錯模擬試題(共500題)試卷后附參考答案
- 24秋國家開放大學《農產品質量管理》形考任務1-2+形考實習1-3參考答案
- 2024-2025學年人教版八年級上冊地理期末測試卷(二)(含答案)
- 80、沈陽桃仙機場二平滑工程冬期施工方案
- 《STM32Cube嵌入式系統(tǒng)應用》HAL庫版本習題及答案
- 一年級數(shù)學練習題-20以內加減法口算題(4000道)直接打印版
- GB/T 29468-2024潔凈室及相關受控環(huán)境圍護結構夾芯板
評論
0/150
提交評論