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)html
JDK、Eclipsejava
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對於英文字符,能夠相互轉化android
基本數據類型 | 分類 | 大小 | 取值範圍 | 默認初始值 |
---|---|---|---|---|
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】 |
String 和 自定義類 接口 抽象類
String、StringBuffer和StringBuilder三者的區別:1.String是常量,StringBuffer和StringBuilder是變量,修改時不生成新的對象,內存使用上佔優點;2.StringBuffer是線程安全的,StringBuilder非線程安全;3.執行速度:(StringBuilder,StringBuffer)>String;
綜上所訴:1.當數據量不是很大的時候用String;2.單線程用StringBuilder;3.多線程用StringBuffer 程序員
只有確保了命名的惟一性和描述性,才能保證資源之間不相互衝突而且便於理解記憶。
① 標識符的組成:字母,數字,下劃線,$,不能以數字開頭,不能使用關鍵字和保留關鍵字。ps:關鍵字是指java中已經定義的具備特定功能的標識符,不能用做普通標識符
② 包的命名
Java包的名字都是由小寫單詞組成。每一名Java程序員均可以編寫屬於本身的Java包,爲了保障每一個Java包命名的唯一性,最新的Java編程規範要求程序員在本身定義的包的名稱以前加上唯一的前綴。因爲互聯網上的域名是不會重複的,因此程序員通常採用本身在互聯網上的域名做爲本身程序包的唯一前綴。
例如:net.frontfree.javagroup。
③ 類的命名
類的名字必須由大寫字母開頭,一個單詞中的其餘字母均爲小寫。若是類名稱由多個單詞組成,則建議將每一個單詞的首字母均用大寫,例如TestPage。若是類名稱中包含單詞縮寫,則建議將這個詞的每一個字母均用大寫,如:XMLExample。因爲類是設計用來表明對象的,因此建議在命名類時應儘可能選擇名詞。
④ 方法的命名
方法的名字的第1個單詞應以小寫字母開頭,後面的單詞則建議用大寫字母開頭(駝峯原則)。
例如:sendMessge()。
⑤ 常量的命名
常量的名字應該都使用大寫字母,而且指出該常量完整含義。若是一個常量名稱由多個單詞組成,則建議用下劃線來分割這些單詞。
例如:MAX_VALUE。
⑥ 參數的命名(駝峯原則)
參數的命名規範和方法的命名規範相同,並且爲了不閱讀程序時形成迷惑,請在儘可能保證在參數名稱爲一個單詞的狀況下,參數的命名儘量明確。**注意:**一、類的屬性容許不進行初始化;二、方法內部的變量要進行初始化
⑦ javaDoc註釋
Javadoc註釋是一種多行註釋,以/*開頭,而以/結束,註釋能夠包含一些HTML標記符和專門的關鍵詞。使用Javadoc註釋的好處是編寫的註釋能夠被自動轉化爲在線文檔,省去了單獨編寫程序文檔的麻煩。編程
在每一個程序的最開始部分,通常都用Javadoc註釋進行程序的整體描述以及版權信息。在主程序中能夠爲每一個類、接口、方法、變量添加Javadoc註釋,每一個註釋的開頭部分先用一句話歸納該類、接口、方法、變量所完成的功能,這句話應單獨佔據一行以突出其歸納做用,在這句話後面能夠跟隨更加詳細的描述段落。
在描述性段落以後還能夠跟隨一些以Javadoc註釋標籤開頭的特殊段落,例如上面例子中的@auther和@version,這些段落將在生成的文檔中以特定方式顯示。
雖然添加註釋不會使一個設計低劣的程序變成好的程序,可是若是按照編程規範編寫程序,而且爲程序添加良好的註釋,卻能夠幫助編寫出設計優美、運行高效且易於理解的程序,尤爲在多人合做完成同一項目時,編程規範很是重要。俗話說」磨刀不誤砍柴工」,花費一點時間去適應一下Java編程規範是有好處的。安全
分支語句(條件語句)
循環語句()服務器
成員變量:在類體的變量部分中定義的變量,也稱爲屬性。
局部變量:是指在程序中,定義在特定的方法或語句塊的變量,是相對與全局變量而言的。 網絡
實例變量和類變量的區別
1.實例變量:不用static修飾,它只能經過對象調用並且全部對象的同一個實例變量是共享不一樣的內存空間的;
2.類變量:又叫靜態變量,用static修飾,它能夠直接用類名調用也能夠用對象調用,並且全部對象的同一個類變量都是共享同一塊內存空間的;多線程
1.程序運行的時候構造方法就被加載;2.每一個類都有構造方法,若是程序員給類提供構造方法,編譯器會自動建立一個默認的構造方法; 3.構造方法重載相似於方法的重載,一個類能夠有多個構造方法,但參數列表必不一樣。
含義:「static」關鍵字代表一個成員變量或者是成員方法能夠在沒有所屬的類的實例變量的狀況下被訪問。Java中static方法不能被覆蓋, 由於方法覆蓋是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,因此概念上不適用。
是靜態修飾符,什麼叫靜態修飾符呢?你們都知道,在程序中任何變量或者代碼都是在編譯時由系統自動分配內存來存儲的,而所謂靜態就是指在編譯後所分配的內存會一直存在,直到程序退出內存纔會釋放這個空間,也就是隻要程序在運行,那麼這塊內存就會一直存在。這樣作有什麼意義呢?
在Java程序裏面,全部的東西都是對象,而對象的抽象就是類,對於一個類而言,若是要使用他的成員,那麼普通狀況下必須先實例化對象後,經過對象的引用纔可以訪問這些成員,可是有種狀況例外,就是該成員是用static聲明的(在這裏所講排除了類的訪問控制)
靜態變量和靜態方法:
1.靜態變量能夠直接被類和對象調用;2.靜態方法中不能直接調用非靜態變量和非靜態方法,能夠經過建立對象調用;3.普通方法中能夠直接調用 類中的靜態和非靜態變量; 框架
參數按值傳遞,傳遞的是值的拷貝,也就是說傳遞後就互不相關了,不會影響原值。
參數按引用傳遞,傳遞的是值的引用,也就是說傳遞前和傳遞後都指向同一個引用(也就是同一個內存空間),所以,外部對引用對象所作的改變會反映到全部的對象上。
按值傳遞和引用傳遞詳解
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.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的方法是能夠改變返回值的類型。
抽象類(抽象類是約束子類必須擁有哪些方法,並不關注子類的實現):
抽象類總結:1.包含抽象方法的類必定抽象類,定義了抽象類(abstract class A)不必定有抽象方法,抽象類中也能夠定義普通方法;
2.抽象類必須用public或protected修飾;
3.抽象類不能用來建立對象;
4.若是一個類繼承了抽象類則子類必須實現父類的全部抽象方法方法。
接口(接口泛指供別人調用的方法或者函數):
接口總結:1.接口中的方法都是抽象方法;2.一個類能夠實現多個接口,一個非抽象的類實現了某個接口就必須實現接口中的全部方法(換
句話說:對於遵循某個接口的抽象類,能夠不實現該接口中的抽象方法);
抽象類和接口的區別:
如下實例實現了一個會報警門,門的開關是門這一類事物特有的屬性,但報警並非(全部的門並不必定都是會報警的門),報警僅僅能夠說是一種行爲,一種門可能會有也可能不會有的行爲,因此用接口去定義這種行爲,你的門有報警功能就去實現(implements)這個接口唄,反之這不去實現。
區別總結:1.抽象類裏能夠有非抽象方法,而接口內的方法都是抽象的(public abstract);2.抽象類多用來對一類事物共有屬性的抽象,接
口只是提供對擴展行爲的;3.接口裏定義的屬性都是final的,接口定義的方法只能是public ;4,一個類能夠實現多個接口但只
能繼承一個抽象類;
抽象類和接口詳解
基本數據類型對應的包裝類:byte char boolean short int long float double
Byte Character Boolean Short Integer Long Float Double
目的:把基本數據類型轉化成對象類型,java是面向對象的語言,對象類型能夠承載更多的信息和操做,另外包裝類都實現類Compareable接口能夠實現對象之間的比較。
equals() 比較的是兩個對象的值(內容)是否相同。
「==」 比較的是兩個對象的引用(內存地址)是否相同,也用來比較兩個基本數據類型的變量值是否相等。
java集合類 java集合類中基本的接口: Collection:是集合類的上級接口,繼承與他的接口主要有Set 和List. List:以特定次序來持有元素,可有重複元素; Set:沒法擁有重複元素,內部排序(無序); Map:鍵值對key–value,value可多值 集合類特性(幾個經常使用類的區別)