(1)Easy:Java的語法比C++的相對簡單,另外一個方面就是Java能使軟件在很小的機器上運行,基礎解釋其和類庫的支持的大小約爲40kb,增長基本的標準庫和線程支持的內存須要增長125kb.c++
小巧:因爲Java的設計是要在小的計算機上運行,做爲一種編程語言來講其系統是相對較小的。它能有效地在4MB以上RAM的PC機上運行。Java翻譯器只佔用幾百KB。這種翻譯器對Java的平臺無關性和可移植性是可靠的。因爲Java很小,它對內存很小的計算機,如基於Java的PC機,以及電視機、烤箱、電話機及家用計算機等,是很理想的。程序員
(2)分佈式:Java帶有很強大的TCP/IP協議族的例程庫,Java應用程序可以經過URL來穿過網絡來訪問遠程對象,因爲servlet機制的出現,使Java編程很是的高效,如今許多的大的web server都支持servlet.web
(3)OO:面向對象設計是把重點放在對象及對象的接口上的一個編程技術.其面向對象和C++有不少不一樣,在與多重繼承的處理及Java的原類模型.算法
(4)健壯特性:Java採起了一個安全指針模型,能減少重寫內存和數據崩潰的可能型。Java編譯器可以檢測許多在其餘語言中僅在運行時纔可以檢測出來的問題。異常處理機制:java把c++裏面不少警告變成錯誤 ,這樣設計的原則是爲了讓劣質代碼不能寫出來。異常的3個種類 ,檢查異常,運行時異常,錯誤。對於可能出現異常的代碼,有兩種處理辦法:第1、在方法中用try...catch語句捕獲並處理異常,catach語句能夠有多個,用來匹配多個異常。第2、對於處理不了的異常或者要轉型的異常,在方法的聲明處經過throws語句拋出異常。spring
(5)安全:Java用來設計網路和分佈系統,這帶來了新的安全問題,Java能夠用來構建防病毒和防攻擊的System.事實證實Java在防毒這一方面作的比較好.Java沒有指針。編程
(6)中立體系結構:Java編譯其生成體系結構中立的目標文件格式能夠在不少處理器上執行,編譯器產生的指令字節碼(Javabytecode)實現此特性,此字節碼能夠在任何機器上解釋執行.設計模式
跨平臺性:跨平臺的原理是:Java代碼經過編譯變成一個叫字節碼的文件,它的格式是.class,能夠被虛擬機JVM運行,能夠看做現實中的翻譯官,把字節碼翻譯給其餘平臺,實現代碼在其餘平臺的運行,在不一樣的平臺有不一樣的JVM。JVM能夠理解成一個可運行Java字節碼的虛擬計算機系統,它有一個解釋器組件,能夠實現Java字節碼和計算機操做系統之間的通訊。數組
編譯和解釋性:Java編譯程序生成字節碼文件,而不是一般的機器碼(即二進制)。Java字節碼提供對體系結構中性的目標文件格式,代碼設計成可有效地「搬運」程序到不一樣的平臺和環境中。在一個解釋性的環境中,程序開發的標準"連接"階段大大消失了。若是說Java還有一個連接階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。所以,Java支持快速原型和容易試驗,它將致使快速程序開發。這是一個與傳統的、耗時的"編譯、連接和測試"造成鮮明對比的精巧的開發過程。瀏覽器
(7)可移植性:Java中對基本數據結構類型的大小和算法都有嚴格的規定因此可移植性很好.
(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現交給底下操做系統或線程程序完成.因此多線程是Java做爲服務器端開發語言的流行緣由之一
(9)Applet和servlet:可以在網頁上執行的程序叫Applet,須要支持Java的瀏覽器不少,而applet支持動態的網頁,這是不少其餘語言所不能作到的。
(10)GC垃圾回收:[Java GC]Java垃圾回收_HaveFerrair的博客-CSDN博客 GC又叫垃圾回收器,再也不使用的內存空間應當進行回收,在C/C++等語言中,由程序員負責回收無用內存,Java語言消除了程序員回收無用內存空間的責任。JVM提供了一個系統線程,用於跟蹤存儲空間的分配狀況,檢查並釋放那些能夠被釋放的存儲空間。垃圾回收器在Java程序運行過程當中自動啓用,程序員沒法精確控制和干預。
(11)快速:Java比典型的腳本語言大爲有效,但它比C慢20倍。這對大多數應用是可接受的。不久的未來,代碼生成器就可供利用了,這將使Java程序幾近於用C或C++編寫的程序那麼快。
高性能:Java是一種先編譯後解釋的語言,因此它不如全編譯性語言快。可是有些狀況下性能是很要緊的,爲了支持這些狀況,Java設計者製做了"及時"編譯程序,它能在運行時把Java字節碼翻譯成特定CPU(中央處理器)的機器代碼,也就是實現全編譯了,Java字節碼格式設計時考慮到這些"及時"編譯程序的須要,因此生成機器代碼的過程至關簡單,它能產生至關好的代碼。
類庫豐富:Java提供了不少豐富的內置類庫,經過這些類庫,能夠簡化開發者的程序設計工做,簡化操做,同時縮短了項目開發時間
(12)可拓展性:繼承、多態、動態綁定。
dir 顯示當前目錄文件
md 建立目錄
rd 刪除目錄
cd 切換目錄 能夠是絕對目錄或者相對目錄
cd .. 切換到上一級目錄
cd \ 切換到根目錄
cls 清屏
del 刪除文件
exit 退出dos界面
ipconfig 顯示ip相關配置
單行註釋 //
多行註釋 /* */
doc註釋 /** */
練習稍後再作。
1. 【強制】 代碼中的命名均不能如下劃線或美圓符號開始,也不能如下劃線或美圓符號結束。 反例: _name / __name / $Object / name_ / name$ / Object$
2. 【強制】 代碼中的命名嚴禁使用拼音與英文混合的方式,更不容許直接使用中文的方式。 說明:正確的英文拼寫和語法可讓閱讀者易於理解,避免歧義。注意,即便純拼音命名方式 也要避免採用。 正例: alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。 反例: DaZhePromotion [打折] / getPingfenByName() [評分] / int 某變量 = 3
3. 【強制】類名(以及接口名)使用 UpperCamelCase 風格,必須聽從駝峯形式,但如下情形例外:DO / BO / DTO / VO / AO 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4. 【強制】方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須聽從駝峯形式。 正例: localValue / getHttpMessage() / inputUserId
5. 【強制】常量命名所有大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT
6. 【強制】抽象類命名使用 Abstract 或 Base 開頭;異常類命名使用 Exception 結尾;測試類命名以它要測試的類的名稱開始,以 Test 結尾。
7. 【強制】中括號是數組類型的一部分,數組定義以下:String[] args; 反例:使用 String args[]的方式來定義。
8. 【強制】POJO 類中布爾類型的變量,都不要加 is,不然部分框架解析會引發序列化錯誤。 反例:定義爲基本數據類型 Boolean isDeleted;的屬性,它的方法也是 isDeleted(),RPC框架在反向解析的時候,「覺得」對應的屬性名稱是 deleted,致使屬性獲取不到,進而拋出異常。
9. 【強制】包名統一使用小寫,點分隔符之間有且僅有一個天然語義的英語單詞。包名統一使用 單數形式,可是類名若是有複數含義,類名可使用複數形式。 正例: 應用工具類包名爲 com.alibaba.open.util、類名爲 MessageUtils(此規則參考 spring 的框架結構)
10. 【強制】杜絕徹底不規範的縮寫,避免望文不知義。 反例: AbstractClass「縮寫」命名成 AbsClass;condition「縮寫」命名成 condi,此類 隨意縮寫嚴重下降了代碼的可閱讀性。
11. 【推薦】若是使用到了設計模式,建議在類名中體現出具體模式。 說明:將設計模式體如今名字中,有利於閱讀者快速理解架構設計思想。 正例:public class OrderFactory; public class LoginProxy; public class ResourceObserver;
12. 【推薦】接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔性,並加上有效的 Javadoc 註釋。儘可能不要在接口裏定義變量,若是必定要定義變量,確定是與接口方法相關,而且是整個應用的基礎常量。 正例:接口方法簽名:void f(); 接口基礎常量表示:String COMPANY = "alibaba"; 反例:接口方法定義:public abstract void f(); 說明:JDK8 中接口容許有默認實現,那麼這個 default 方法,是對全部實現類都有價值的默 認實現。
13. 接口和實現類的命名有兩套規則: 1)【強制】對於 Service 和 DAO 類,基於 SOA 的理念,暴露出來的服務必定是接口,內部的實現類用 Impl 的後綴與接口區別。 正例:CacheServiceImpl 實現 CacheService 接口。 2)【推薦】若是是形容能力的接口名稱,取對應的形容詞作接口名(一般是–able 的形式)。 正例:AbstractTranslator 實現 Translatable。
14. 【參考】枚舉類名建議帶上 Enum 後綴,枚舉成員名稱須要全大寫,單詞間用下劃線隔開。 說明:枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。 正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESS / UNKOWN_REASON。
15. 【參考】各層命名規約: A) Service/DAO 層方法命名規約 1) 獲取單個對象的方法用 get 作前綴。獲取多個對象的方法用 list 作前綴。 3) 獲取統計值的方法用 count 作前綴。 4) 插入的方法用 save(推薦)或 insert 作前綴。 5) 刪除的方法用 remove(推薦)或 delete 作前綴。 6) 修改的方法用 update 作前綴。 B) 領域模型命名規約 1) 數據對象:xxxDO,xxx 即爲數據表名。 2) 數據傳輸對象:xxxDTO,xxx 爲業務領域相關的名稱。 3) 展現對象:xxxVO,xxx 通常爲網頁名稱。 4) POJO 是 DO/DTO/BO/VO 的統稱,禁止命名成 xxxPOJO。
數據類型 | C語言大小(32位系統) | Java大小(可移植性,跨平臺大小不變) |
byte | 1字節 | |
char | 1字節 | 2字節 |
short | 2字節 | 2字節 |
int | 4字節 | 4字節 |
float | 4字節 | 4字節 |
long | 4字節,longlong8字節 | 8字節 |
double | 8字節 | 8字節 |
bool | boolean,1位 |
b1和b2是byte類型,java中進行計算時候將他們提高爲int類型,再進行計算,b1+b2計算後已是int類型,賦值給b3,b3是byte類型,類型不匹配,編譯不會經過,須要進行強制轉換。 Java中的byte,short,char進行計算時都會提高爲int類型。
java中byte類型爲一個字節,表示的範圍是[-128,127],此時越界。
強制轉換爲byte類型時,因爲java採用補碼方式存儲數據,將32位的int轉化成8位的byte省略前24位(0),130的最後8位是10000010,補碼轉換成原碼須要首位不變,其餘位翻轉最後加1,即11111101+1,即11111110=-126
對於變量(聲明在方法內的變量) 在第一次使用以前 必須進行初始化(賦值)
變量的初始化:在聲明時初始化 在聲明以後使用以前進行初始化
變量的本質:是內存中一塊存儲單元
常量:常量能夠在聲明的同時賦值 或者在聲明以後賦值 可是不管什麼時候賦值 都只能賦值一次,也是內存中一塊區域
常量除過咱們所說的使用final修飾的變量 字面常量 2,5,a ,b 「aaa」
保留字是指在其餘語言中的關鍵字,目前java尚未將其做爲關鍵字使用,但之後可能使用,避免形成錯誤。
標識符能夠用數字、字母、漢字、下劃線、美圓符號表示。數字不能做爲開頭。不能包含Java的保留字和關鍵字。命名的原則是見名知意。