Orcal把Java分爲Java SE,Java EE和Java ME三部分。而爲Java SE和Java EE分別提供了JDK和Java SDK兩個開發包。
java
Java SE能夠分爲四個部分:JVM、JRE、JDK和Java語言。爲了可以運行Java程序,必須有Java虛擬機(JVM),JVM包括在Java執行環境中。Java語言只是Java SE的一部分。JVM擔任的職責之一就是翻譯,將位碼文檔翻譯成平臺能夠看懂的二進制序列。對於Java程序而言,只認識一種操做系統,就是JVM。
程序員
安裝JDK並不須要安裝全部組件:算法
Devepment Tools(這是JDK的核心,包括編譯Java程序必須的命令工具。實際上這個選項包含JRE,這個JRE會包含在JDK目錄中,無需安裝公共JRE);編程
爲何不安裝公共JRE?公共JRE是一個獨立的JRE系統,會單獨安裝在系統的其餘路徑下。公共JRE會向IE瀏覽器和系統中註冊Java運行時環境。經過這種方式,系統中任何應用程序均可以使用公共JRE。因爲如今網頁上執行Applet的機會愈來愈少,並且徹底可使用JDK目錄下的JRE運行此類程序,因此沒有必要安裝公共JRE。
小程序
Source Code:安裝這個選項將會安裝Java全部核心類庫的源代碼。數組
JDK下路徑:瀏覽器
bin:該路徑存放JDK的各類工具命令,如:javac、java等命令工具
db:安裝java DB的路徑ui
include:一些平臺特定的頭文件編碼
JRE:就是運行Java程序必須的JRE環境
lib:JDK工具命令實際執行的程序
src.zip:該壓縮文件存放Java全部核心類庫的源代碼
Java原始碼擴展名爲.java,JVM執行碼爲.class。
Java程序是純粹面嚮對象語言,Java程序必須以類的形式存在,類是Java程序的最小單位。
Java程序全部關鍵字都是小寫的。
面向對象的三個特徵:繼承、封裝和多態。
封裝就是將對象的實現細節隱藏起來,而後經過一些公用方法來暴露該對象的功能;繼承是面向對象實現軟件服用的重要手段,當子類繼承父類,將直接得到父類的屬性和方法;多態是指能夠將子類對象賦給父類變量,但運行時表現出子類的行爲特徵。
Java語言徹底以對象爲中心,最小程序單位是類。
除了8種基本數據類型,一切都是對象。
兩種主流的開發方法:結構化開發方法和麪向對象開發方法。面向對象能夠提供更好的可重用性、可擴展性和可維護性。
任何簡單或複雜的算法均可以由順序結構、算法結構和循環結構這三種結構組合而成。
面向對象還提供以下功能:一、對象是面向對象中最基本的概念,它的基本特色有:標識惟一性、分類性、多態性、封裝性、模塊獨立性好; 二、類是具備共同屬性、共同方法的同一類事物。類是對象的抽象,對象是類的實例。而類是整個軟件系統最小的程序單元,類的封裝性將各類信息細節隱藏起來,並經過公共方法來暴露該類對外提供的功能,從而提升類的內聚性,下降對象之間的耦合性。 三、對象間的這種相互合做須要一個機制協助進行,這樣的機制成爲「消息」。消息是一個實例與另外一個實例之間相互通訊的機制。 四、在面向對象方法中,類之間共享屬性和操做的機制成爲繼承。繼承具備傳遞性。繼承能夠分爲單繼承和多繼承,Java不支持多繼承。
除了8種基本數據類型,一切都是對象。
Java語言是一門強類型語言。強類型語言包含兩個方面含義:一、全部變量必須先聲明、後使用;二、制定類型的變量只能接受類型與之匹配的值。
什麼是變量?變量有什麼用?編程的本質就是對內存中數據的訪問和修改。程序所用的全部數據都會保存在內存中,程序員須要一種機制來訪問或修改內存中的數據,這種機制就是變量,每一個變量表明一小塊內存,並且變量是有名字的,程序對變量賦值,實際上就是把數據裝入該變量所表明的內存區的過程。程序讀取變量的值,就是從該變量所表明的內存區取值的過程。
Java語言支持的類型主要分爲兩類:基本類型和引用類型
基本類型大體能夠分爲兩類:數值類型和布爾類型,其中數值類型包括整型、字符型和浮點型。全部數值類型之間能夠進行類型轉換,這種類型轉換分爲自動類型轉換和強制類型轉換。
引用類型包括類、接口和數組類型,還有一種特殊的null類型。所謂引用類型就是對一個對象的引用,對象包括實例和數組兩種。
數值類型分爲整數類型和浮點數類型。
整數類型默認int類型,除此以外 一、若是直接將一個較小的整數值賦給一個byte或short變量,系統會自動把這個整數值當成byte或short類型來處理; 二、若是使用一個巨大的整數值,超過int範圍,Java不會自動把這個整數值當成long類型處理,須要在數值後面增長大寫或小寫的L做爲後綴。
Java使用16位的Unicode字符集做爲編碼方式。
Java浮點型有兩種:float和double。默認double類型。
數值中可使用下劃線分隔,整數類型或者浮點數類型均可以
public class NumberTest{ public static void main(String[] args){ int a = 10_000_000; double d = 10_000.0_324; System.out.println("a = " + a + " d = " + d); } }
基本類型的類型轉換
Java全部數值型變量能夠相互轉換,若是系統支持把某種基本類型的值直接賦給另外一種基本類型的變量,這種方式成爲自動類型轉換。當把一個表數範圍小的數值或變量直接賦給另外一個標書範圍大的變量時,系統將能夠自動類型轉換,不然就須要強制轉換。
一般狀況下字符串不能直接轉換爲基本類型,但能夠經過基本類型對應的包裝類則能夠實現把字符串轉換爲基本類型
String s = "34";
in a = Integer.parstInt(s);
算數表達式的數據類型自動提高到與表達式中最高等級操做數一樣的類型。最低等級類型是int。
習慣上常量名全用大寫。
枚舉型:變量的取值只在一個有限的集合內,能夠自定義枚舉型。枚舉型使用關鍵字enum定義。
條件語句範圍應該從低到高,老是優先把範圍小的條件放在前面處理。
switch語句控制語句後面的表達式只能是byte、short、char、int四種整數類型,枚舉型和String字符串類型。注:StringBuffer和StringBuild類型都不兼容
public class StringBufferTest{ public static void main(String[] args){ StringBuffer sb = "adc"; //switch語句表達式不能是byte、short、char、int四種整數類型,枚舉型和String字符串類型以外的任何類型 switch (sb){ case "abd": System.out.println("第一行輸出"); break; case "abc": System.out.println("第二行輸出"); break; } } }
switch語句格式
switch (表達式){ case 1 : //執行語句 break; …… default://不知足前面全部條件執行此語句 //執行語句 }
while語句和do...while語句:do...while語句循環體先執行,再判斷條件。
public class DoWhileTest{ public static void main(String[] args){ int i = 1; do { System.out.println("循環體內i的值爲:" + i); i ++; } while (i > 10); System.out.println("方法體內i的值爲:" + i); } }
for循環括號內的兩個分號是必須的。初始化語句,循環條件,迭代語句能夠省略。若是省略了循環條件,默認true,就會陷入死循環。
break能夠結束所在的循環,還能夠結束所在的外層循環。
continue是忽略本次循環,開始下一次循環。
break和continue均可以跳出到指定標籤。
return關鍵字不是專門用來結束循環體的,return的功能是結束一個方法。
Java數組要求全部數組元素具備相同的數據類型。
一旦數組初始化完成,數組在內存中所佔的空間被固定下來,所以數組的長度將不可改變。即便把數組元素的數據清空,它所佔的空間依然被保留下來,依然屬於該數組,數組的長度依然不變。
數組也是一種數據類型,它自己是一種引用類型。
數組可分爲動態初始化和靜態初始化,不要同時使用動態初始化和靜態初始化。也就是不要在進行數組初始化時,既指定數組的長度,也爲每一個數組元素分配初始值。
foreach循環遍歷數組元素時無需得到數組長度,也無需根據索引來訪問數組元素。
//foreach語句 public class ForEachTest{ public static void main(String[] args){ int[] a = {1, 2, 3, 4, 5, 6, 7}; for (int i : a){ System.out.println(i); } } }