(1)跨平臺/可移植性:相同的Java代碼能夠在任何一個支持的平臺(操做系統)上運行,這是由於.java源文件首先會編譯爲.class的字節碼文件,這個字節碼文件會在不一樣操做系統的不一樣JVM上執行,最終得到相同的效果。這也正是「一次編譯,到處運行」的原理。同時,Java規定全部的數據類型在全部平臺上佔得內存都相同,保證了跨平臺性的可行性。java
(2)面向對象:Java是徹底面向對象的編程語言,其餘面向對象的語言還有C#,C++,Python等。程序員
(3)安全性:Java適合於其分佈式/網絡服務的開發,是安全性很高的語言。編程
(4)簡單:Java較C語言比較簡單。同時去除了指針的概念。數組
(5)高效性:Java經過即時編譯技術,即將一些常常容易用到的熱點代碼的機器碼保存在本地,這樣大大提高了Java的執行效率。安全
(6)分佈式:網絡
(7)多線程:Java能夠同時開啓多個線程、多級線程,能夠提供更好的交互響應和實時行爲。多線程
(9)健壯性:Java的健壯性體如今一是在編寫代碼時就顯示了許多C系語言在編譯時纔會出現的錯誤;二是Java會處理一些可能的異常,將他們在try-catch塊中處理或是拋出。jvm
(10)垃圾處理機制:也稱GC,是一種系統級線程,能夠實時跟蹤java中用不到的內存並自動將其釋放,避免了C系語言須要程序員本身清除垃圾的工做。但仍可能形成內存的溢出或崩潰。編程語言
(1)安裝jdk(java development kit) jdk = jre+開發工具包 jre = 核心API+JVM。其中jdk用於開發java程序,jre用於運行java程序。分佈式
(2)配置環境變量:配置%JAVA_HOME%爲jdk目錄,PATH添加%JAVA_HOME%/bin。目的是爲了在系統中到處能夠直接運行java命令。
(3)建立.java源文件,在其中添加java代碼。其中若是有主類,主類名必須和文件名一致。
(4)在源文件目錄下,使用cmd,輸入javac 原文件名.java 命令,進行編譯。編譯完成後輸入java 源文件名 命令,執行字節碼文件。在jdk11中也能夠直接輸入java 源文件名.java 編譯+運行。
(5)注意事項:在代碼中全部的標點符號都必須是英文狀態;代碼須要有良好的格式:在java代碼中 以大括號進行層級區分 在同一個大括號中的代碼 應該具備相同的縮進層次 縮進通常一個層級縮進一個製表符(Tab);在java代碼中 每條語句結束必須以分號結尾;在java中 全部文件的存放路徑或者軟件的安裝路徑都必須是全英文的,路徑中不能出現中文或空格 等特殊符號;
當修改了java源程序以後 每次都須要從新編譯運行。
(1)輸入整數默認爲int類型。bool、char、short類型的變量,一旦通過運算,其類型都會變成int類型,不能直接賦值。可是賦值運算符能夠自動將其類型強制轉換。
(2)發生上溢(正變負)時,數值的計算使用補碼的計算過程。
(3)字符串拼接中有整型時,在字符串前面的整型進行計算,在字符串後面的整型視爲字符串。
(4)表達式的計算,首先是按照從左向右的順序,其次注意自增自減變量在表達式中的變化,如
int y = x++ + x++ + x++; System.out.println(y);// 10 +11 + 12 = 33
(5)模運算規則:被取餘數的符號決定餘數的符號,如
int ss1 = 7 % 3;// 1 int ss2 = -7 % 3; //-1 int ss3 = 7 % -3 ; // 1
(6)數據類型表示的範圍大小:bool->char/short->int->long->float->double。大的自動兼容小的,多個類型進行運算,結果自動轉爲大的類型。
(7)浮點數運算,兩個float類型運算結果仍然爲float類型。
(8)字符運算中使用的是字符的ascii碼。經常使用的有'a'=97 'A'=65 '0'=48。注意區分(char)0、(int)'0'和'0'。
(9)區分Java中邏輯與/或和按位與/或:看運算符兩邊的類型,若是是整型則爲位運算符,若是是boolean類型則爲邏輯運算符。
(10)交換兩數內存最少、時間最短的方法是異或再異或。
(11)long類型表示超出int範圍的數,須要在後面加上l。
(12)十進制直接輸入,8進制前面加0,16進制前面加0x,2進制前面加0b。
(13)因爲double和float類型並不可以存儲精確的數值,所以最好不要使用浮點數類型比較,會獲得必定精度以上的數值相等的狀況。若是要保存很大的數能夠使用大整數或者字符串。
(14)char能夠存英文、中文字符、數字以及unicode碼,所以它的大小是2字節。boolean只有true和false兩個值,所以它的大小是1bit。
(*15)utf-8是一種unicode編碼,它使用變長存儲,一個n字節的utf-8碼,第一個字節前n位是1,後面每一個字節高兩位都是10。這樣保證了只有128個的ascii碼不會浪費空間。
(16)如圖所示,兩個int整數相乘發生了上溢,但在轉化爲long類型以前運算就結束了,錯誤的結果仍是保存到了long類型中。正確的寫法應該是將任意一個強轉爲long類型。
int money =1000000000; int year = 20; long total = money * year; System.out.println(total);//-1474836480
(17)通常只針對兩個整型求餘,但浮點數也能夠求餘。
(1)switch的表達式的類型: char, byte, short, int及其對應的引用類型, enum(枚舉) , String(jdk7+)
(2)default能夠出如今任意位置
(3)switch語句只能實現具體、有限的值的邏輯判斷switch語句能夠實現的,if語句必定能夠實現
outter: for(int i = 101; i < 150 ;i ++){ for(int j = 2; j < i/2 ; j++){ if(i % j == 0 ){ continue outter; } } System.out.println(i); }
解析:java方法中能夠一次傳入多個參數,經過數組/list/set以及不定數組等,可是不能夠一次返回多個參數,只能放在數組/集合中返回。
D:(char)0 == 0 ,因爲數組中的字符必定是能夠輸入的ascii字符,必定成立;a[i]<=(char)9表示ascii表中前9個ascii字符,而0-9是ascii碼中48-57的字符。