學啥語言都行,大同小異。html
踏實學,最快閉關四個月能找到工做。【這是我自個知乎上看的】java
計算機基於馮諾曼體系編程
計算機三代語言api
機器語言緩存
彙編語言安全
高級語言服務器
面向過程(C)多線程
面向對象(C++、JAVA、C#)eclipse
C語言是現代語言鼻祖jvm
C++是在C語言基礎上設計的面嚮對象語言
Java可被稱爲C++-
Object-C是IOS和Mac開發中的主流語言
C#是微軟山寨的JAVA,但因爲與Windows綁定,失去了Java的跨平臺優點。
簡單性
面向對象
可移植性(跨平臺性)【核心優點】
>一次編寫,隨處運行,對不一樣平臺兼容性的處理由JVM處理,咱們只須要專一於Java源文件的開發。
高性能
分佈式
動態性
多線程
安全性
健壯性
J2SE(JAVASE、Java 2 Standard Edition)
>定位在我的計算機上的應用【Java基礎】
J2EE(JAVAEE、Java 2 Enterprise Edition)
>定位在服務器端的應用【JavaWeb、安卓使用】
J2ME(JAVAME、Java 2 Micro Edition)
>定位在消費性電子產品的應用【使用較少】
JVM(Java Virtual Machine)
JVM是一種規範,可使用軟件來實現,也可使用硬件來實現,就是一個虛擬的用於執行bytecodes字節碼的計算機。他也定義了指令集、寄存器集、結構棧、垃圾收集堆、內存區域。
Oracle公司制定了JVM規範,方便開發者開發JVM。
JVM是指在一臺計算機上由軟件或硬件模擬的計算機;它相似一個小巧而高效的CPU。
byte-code代碼是與平臺無關的是虛擬機的機器指令。
JAVA的跨平臺實現的核心是不一樣平臺使用不一樣的虛擬機,不一樣的操做系統有不一樣的虛擬機。Java 虛擬機機制屏蔽了底層運行平臺的差異,實現了「一次編譯,隨處運行」。
java字節代碼運行的兩種方式:
方式interpreter(解釋)
Just-in-time(即時編譯):有代碼生成器將字節代碼轉換成本機的機器代碼,而後能夠以較高速度執行。
JVM負責將java字節碼解釋運行,邊解釋邊運行,這樣,速度就會受到必定的影響。JAVA提供了另外一種解釋運行的方法JIT(just in time),能夠一次解釋完,再運行特定平臺上的機器碼,高級的JIT能夠只能分析熱點代碼,並將這些代碼轉成本地機器碼,並將結果緩存起來,下次直接從內存中調用,這樣就大大提升了執行JAVA代碼的效率。這樣就實現了跨平臺、可移植的功能。
JRE(Java Runtime Environment)
JRE包括:Java虛擬機(JVM)、庫函數、運行Java應用程序和Applet所必須文件
jre就是java運行時環境,包括了jvm和其它一些java核心api,任何一臺電腦,只有安裝了jre才能夠運行java程序.
Java運行環境的三項主要功能:
加載代碼:由class loader 完成;
校驗代碼:由bytecode verifier 完成;
執行代碼:由 runtime interpreter完成。
若只是運行JAVA程序,只須要JRE(一般很是小)
JDK(Java Development Kit)
sdk(也就是jdk)是jre的超集,是在jre的基礎上增長了編譯器及其餘一些開發工具。
若要開發Java程序,就須要安裝JDK。
JAVA語言的應用範圍
桌面應用編程
WEB客戶端編程
WEB服務器編程
手機編程(J2ME或者如今的Android系統上開發應用程序)
機器人編程
下載JDK
安裝JDK
環境變量配置
測試環境是否安裝成功(cmd測試)
public class HelloWorld { public static void main(String[] args) { System.out.print("Hello World!"); } }
環境變量的配置,是方便你打Java、Javac時直接執行文件
計算機的高級編程語言類型: 編譯型 ,解釋型. Java 語言是兩種類型的結合;
第一步:編譯
利用編譯器(javac)將源程序編譯成字節碼文件,字節碼文件名:源文件名.class
第二步:運行
利用虛擬機(解釋器,java)解釋執行class字節碼文件。
Java對大小寫敏感。
關鍵字public被稱做訪問修飾符(access modifier),用於控制程序的其它部分對這段代碼的訪問級別。
關鍵字class 代表Java 程序中的所有內容都包含在類中,Java是一種純面向對象的語言。
一個源文件中至多隻能有一個public的類聲明,其它類的個數不限,若是源文件中包含一個public 類,源文件名必須和它中定義的public的類名相同,且以「java」爲擴展名。
一個源文件能夠有多個class,正確編譯後的源文件,會獲得相應的字節碼文件,編譯器爲每一個類生成獨立的字節碼文件,且將字節碼文件自動命名爲類的名字且以「class」爲擴展名。
main方法是Java應用程序的入口方法,它有固定的書寫格式。
在Java中,用花括號劃分程序的各個部分,任何方法的代碼都必須以「{」開始,以「}」結束, 因爲編譯器忽略空格,因此花括號風格不受限制。
Java中每一個語句必須以分號結束,回車不是語句的結束標誌,因此一個語句能夠跨多行。
編程風格:
注意縮進!
成對編程!
文本編輯器
UltraEdit
EditPlus
notepad++
sublime text3
集成開發環境(IDE:Integrated Development Environment)
JBuilder (http://www.borland.com)
Eclipse (http://www.eclipse.org)【之後工做和學習的重點!】
MyEclipse【收費】
NetBeans(http://java.sun.com)
WSAD (http://www.ibm.com)
intelliJ(http://www.jetbrains.com/idea/)【至2017年公認最好用,但學習成本高,收費】
cd 進入一個目錄
cd ..
dir
上下鍵:查找敲過的命令
Tab鍵:自動補齊命令
cd【.. ~ . /】
ls
pwd
clear
history
單行註釋//、多行註釋/**/
註釋不出如今字節碼文件中,編譯器編譯時將跳過註釋。
public class Five { public static void main(String[] args){ System.out.print("test");//我是單行註釋 System.out.println("test2"); /*我 *是 *多 *行 *注 *釋*/ } }
標識符:用於類、方法、變量的命名。
類名首字母大寫(Man)
方法、變量首字母小寫(myCode、eat())
標識符都使用駝峯命名法。
Java標識符命名規則:
標識符必須以字母、下劃線_ 、美圓符$開頭。
標識符其它部分能夠是字母、下劃線「_」、美圓符「$」和數字的任意組合。
Java 標識符大小寫敏感,且長度無限制。
不能夠是Java的關鍵字。
public class test006 { public static void main(String[] args){ int $abc = 3; int _abc = 3; int abc = 3; int _ = 3; int $ = 3; int a = 3; //int 3abc = 3;//錯誤 //int #abc = 3;//錯誤 int 尚學堂 = 3;//能夠,但不推薦 } }
JAVA不採用一般語言使用的ASCII字符集,而是採用Unicode這樣的標準的國際字符集。所以,這裏的字母的含義:英文、漢字等等。(不建議你們使用漢字來定義標識符!)
編碼與解碼時若不使用同一字符集,則會出現亂碼。
UTF-8,中文3個字節表示一個漢字、西歐英文1個字節表示一個字母,阿拉伯2個字節表示一個字符。
【個人拓展】經常使用中文字符用utf-8編碼佔用3個字節(大約2萬多字),但超大字符集中的更大多數漢字要佔4個字節(在Unicode編碼體系中,U+20000開始有5萬多漢字)。GBK、GB2312收編的漢字佔2個字節,嚴格地用iso8859-1沒法表示漢字,只能轉爲問號。參考資料