Java Learning --others : 數組模擬鏈表 - 馬士兵教的
--------------------------------
Java
主講教師 : 馬士兵
課程內容
* Java 基礎
* 語法基礎
* OO
* Exception
* Array
* 基礎類 - 經常使用類
* I / O Stream
* Collection / Generic
* Thread
* TCP / UDP
* GUI
* Meta Data
* Regular Expression
Java 體系
* JDK初步
* 其餘方向的基礎
* Java Web編程
* 針對Web程序
* J2EE
* 企業級應用
* J2ME
* 移動設備
* 移動增值
* SP運營商
教學方法
* 巨無霸式的教學
* 理論
* 舉例
* 理論回顧
* 練習
* 講解
* 注重結合工程實踐
* 注重傳授自學能力
能力的三個層次 {
* 知識
* 學習前人的知識
* 解決問題的方法
* 靈活運用學到的知識
* 解決問題的思路
* 創造解決問題的方法
}
學習方法 {
* 學習本講義
* 完成習題
* 運用自學的能力
* 讀
* 寫
* 查
* 背
}
預備知識 {
* 英語
* 計算機基本操做
}
其餘
* 企業與學校之間的區別
* 時限
* 實用爲主
* 浩瀚知識的分類
* 實際開發中常用的(緊緊掌握)
* 不常用用時就能查獲得的(瞭解)
* 八輩子用不着一回的(運用本身的能力去查)
總結
* 樂觀的努力
* 眼光要高遠
* 腳步要踏實
錯誤的作法(教師)
* 講得多,練得少
* 只灌輸知識點,沒有串聯
* 不培養自學能力
* 給答案不給思路
* 項目太簡單
* 項目太複雜
* 項目太少
* 注重授課技巧,不注重基本功
* 重管理技巧,輕開發技巧
* 知識太陳舊
錯誤的作法 (學生)
* 只看不練
* 只聽不練
* 鑽到細節中拔不出來(初學者)
* 修正 : 明確目標,心無旁騖
學校 : 集中全部精力,教授實用知識
* 對計算機心存敬畏
* 不敢動(裝卸軟件, 安裝系統)
* 不敢調試bug
尚學堂 手把手教程
--------------------------------
J2SE 之 JAVA概述
想學習J2ME, JSP / Servlet, J2EE 嗎? * 請打好基礎 - J2SE
* 內容
* 計算機語言的歷史以及Java語言的歷史地位
* Java 自身的發展史
* Java體系
* Java的特色
* Java的運行機制
* Java運行環境的安裝與配置
* 第一個程序HelloWorld
* 內容
* JAVA概述
* JAVA語言基礎
* 面向對象編程
* JAVA異常處理機制
* 數組
* JAVA經常使用類
* JAVA容器類
* JAVA流技術
* JAVA多線程機制
* JAVA網絡編程
* GUI編程
* 計算機語言發展史及Java的歷史地位
* 第一代語言
* 打孔機 -- 純機器語言
* 第二代語言
* 彙編
* 第三代語言
* C, Pascal, Fortran 面向過程的語言
* C++面向過程/面向對象
* Java跨平臺的純面向對象的語言
* .NET跨平臺的語言
計算機語言朝着人類易於理解的方向發展
* Java發展史與java體系
* 95年, Sun發佈JDK1.0
* 98年,JDL1.2, 改名爲Java2
* 後續JDK 1.3, 1.4
* 目前JDK 1.5, 改名爲Java5.0
* 咱們使用5.0, 1.6, 1.7
j2se --> {
1, java web {
* j2ee 95% 以上
* 移動增值
}
2, j2me
}
* Java語言的特色
* 一種面向對象的語言
* 一種平臺無關的語言, 提供程序運行的解釋環境
* 一種健壯的語言, 吸取了C/C++語言的優勢, 但去掉了其影響程序健壯性的部
分(如: 指針, 內存的申請與釋放等)。
* Java程序運行機制及運行過程
* Java兩種核心機制:
* Java 虛擬機 (JVM)
* 垃圾收集機制(Garbage collection)
* 核心機制之Java虛擬機 {
* java虛擬機能夠理解成一個以字節碼爲機器指令的CPU
* 對於不一樣的運行平臺, 有不一樣的虛擬機
* Java虛擬機機制屏蔽了底層運行平臺的差異, 實現了"一次編譯, 隨處運行"。
-- Jvm for Unix
*.java -編譯-> *.class -執行-> JVM- -- Jvm for Windos
-- Jvm for otherPlatform
Java -- 解釋性的語言
C/C++ -- 編譯型的語言
}
* 核心機制之垃圾收集 {
* 再也不使用的內存空間應回收 - 垃圾回收
* 在 C/C++ 等語言中, 由程序員負責回收無用內存
* Java語言消除了程序員回收無用內存空間的責任; 它提供一種系統級線程跟蹤存
儲空間的分配狀況。並在JVM的空閒時, 檢查並釋放那些可被釋放的存儲器空間。
* 垃圾收集在Java程序運行過程當中自動進行, 程序員沒法精確控制和干預。
* J2SDK & JRE
- Software Development Kit (軟件開發包)
- Java Runtime Environment
開發須要 JDK
用戶只需 JRE
* Java開發環境的下載 安裝 配置
* 配置 Java開發環境步驟 (WindowsXP)
* 下載 並安裝最新版本的J2SDK
* 設置 Windows環境變量。
* 選擇 合適的文本編輯器或使用集成開發環境
-------------------------------
* 下載 http://java.sun.com
* 安裝
* 配置 path & classpath
* path : windows系統執行命令時要搜尋的路徑
* classpath : java在編譯和運行時要找的class所在的路徑
* 驗證 HelloWorld.java
* java 運行 java 程序
* javac 編譯 java 程序
. 表明當前路徑
* Java Application初步
* Java源文件以「java」爲擴展名。源文件的基本組成部分是類 (class), 如本例中的 HelloWorld 類
* 一個源文件中最多隻能有一個public類. 其它類的個數不限,若是源文件 文件包含一個public類,
它必需按該類名命名
* Java 應用程序的入口是 main() 方法
* Java語言嚴格區分大小寫
* Java方法有一條條語句構成, 每一個語句以分號結束
* Java語言有三種註釋方式: { // 單行註釋, /* 多行註釋 */
/**
* 用於多行註釋,而且能夠被doc工具解析
*/
}
* 總結第一個程序 {
* 構建程序本身的環境
* 運用copy
* 掌握 path 和 classpath
* 熟悉常見的錯誤
* 熟悉java程序簡單規則
* 熟悉java程序的編譯與運行
}
* UltraEdit遺留問題
補充 {
* 先談學習方法
* 你怎麼去了解一臺發動機?
* 你怎麼去了解一座高山? 怎麼去了解你的校園?
* 你怎麼去畫一樹寒梅
* 先學脈絡,再學細節,這是規律,請務必尊重學習規律。
* 養成自動學習的習慣
* 學技術 google 谷老師很是好,不姓 百
* 建議你的 JDK 裝在不帶空格的目錄裏面!
path
* 操做系統用 path 的路徑來找執行程序
* javac/java 找不到路徑的解決方式
* 用戶變量 / 系統變量
* FAQ:
* 系統裝了多個版本的JDK
* ping 找不到路徑
* 命令收集 : {
cd \
notepad
echo %path%
set path=d:\java\java-app\jdk1.5\bin;%path%
java -verbose HelloWorld
}
* 作任何事情 {
聽別人意見的時候, 先作本身的努力
* classpath {
* javac/java 用來查找類
* 「.」 表明當前路徑
* jar文件 = 路徑(文件夾)
* FAQ:
* 2 projects, 用同一個類的不一樣版本
* 總結
* 抓住脈絡,要事爲先
* 主動學習, 培養能力
* 動手動手,動手動手
* Next:
* OO 思惟
* 要求:
* 瞭解面向對象的概念
* 類,對象,屬性,方法
* 預習第三章
* 下載eclipse
* 時間:
* http://www.bjsxt.com
* 常見Java 開發環境
* 編輯器
* UltraEdit
* EditPlus
* 集成開發環境 (IDE):
* JBuilder (http://www.borland.com)
* Eclipse (http://www.eclipse.org)
* Sun One Studio (http://java.sun.com)
* WSAD (http://www.ibm.com)
* 內容
* 標識符
* 關鍵字
* Java 基本數據類型
* 運算符
* 表達式和語句
* 分支
* 循環
* 方法
* 變量的做用域
* 遞歸調用
變量名稱
* 在方法體內 聲明的變量 叫作 局部變量
* 在方法體外, 類體內聲明的變量叫作 成員變量
* 成員變量 {
* 成員變量能夠是Java語言中任何一種數據類型(包括基本類型和引用類型)
* 在定義成員變量時能夠對其初始化,若是不對其初始化
* 成員變量的做用範圍爲整個類體
}
Java數據類型的劃分 {
-- 整數類型 (byte, short, int, long)
-- 數值型 --
| -- 浮點類型 (float, double)
--基本數據類型 -- 字符型 (char)
| |
| -- 布爾型 (boolean)
數據類型 --
| -- 類 (class)
| |
--引用數據類型 -- 接口 (interface)
|
-- 數組 (array)
Java 中定義了4類8種基本數據類型
boolean 類型只容許取值 true / false , 不能夠用 0 或 非0 替代。
char java 字符采用 Unicode 編碼 (全球語言統一編碼), 每一個字符佔兩個字節
}
J2SE 之 面向對象編程
* 編程語言的發展
* 面向過程的設計思想
* 面向對象的設計思想
* 對象和類的概念
* 類之間的關係
* 對象和引用
* Java 類的定義
* 構造函數
* 對象的建立和使用
* this 關鍵字
* static 關鍵字
* package 和 import 語句
* 訪問控制
* 類的繼承
* 方法的重寫
* final 關鍵字
* Object類
* 對象轉型
* 多態
* 抽象類
* 接口
---------
類 (對象) 之間的關係 {
1, 關聯關係 -- 學院 - 研究生 - 教授
2, 繼承關係 -- 運動員 { 游泳運動員,球類運動員, 射擊運動員 }
3, 聚合關係 -- 彙集 - 球隊{隊長,隊員} 組合 - 人-{ 頭, 身體, 四肢 }
4, 實現關係 --
}
* 對象是Java程序的核心, 在Java中萬事萬物皆 「對象」
* 對象能夠當作是靜態屬性 (成員變量) 和 動態屬性(方法) 的封裝體
* 類是用來建立同一類型的對象的 「模板」, 在一個類中定義了該類對象所應具備的成員變量以及方法
----------------------------------------------------------
咱們的語言 -> 成員變量 = 屬性 方法 = 函數
----------------------------------------------------------
爲何用對象?
* 面向對象的編程 -- 一組對象互相配合經過溝通完成特定功能
* 彙編是對機器語言的抽象
* 面向過程的語言是對彙編的抽象
* 對象更加符合對於現實問題的抽象
* 對象都有對外服務的接口
* 經過繼承能夠複用
* 對象隱藏內部服務的實現
* 經過聚合能夠複用
* 面向對象更加容易使咱們達到這些年苦苦追求的境界
* Reusable, Extensibility
* 組件 -- 比對象更高層次上的抽象 (二進制級別)
* EJB, Web Service, CORBA, COM ...
* 命名規則 {
* 類名首字母大寫
* 變量名和方法名的首字母小寫
* 運用駝峯標識
}
* 對象的建立和使用 {
* 必須使用 new 關鍵字建立對象
* 使用對象引用
* 同一類的每一個對象共享該類的方法
* 非靜態方法是針對每一個對象進行調用
}
* this 關鍵字 {
* 在類的方法定義中使用的 this 關鍵字表明使用該方法的對象的引用
* 在必須指出當前使用方法的對象是誰時要使用this
* 有時使用this能夠處理方法中成員變量和參數重名的狀況。
* this能夠看做是一個變量,它的值是當前對象的引用
}
* static 關鍵字 {
* 在類中,用static聲明的成員變量爲靜態成員變量,它爲該類的公用變量,在第一次使用時被初始化。
* 用 static 聲明的方法爲靜態方法,在調用該方法時,不會將對象的引用傳遞給它,因此在static方法
中不可訪問非static成員。
* 靜態方法再也不是針對於某個對象調用, 因此不能訪問非靜態成員。
* 能夠經過對象引用或類名訪問靜態成員。
}
* package / import
* J2SDK 中主要的包介紹
* java.lang - 包含一些 java 語言的核心類
* java,awt - 包含了構成抽象窗口工具集 (abstract window tookit) 的多個類
* java.applet-包含applet運行所需的一些類
* java.net - 包含執行與網絡相關的操做的類
* java.io - 包含能提供多種輸入/輸出功能的類
* java.util - 包含一些實用工具類.
* 類的繼承與權限控制
* 方法的重寫
* super 關鍵字
* Object類
* Object類是全部Java類的根基類
* toString方法
* Object類中定義有 public String toString() 方法,其返回值是 String 類型, 描述當前對象的有關信息
* 在進行 String 與其餘類型數據的鏈接操做時 (如:
System.out.println("info" + person), 將自動調用該對象類的 tiString() 方法
* 能夠根據須要在用戶自定義類型中重寫 toString() 方法
* equals 方法
* Object 類中定義有:
* public boolean equals(Object obj) 方法
* 提供對象是否 「相等」 的邏輯
* Object的 equals 方法定義爲:x.equals(y) 當 x 和 y 是同一對象的應用
時返回 true 不然返回 false
* J2SDk 提供的一些類,如 String, Date等,重寫了 Object 的 equals 方法,調用
這些類的 equals 方法, x.equals(y), 當 x 和 y 所引用的對象是同一類對象且
屬性內容相等時 (並不必定是相同對象), 返回 true 不然返回 false.
* 能夠根據須要在用戶自定義類型中重寫 equals 方法。
* 對象轉型
* 動態綁定 和 多態
* 抽象類
* Final 關鍵字
* 接口 - 特殊的抽象類 {
只包含常量和方法的定義
* 第六章 經常使用類 {
* 字符串相關類 (String, StringBuffer)
* 基本數據類型包裝類
* Math類
* File類
* 枚舉類
* String 類
* java.lang.String 類表明 不可變 的字符序列
* StringBuffer 類
* java.lang.StringBuffer 表明可變的字符序列
* 基本數據類型包裝類
* 包裝類(如:Integer, Double)
* java.lang.Integer
* Math 類
java.lang.Math
* File 類
java.lang.File
* 補充 java.lang.Enum
總結
* String
* 正則表達式
* 包裝類
* Math, File, 枚舉
ile類
* 枚舉類
* String 類
* java.lang.String 類表明 不可變 的字符序列
* StringBuffer 類
* java.lang.StringBuffer 表明可變的字符序列
* 基本數據類型包裝類
* 包裝類(如:Integer, Double)
* java.lang.Integer
* Math 類
java.lang.Math
* File 類
java.lang.File
* 補充 java.lang.Enum
總結
* String
* 正則表達式
* 包裝類
* Math, File, 枚舉
}
第七章 容器 {
* 容器的概念
* 容器API
* Collection 接口
* Iterator 接口
* 加強的 for 循環
* Set 接口
* List接口 和 Comparable接口
* Collections 類
* Map 接口
* 自動打包 / 解包
* 泛型 (JDK1.5新增)
-----
* J2SDk 所提供的容器位於 java.util 包內。
* 容器API的類圖以下圖所示:
<<interface>>
Collection
<<interface>>
<<interface>> <<interface>> ^
Set List |
^ ^ |
| _______|______ |
HashSet LinkedList ArrayList HashMap
* Collection 接口 -- 定義了存取一組對象的方法, 其子接口 Set 和 List 分別定
義了存儲方式。
* Set 中的數據對象沒有順序且不能夠重複。
* List中的數據對象有順序且能夠重複
* Map 接口定義了存儲 「鍵 (key) -- 值 (value) 映射"對"的方法。
Collection 方法舉例
* 容器類對象在調用 remove, contains 等方法時須要比較對象是否相等
這會涉及到對象類型的 equals 方法和 hashCode 方法,對於自定義的
類型,須要要重寫 equals 和 hashCode 方法以實現自定義的對象相等
規則。
* 注意 : 相等的對象應該具備相等的 hashcodes
* ---
第二遍學習java
**************************
*** 第一,二章 配置, 基礎 *** 手中無劍, 心中有劍
分析設計這個東西 : (1) 有哪些類
(2) 類的屬性和方法
(3) 類與類之間的關係
一個源文件只能有一個 public class
*******************************************************************************
const(C++) = final(JAVA) 變量本質 <-> 一小格
第二章 就、java 數據類型
java裏全部的數字都是有符號的。
byte 1 int 4
short 2 long 8
java語言的數據類型在任何操做系統所佔用的大小同樣。
十六進制 0x12 或者 OX12
java 整數默認爲int, 聲明long類型,後面加 l / L.
Java 常量 整型常量,字符常量,字符串常量...
格式 : (1) 要讓別人看得清楚 (2) 要讓別人看得舒服
浮點類型 : {
float 4
double 8
十進制 : 3.14 314.0 .314
科學記數法 : 3.14e2 3.14E2 100E-2
float 放入 double 中會出錯, int 放入 long 中不會出錯.解釋麻煩。
float精度7位,double精度15位
}
* boolean 類型不能夠轉換爲其餘數據類型
* 整形,字符型,浮點型的數據在混合運算中相互轉換,轉換時遵循原則 :
(1) 容量小的類型自動轉換爲容量大的數據類型
* byte, short, char -> int -> long -> float -> double
* byte, short, char 之間不會互相轉換,它們三者在計算的時候,首先會轉爲int
(2) 容量大的要轉換爲容量小的,要增強制轉換,但可能形成精度下降和溢出。
(3) 有多種數據類型的數據混合運算時,系統首先全轉爲容量最大的那個類型,而後再進行計算。
(4) 實數常量默認爲 double, 整數常量默認爲 int
能夠將 int 賦值給 short 等變量,可是不要超過範圍。
(6) 運算符 {
*1 字符串鏈接符 '+' 也是算術加法。
*2 "+" 運算符兩側的操做數中只要有一個是字符串(String)類型,系統會自動將另外一個操做數轉換爲字符串再鏈接。
*3 當進行打印時,不管任何類型,都自動轉爲字符串進行打印 System.out.println(c);
}
(7) if / else分支, switch, ...while, for, do {} while
*1 switch () {
case xx :
...default :
} 當心case穿透,多個case能夠合併,default能夠省略,java中的switch只能探測int類型。
第二章總結 : (1)* 標識符 (2)* 關鍵字 (3)* 基本數據類型 (4)* 運算符 (5)* 表達式和語句
(6)* 分支 (7)* 循環 (8)* 方法 (9)* 變量的做用域 (10)* 遞歸調用
*******************************************************************************************
***** —————————————————— ****
**** 第五章 - 數組 ****
**** —————————————————— ****
* 四維空間
int[] a, int a[];
內存分析 - 知道了內存你就明白了一切!
原本無一物 : 何處裝數組。
* 動態初始化
* 靜態初始化 int a[] = {3, 9, 8}; 內部過程屏蔽掉啦!
ipconfig
ipconfig -all 這裏 -all 就是命令行參數。
基礎類型通常分配在棧上面!包裝類,用於把基礎類型包裝成對象,則分配在堆上了。
例如 類 Double, Integer
約瑟夫環 - 面向過程 和 面向對象 寫法
另外一個比較精巧的算法 : 用數組來模擬鏈表
算法和邏輯思惟能力不是一朝一夕能完成的。
排序算法緊跟着的是 - 搜索算法
-------------------------------
你這裏是經過對象square1調用的方法getsquare()
public static void main(String[] args){
getsquare(); //這裏會出錯
}
是的。其實main函數能夠簡單認爲跟本類沒什麼關係,只是調用本類的
其它靜態方法時不用寫類名而已。因此,要調用其它非靜態方法,都要
先實例化,就像別的類來調用同樣。
-------- 我有些懂啦! 但仍是不太懂,我能理解啦! (我的理解)--------
二維數組 : 能夠當作以數組爲元素的數組
* 數組的拷貝 {
}
大公司剝削人剝削得最厲害!
明白內存你就明白了一切!。。。
總結 {
* 數組內存的佈局
* 常見算法
}
}
***** —————————————————— ****
**** 第六章 - 經常使用類 ****
**** —————————————————— ****
本章內容 {
* 字符串相關類 (String, StringBuffer)
* 基本數據類型包裝類
* Math類
* File類
* 枚舉類
* java.lang.String 類表明不可變的字符序列
String s1 = "helo";
String s3 = "hello";
s1 == s3 true
字符串常量 - data seg 區
data segment 編譯器有優化
若是是 new s1 == s3 false
s1.equals(s3) true
字符串你能夠當作是一個字符數組!
String 類經常使用方法 {
* 靜態重載方法 public static String valueOf(...)
* public String[] spllit(String regex)
}
String.valueOf(Object obj); 多態的存在
toString
java.lang.StringBuffer 表明可變的字符序列
* 基本數據類型包裝類
基本數據 : 棧 -> 包裝 --> 堆上面
* 包裝類 {
* 寫程序要按部就班方法
}
* Math 類 { java.lang.Math 其中方法的參數和返回值類型都爲 double }
* File 類 { java.io.File 類表明系統文件名 (路徑和文件名)
File 類的常見構造方法 :
* public File(String pathname)
以 pathname 爲路徑建立 File 對象, 若是 pathname 是相對路徑,則默認的當前路徑在系統屬性 user.dir 中存儲
* public File(String parent, String child)
* File 的靜態屬性 String separator 存儲了當前系統的路徑分隔符。
原型 : public static final String separator 可是事實上不管在哪 你寫 / 都沒有問題
注意 \ 在 java 裏面是轉義字符
}
* Enum - java.lang.Enum 枚舉類型 {
1, 只可以取特定值中的一個
2, 使用 enum 關鍵字
3, 是 java.lang.Enum
4, 舉例 : TestEnum.java
}
總結~~~ API 和 金庸的書差很少!
***** —————————————————— ****
**** 第七章 - 容 器 ****
**** —————————————————— ****
第七章 容器 {
* 容器的概念 - 數組是麼, 固然是!
* 容器API
* Collection 接口
* Iterator 接口
* 加強的 for 循環
* Set 接口
* List接口 和 Comparable接口
* Collections 類
* Map 接口
* 自動打包 / 解包
* 泛型 (JDK1.5新增)
-----
* J2SDk 所提供的容器位於 java.util 包內。
* 容器API的類圖以下圖所示:
--------------------------------------------------
1136 1136 1136 -- 一個圖, 一個類, 三個知識點,六個接口
<<interface>>
Collection
/ \ <<interface>>
<<interface>> <<interface>> ^
Set List |
^ ^ |
| _______|______ |
HashSet LinkedList ArrayList HashMap
1136 1136 1136 一個圖, 一個類, 三個知識點,六個接口
* Collection 接口 -- 定義了存取一組對象的方法, 其子接口 Set 和 List 分別定義了存儲方式。
* Set 中的數據對象沒有順序且不能夠重複。
* List 中的數據對象有順序且能夠重複
* Map 接口定義了存儲 「鍵 (key) -- 值 (value) 映射"對"的方法。
Collection 方法舉例
* 容器類對象在調用 remove, contains 等方法時須要比較對象是否相等
這會涉及到對象類型的 equals 方法和 hashCode 方法,對於自定義的
類型,須要要重寫 equals 和 hashCode 方法以實現自定義的對象相等規則。
* 注意 : 相等的對象應該具備相等的 hashcodes
ArrayList 底層是一個數組
哈哈: 裝入的是對象,由於對象在堆上,棧裏面的內容隨時可能被清空!
hashCode 能直接定位到那個對象
toyreb
Iterator - 接口最小化原則
我這大管家在作操做的時候 : 連主人作任何的操做都不讓操做啦!由於 iterater 執行了鎖定,誰也不讓誰看!
JDK 1.5 加強的 for 循環
Set {
HashSet, TreeSet 一個以 hash 表實現, 一個以 樹 結構實現
}
List {
Object set(int index, Object element)
int indexof(Object o);
int lastIndexof(Object o);
}
*** 一個類 {
Collections -- java.util.Collections 提供了一些靜態方法實現了基於List容器的一些經常使用算法
例如 {
void sort(List)
...
}
LinkedList -- 逆序的時候效率較 ArrayList 高!
對於 特定的 對象怎麼肯定誰大誰小。 {
對象間能夠比較大小
經過 接口 只能看見對象的一點】
Comparable 接口 -- 全部能夠實現排序的類 都實現了 Comparable 接口
}
public int compareTo(Object obj)
泛型規定 - 只能傳 「貓」
vector / hashtable 之前遺留下來的。效率特別低
Map 接口 {
Map 接口的實現類有 HashMap 和 TreeMap 等。 {hashmap 用 hash表來實現, TreeMap 用二叉樹來實現-紅黑}
Map 類中存儲的鍵 - 值對經過鍵來標識,因此鍵值不能重複。{
不能重複 : 是equals()
equals() 太慢, 因此咱們用 hashCode() 來比較
}
}
JDK 1.5 以後 {
能夠自動打包和解包
# - Auto-boxing / unboxing
* 在合適的時機自動打包 , 解包
* 自動將基礎類型轉化爲對象
* 自動將對象轉換爲基礎類型
* TestMap2.java
}
示例練習 {
TestArgsWords.java
}
JDK 1.5 泛型
* 原由 :
* JDK 1.4 之前類型不明確
* 裝入集合類型都被看成 Object 對待, 從而失去本身的實際類型。
* 從集合中取出時每每須要轉型, 效率低, 容易產生錯誤。
* 解決辦法 :
* 在定義集合的時候同時定義集合中對象的類型
* 示例 : BasicGeneric.java
* 能夠在定義 Collection 的時候指定
* 也能夠在循環時用 Iterator 指定
* 好處 :
* 加強程序的可讀性和穩定性
何時能夠指定本身的類型 : 你看 API, 他跟你就能夠跟
* 總結 {
1136
* 一個圖
* 一個類
* Collections
* 三個知識點
* For
* Generic
* Auto-boxing / unboxing
* 六個接口 {
1, Collection {
2, Set,
3, List
}
4, Map
5, Iterator
6, Comparable
}
***** —————————————————— ****
**** 第八章 - 流 ****
**** —————————————————— ****
能幫助你創建文件,不能幫你建目錄
讀到內存區 -
* 轉換流 {
中文 windos 編碼 JBK
當前系統默認的 編碼是 JBK
IOS8859_1 包含的全部西歐語言 --> 後來才推出 UniCode (國際標準化組織爲了包含全球)
JBK JB2312 JB18030 東方人本身的編碼 - 國標碼 - 就是漢字,你能夠認爲
日文,韓文 都有本身的編碼 - 臺灣有本身的 大五碼
拉丁1, 2, 3, 4, 5. 6. 7. 8. 9 都贊成啦!包括俄羅斯, 可是中文還不行 ---- > UniCode
FileOutputStream() 構造方法本身去查
* System.in {
System 類 -- in 是 InputStream 類型
public static final InputStream in 抽象類 類型, 又是父類引用指向子類對象
InputStreamReader isr = new InputStreamReader(System.in);
System.in -> 管道直接堆到黑窗口上
BufferedReader br = new BufferedReader(isr);
wait()
運行後 : 等待在那 - 阻塞式的方法 不少
readLine() 有點特殊
實際上是 System.in 比較特殊 -- 標準輸入 - 等待着標準輸入 {
你不輸入 - 我可不就等着麼,固然這個也叫作同步方法。
你不輸入,我就不能幹別的
同步式的
}
* 數據流 {
請你把 long 類型的數, 寫到 --> 文件裏面去
readUTF()
UTF8 比較省空間
}
* 打印流 {
System.out
out - public static final PrintStream
默認在咱們的黑窗口輸出
語言表明人的思惟 - 可以促進人的思惟
log4J 著名的日誌開發包
}
* Object 流 {
把整個 Object 所有寫入硬盤被
在 VC 上叫作系列化
存盤點。
挨着排的序列化
再一點一點讀出來
Serializable 接口 --- 標記性的接口
transient int k = 15;
至關於這個 k 是透明的。在序列化的時候不給於考慮,讀的時候讀默認值。
* Serializable 接口
* Externalizable 接口 extends Serializable
}
}