一、介紹
介紹-----java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針
等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作爲靜態面向對象編程語言的代表,
極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。
特性----Java具有簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。Java
可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等 。
本質----java是一個平臺(jvm+api),將java源碼編譯文件可以在已經安裝jvm的任何硬件上運行。java獨立於平臺,會
比本地代碼稍慢,但是編譯和虛擬機技術可以降低這種影響。
jvm:虛擬機,編譯文件基於虛擬機在硬件上運行。
api:是現有軟件元素的集合,能提供許多有用的特性,被劃分爲許多相關類和接口的庫,這些庫就是包。
作用---- java可以完成以下功能。
1.開發工具
涉及編譯(javac),運行(java),監視,調試和文檔生成(javadoc)
2.編程接口 API
提供 Java 編程語言的核心功能
3.部署
JDK 按標準機制,將應用展現給終端用戶
如:ava Web Start 和 Java Plug-In
4.用戶接口工具集
藉助 JavaFX,Swing 和 Java 2D,Java 能夠創建複雜的圖形用戶接口
5. 集成庫
通過Java RMI-IIOP Technology協議,集成庫,如 Java IDL API, JDBC API, JNDI API
Java RMI, Java Remote Method Invocation,能夠訪問數據庫,並操縱遠程對象。
java組成
jdk(java development kit):指開發工具,一般jdk包含對應版本的基礎jar包以及一些開發開發當中可能
需要用到的工具;jre
jre(Java Runtime Environment):指java運行環境,包含lib類庫(jvm運行class文件之前需要調用該類庫進
行文件解釋);jvm,即運行通過jvm來實現
jvm(java virtuak machine):指虛擬機,執行經過編譯的class文件。
一般下載一個版本解壓之後包含兩個子文件夾:
1.jdk文件夾:jdk和jre( java 開發環境時會優先去這裏找對應的jre)
2.jre文件夾:jre(只運行java程序,不具備開發功能,在命令行中只能執行java指令,不能運行javac指令)
以上兩者也可單獨下載與安裝。
2.下載
2.1.版本介紹
從應用上類型上分爲三個版本:
java SE:是做電腦上運行的軟件
java EE:是用來做網站的(我們常見的jsp技術)
java SM:是用來做手機上運行的軟件
作爲開發者學習和開發中用的一般都是java se後面的介紹都是以這個版本爲主。對於這個版本目前已經更新
到1.9版 本,個版本介紹如下:
1.5版本之前:略
1.5新特性:
1.自動裝箱與拆箱:原始類型與對應的包裝類不用顯式轉換
ArrayList list=new ArrayList()----------->ArrayList<Integer>list=new ArrayList<Integer>();
2.靜態導入:通過使用 import static,就可以不用指定 Constants 類名而直接使用靜態成員,包括靜態方法。
Math.sqrt();----------->sqrt();
3.For-Each循環:For-Each循環得加入簡化了集合的遍歷。
for(i=0;i<a.length;i++){......}----------->for(int i:a){......}
4.泛型:可以指定集合的元素類型。
ArrayList list=new ArrayList()----------->ArrayList<Integer>list=new ArrayList<Integer>();
5.變長參數:有任意個參數,看作數組。
int sum(int ...intlist)
1.6新特性:
1.使用Compiler API
2.輕量級Http Server API
1.7新特性:
1.switch中可以使用字符串
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
2.對集合類的語言支持:Java將包含對創建集合類的第一類語言支持。這意味着集合類的創建可以像Ruby和Perl那樣了
(下面的這些集合是不可變的)
之前版本:
List<String> list = new ArrayList<String>();
list.add("item");
String item = list.get(0);
Set<String> set = new HashSet<String>();
set.add("item");
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key", 1);
int value = map.get("key");
現在版本:
List<String> list = ["item"];
String item = list[0];
Set<String> set = {"item"};
Map<String, Integer> map = {"key" : 1};
int value = map["key"];
1.8新特性:
1.HashMap中的紅黑樹:HashMap中鏈長度大於8時採取紅黑樹的結構存儲。
紅黑樹除了添加情況之外,其他時候的效率高於鏈表結構
2.ConcurrentHashMap:底層採用node數組+鏈表+紅黑樹的存儲結構,通過CAS算法(樂觀鎖機制)+synchronized
來保證併發安全的實現。
put()方法過程:
1) 根據key的hash值數組中相應位置的Node還未初始化,則通過CAS插入相應的數據;
2) 如果相應位置的Node不爲空,且當前該節點不處於移動狀態,則對該節點加synchronized鎖,如果該節點的hash不小於0,則遍歷鏈表更新節點或插入新節點;
3) 如果該節點是TreeBin類型的節點,說明是紅黑樹結構,則通過putTreeVal方法往紅黑樹中插入節點;
3.接口中可以有默認方法與靜態方法,也就是接口中可以有實現方法
默認方法中的default不可省略,子類重寫時候,必須去掉default修飾符
4.Lambda表達式:lambda表達式的使用簡化了代碼。
1.9新特性:
暫略
1.10新特性:
暫略
2.2 下載
進入oracle官網進行下載:https://www.oracle.com/index.html(官網上已經不對外開發下載1.7版本)
下載步驟:
第一步:按如圖紅色方框找到java overview並點擊進入
第二步:滑到頁面底部點擊如框所示部分
第三步:選擇自己需要的版本,這裏以選1.8爲例
第四步:選擇與電腦適配的版本進行下載
3.安裝
4.環境變量配置
5.常用開發工具中的配置