1. 程式人生 > >JAVA宇宙無敵復習資料

JAVA宇宙無敵復習資料

靈活性 tails 條件語句 builder 初始化 boolean sys 企業版 空間

一、java基礎:

1、java簡介

(1)java歷史

(2)重要概念

javaSE(標準版) javaEE(企業版) javaME(微型版)
JDK(java開發工具包)JRE(java運行環境)IDE(集成開發環境)
- Java SE(java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。java se 包含了支持 Java Web 服務開發的類,並為 Java Platform,Enterprise Edition(Java EE)提供基礎。 J2SE就是做那種桌面安裝程序樣的,像QQ,WORD那種應用程序。
- java ee

(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端 Java 應用程序。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web 2.0 應用程序。 J2EE 就是做基於Internet的應用程序,像選課系統,企業網站,銀行系統之類的。
- Java ME(Java Platform,Micro Edition)。這個版本以前稱為 J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對可以動態下載的連網和離線應用程序的豐富支持。基於 Java ME 規範的應用程序只需編寫一次,就可以用於許多設備,而且可以利用每個設備的本機功能。 J2ME就是做嵌入式系統開發的,像手機遊戲之類的,像現在流行的Android操作系統。
- JDK
(Java Development Kit)。
- JRE(Java Runtime Environment)
- IDE(Ind Depvelopment Environment)

2、環境搭建

JDK、Eclipse

(1)下載

(2)安裝

(3)配置

3、數據類型

(1)基本數據類型

byte char boolean short int long float double
簡單說明:byte 8個bit 因為是有符號的所以取值範圍(-128~127) ;char和short 16個bit,char是無符號的取值範圍(0~65535) ; int和float 都是32個bit ;long和double都是64個bit
byte和char的區別:1.Char是無符號型的,可以表示一個整數,不能表示負數;而byte是有符號型的,可以表示-128—127的數;2.char可以表中文字符,byte不可以;3.char、byte、int對於英文字符,可以相互轉化

基本數據類型分類大小取值範圍默認初始值
byte 整型 1字節 8bit 【-128 127】 0
int 整型 4字節 32bit 【-2*10^31 2*10^31-1 】 0
short 整型 2字節 16bit 【-2*10^15 2*10^15-1 】 0
long 整型 8字節 64bit 【-2*10^63 2*10^63-1 】
char 字符型 2字節 16bit 【-2*10^31 2*10^31-1 】
float 浮點型 4字節 32bit 【3.402823e+38 ~ 1.401298e-45】
double 浮點型 8字節 64bit 【1.797693e+308~ 4.9000000e-324】

(2)對象/引用數據類型

String 和 自定義類 接口 抽象類
String、StringBuffer和StringBuilder三者的區別:1.String是常量,StringBuffer和StringBuilder是變量,修改時不生成新的對象,內存使用上占優勢;2.StringBuffer是線程安全的,StringBuilder非線程安全;3.執行速度:(StringBuilder,StringBuffer)>String;
綜上所訴:1.當數據量不是很大的時候用String;2.單線程用StringBuilder;3.多線程用StringBuffer

4、命名規範

只有確保了命名的唯一性和描述性,才能保證資源之間不相互沖突並且便於理解記憶。
① 標識符的組成:字母,數字,下劃線,$,不能以數字開頭,不能使用關鍵字和保留關鍵字。ps:關鍵字是指java中已經定義的具有特定功能的標識符,不能用作普通標識符

② 包的命名
Java包的名字都是由小寫單詞組成。每一名Java程序員都可以編寫屬於自己的Java包,為了保障每個Java包命名的惟一性,最新的Java編程規範要求程序員在自己定義的包的名稱之前加上惟一的前綴。由於互聯網上的域名是不會重復的,所以程序員一般采用自己在互聯網上的域名作為自己程序包的惟一前綴。
例如:net.frontfree.javagroup。
③ 類的命名
類的名字必須由大寫字母開頭,一個單詞中的其他字母均為小寫。如果類名稱由多個單詞組成,則建議將每個單詞的首字母均用大寫,例如TestPage。如果類名稱中包含單詞縮寫,則建議將這個詞的每個字母均用大寫,如:XMLExample。由於類是設計用來代表對象的,所以建議在命名類時應盡量選擇名詞。
④ 方法的命名
方法的名字的第1個單詞應以小寫字母開頭,後面的單詞則建議用大寫字母開頭(駝峰原則)。
例如:sendMessge()。
⑤ 常量的命名
常量的名字應該都使用大寫字母,並且指出該常量完整含義。如果一個常量名稱由多個單詞組成,則建議用下劃線來分割這些單詞。
例如:MAX_VALUE。
⑥ 參數的命名(駝峰原則)
參數的命名規範和方法的命名規範相同,而且為了避免閱讀程序時造成迷惑,請在盡量保證在參數名稱為一個單詞的情況下,參數的命名盡可能明確。**註意:**1、類的屬性允許不進行初始化;2、方法內部的變量要進行初始化
⑦ javaDoc註釋
Javadoc註釋是一種多行註釋,以/*開頭,而以/結束,註釋可以包含一些HTML標記符和專門的關鍵詞。使用Javadoc註釋的好處是編寫的註釋可以被自動轉化為在線文檔,省去了單獨編寫程序文檔的麻煩。

在每個程序的最開始部分,一般都用Javadoc註釋進行程序的總體描述以及版權信息。在主程序中可以為每個類、接口、方法、變量添加Javadoc註釋,每個註釋的開頭部分先用一句話概括該類、接口、方法、變量所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句話後面可以跟隨更加詳細的描述段落。
在描述性段落之後還可以跟隨一些以Javadoc註釋標簽開頭的特殊段落,[email protected]@version,這些段落將在生成的文檔中以特定方式顯示。
雖然添加註釋不會使一個設計低劣的程序變成好的程序,但是如果按照編程規範編寫程序,並且為程序添加良好的註釋,卻可以幫助編寫出設計優美、運行高效且易於理解的程序,尤其在多人合作完成同一項目時,編程規範非常重要。俗話說”磨刀不誤砍柴工”,花費一點時間去適應一下Java編程規範是有好處的。

5、流程控制

分支語句(條件語句)
循環語句()

6、類和對象

(1)辨析成員變量、局部變量和全局變量

成員變量:在類體的變量部分中定義的變量,也稱為屬性。
局部變量:是指在程序中,定義在特定的方法或語句塊的變量,是相對與全局變量而言的。

實例變量和類變量的區別
1.實例變量:不用static修飾,它只能通過對象調用而且所有對象的同一個實例變量是共享不同的內存空間的;
2.類變量:又叫靜態變量,用static修飾,它可以直接用類名調用也可以用對象調用,而且所有對象的同一個類變量都是共享同一塊內存空間的;

(4)Java的構造方法

 1.程序運行的時候構造方法就被加載;2.每個類都有構造方法,如果程序員給類提供構造方法,編譯器會自動創建一個默認的構造方法;
 3.構造方法重載類似於方法的重載,一個類可以有多個構造方法,但參數列表必不同。

(5)static(靜態變量、靜態方法和靜態初始化塊)

含義:“static”關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。Java中static方法不能被覆蓋, 因為方法覆蓋是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。
是靜態修飾符,什麽叫靜態修飾符呢?大家都知道,在程序中任何變量或者代碼都是在編譯時由系統自動分配內存來存儲的,而所謂靜態就是指在編譯後所分配的內存會一直存在,直到程序退出內存才會釋放這個空間,也就是只要程序在運行,那麽這塊內存就會一直存在。這樣做有什麽意義呢?
在Java程序裏面,所有的東西都是對象,而對象的抽象就是類,對於一個類而言,如果要使用他的成員,那麽普通情況下必須先實例化對象後,通過對象的引用才能夠訪問這些成員,但是有種情況例外,就是該成員是用static聲明的(在這裏所講排除了類的訪問控制)
靜態變量和靜態方法:
1.靜態變量可以直接被類和對象調用;2.靜態方法中不能直接調用非靜態變量和非靜態方法,可以通過創建對象調用;3.普通方法中可以直接調用 類中的靜態和非靜態變量;

(8)按值傳遞和引用傳遞

參數按值傳遞,傳遞的是值的拷貝,也就是說傳遞後就互不相關了,不會影響原值。
參數按引用傳遞,傳遞的是值的引用,也就是說傳遞前和傳遞後都指向同一個引用(也就是同一個內存空間),因此,外部對引用對象所做的改變會反映到所有的對象上。
按值傳遞和引用傳遞詳解

(9)Object類(是java所有類的超類)

Object()
默認構造方法
clone()
創建並返回此對象的一個副本。
equals(Object obj)
指示某個其他對象是否與此對象“相等”。
finalize()
當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。
getClass()
返回一個對象的運行時類。
hashCode()
返回該對象的哈希碼值。
notify()
喚醒在此對象監視器上等待的單個線程。
notifyAll()
喚醒在此對象監視器上等待的所有線程。
toString()
返回該對象的字符串表示。
wait()
導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法。
wait(long timeout)
導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量。
wait(long timeout, int nanos)
導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量。

(10)UML

二、java進階

1、Java面向對象編程(OOP)

面向對象的編程優點:代碼開發模塊化,易於維護和理解,代碼復用性,增強代碼的可維護性和靈活性,
- 封裝:將對象封裝成類,類隱藏內部的實現細節,統一提供屬性和方法,便於代碼的維護。
java中的訪問修飾符: 1.private:只有本類內部可以訪問,且不能被訪問(繼承);2.默認(不加訪問修飾符),只能在本類和同一包中使用 3.protected:能在本類,同一包(package)下,和該類的子類被訪問(該子類可以不和父類在一個包下);4.public:公開的,都可以被訪問(繼承)內部類:??????
- 繼承:繼承是類與類之間的一種關系,子類可以使用父類的屬性和方法(父類的屬性和方法不能是privata),增加了代碼的復用性,也為多態的實現提供了前提。
註意:1.java中只能實現單繼承;2.super()代表在子類中調用父類的構造方法;3.this.屬性/this.方法,表示訪問本類中的屬性和方法,this()代表調用本類的構造方法;3. 類與類之間的關系:繼承關系;依賴關系(該類對象作為另 一個類中一個方法的參數)實現關系(實現是類與接口之間最常見的關系)類與類之間的關系詳解4.final關鍵字:可以修飾類、方法、屬性和變量,
修飾類該類不能被繼承,修飾方法該方法不能被覆蓋,修飾屬性該屬性不能自動初始化,修飾變量該變量只能賦一次值
5.java中繼承的執行順序:父類屬性初始化–>父類構造方法–>子類屬性初始化–>子類構造方法

多態總結: 方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。

2、抽象類和接口

抽象類(抽象類是約束子類必須擁有哪些方法,並不關註子類的實現):

抽象類總結:1.包含抽象方法的類一定抽象類,定義了抽象類(abstract class A)不一定有抽象方法,抽象類中也可以定義普通方法;
2.抽象類必須用public或protected修飾;
3.抽象類不能用來創建對象;
4.如果一個類繼承了抽象類則子類必須實現父類的所有抽象方法方法。

接口(接口泛指供別人調用的方法或者函數):

接口總結:1.接口中的方法都是抽象方法;2.一個類可以實現多個接口,一個非抽象的類實現了某個接口就必須實現接口中的所有方法(換
句話說:對於遵循某個接口的抽象類,可以不實現該接口中的抽象方法);

抽象類和接口的區別:
以下實例實現了一個會報警門,門的開關是門這一類事物特有的屬性,但報警並不是(所有的門並不一定都是會報警的門),報警僅僅可以說是一種行為,一種門可能會有也可能不會有的行為,所以用接口去定義這種行為,你的門有報警功能就去實現(implements)這個接口唄,反之這不去實現。

區別總結:1.抽象類裏可以有非抽象方法,而接口內的方法都是抽象的(public abstract);2.抽象類多用來對一類事物共有屬性的抽象,接
口只是提供對擴展行為的;3.接口裏定義的屬性都是final的,接口定義的方法只能是public ;4,一個類可以實現多個接口但只
能繼承一個抽象類;
抽象類和接口詳解

3、包和修飾符

4、常用類

(1)String類

(2)包裝類

基本數據類型對應的包裝類:byte char boolean short int long float double
Byte Character Boolean Short Integer Long Float Double
目的:把基本數據類型轉化成對象類型,java是面向對象的語言,對象類型可以承載更多的信息和操作,另外包裝類都實現類Compareable接口可以實現對象之間的比較。

equals() 比較的是兩個對象的值(內容)是否相同。
“==” 比較的是兩個對象的引用(內存地址)是否相同,也用來比較兩個基本數據類型的變量值是否相等。

(3)Date類

(4)Math類

5、集合框架

java集合類
java集合類中基本的接口:
Collection:是集合類的上級接口,繼承與他的接口主要有Set 和List.
List:以特定次序來持有元素,可有重復元素;
Set:無法擁有重復元素,內部排序(無序);
Map:鍵值對key–value,value可多值
集合類特性(幾個常用類的區別)

JAVA宇宙無敵復習資料