簡史
Java 誕生于 SUN (Stanford University Network) Microsystems Inc. Sun 公司從1995年 Java 語言誕生,1996年發布 JDK 1.0 版本,隨后又發布了 JDK1.1, JDK1.2,JDK1.3, JDK1.4, JDK5.0, JDK6 等幾個版本, 2009 年4 月被Oracle 收購,從此 java 納入了 Oracle 旗下,也進入了 JDK7 時代 JDK---Java Development Kits 。
Java 技術體系架構
一種技術體系架構的誕生,源于他要解決現實生活中的某一類問題。Java 有三個技 術架構:
Java SE(Java Standard Edition)標準版
這個版本是 Java 平臺的核心, 它提供了非常豐富的 API 來開發一般個人計算機上的應用 程序,為開發普通桌面和商務應用程序提供的解決方案。
Java EE(Java Enterprise Edition)企業版
是基于 J2SE 基礎擴展的,增加了用于服務器開發的類庫。為開發企業環境下的應用程 序提供的一套解決方案 ,如金融領域,政府政務領域。
Java ME(Java Micro Edition)小型版 (K-Java)
是 J2SE的內伸,包含 J2SE的一部分核心類,也有自己的擴展類,增加了適合微小裝置的類庫:javax.microedition.io.*等。是為開發電子消費產品和嵌入式設備提供的解決方案。該 技術體系主要應用于小型電子消費類產品,如手機中的應用程序等。
三個概念 JVM JRE JDK
JVM---Java Virtual Machine 在一臺計算機上由軟件或硬件模擬出來的計算機。
JAVA 在設計時就很注重移植和跨平臺性。比如:JAVA int 永遠都是 32 位。不像 c++可能是 16,32位,可能是根據編譯器廠商規定的變化。這樣話程序的移植就會非常麻煩。Java 針對不同的操作系統有不同的虛擬機。Java 虛擬機機 屏蔽了底層運行平臺的差別,實現了“一次編譯,隨處運行”。
JRE --- Java Runtime Environment = JVM + 運行時所用到的類庫
JDK --- Java Development Kits = 開發工具 + JRE
一 Java 開發環境搭建
1.在www.oracle.com官方網站Downloads->Java for Developers->Java SE Downloads->JDK
2.安裝JDK(Java SE Development Kit)開發工具軟件
3.安裝好后,在指定的安裝路徑下可以看到如下兩個文件夾
例如:我的安裝路徑為其默認安裝路徑,為:C:\Program Files\Java,這個目錄下有兩個子目錄,分別是 jdk1.8.0_45 和 jre1.8.0_45
注意:
[1]JDK(Java Development Kit ) =JRE+開發工具集(例如javac編譯工具等)
[2]JRE(Java runtime environment)=JVM+java SE標準類庫
4.設置系統Path環境變量,讓javac等工具可以在任何目錄運行
設置方法如下:
[1]新建環境變量 JDK_TOOLS,其內容為C:\Program Files\Java\jdk1.8.0_45\bin
[2]在Path環境變量原有內容前面加上%JDK_TOOLS%;
注意:這里的%JDK_TOOLS%表示引用JDK_TOOLS變量內容
二 HelloWord.java程序編寫、編譯、運行
[1]編寫:新建HelloWord.java文件,編寫內容如下
注意:這里面class后面的類名需要與文件名相同,否則編譯會報錯
[2]編譯:用cd命令切換到HelloWord.java所在的目錄,用javac編譯
如:javac HelloWord.java
編譯成功后生成對應的字節碼文件HelloWord.class
[3]運行:用java命令解釋字節碼文件即運行Java程序
如:java HelloWord
注意:生成的字節碼文件為HelloWord.class,這種寫法是錯誤的:java HelloWord.class, Java 會 根據傳遞的HelloWord在當前目錄下去尋找對應的HelloWord.class文件
三 Java數據類型
1.基本數據類型
(1)數值型
[1]整數類型 byte[占8bit] ,short[占16bit], int[占32bit], long[占64位]
[2]浮點類型 float[占32bit] , double[占64bit]
(2)字符型 char [占16bit 整個Unicode字符集]
(3)布爾類型 boolean [1bit true 或 false]
注意:
[1]float f = 9.9 這種寫法有問題,因為編譯器默認認為9.9是一個double類型,這樣會丟失精度報錯
正確的寫法:float f = 9.9f
[2]long b = 11111111111 這樣寫有問題,因為編譯器默認認為數字都是int類型,報錯為過大的整數
正確寫法:long b = 11111111111L
[3]boolean類型的變量結果只能是true或false,當輸出boolean類型變量時候,輸出的結果為true或false
[4]java中null表示什么都沒有
2.引用數據類型
(1)類 class
(2)接口 interface
(3)數組
四 Java數據類型間轉換
[1] boolean類型不能強制轉換成任何其它數據類型
[2]自動類型轉換:容量小的類型自動轉換成容量大的數據類型 byte->short->int->long->float->double
即一個小數據類型的變量或數據可以直接賦值給大數據類型變量
注意:對于byte、short、int類型的變量在計算時自動轉換為int
編譯器給出的錯誤信息:
[3] 強制類型轉換:容量大的類型轉換成容量小的數據類型時,要加上強制轉換符
long a = 100L (數字默認是int型,100L是告訴編譯器100是一個long類型數據)
int i = (int)a
這樣做可能造成精度降低或數據溢出,使用時要小心
上面的錯誤解決方案:
五、Java與C語言不同
1、與C語言不同,JAVA里沒有無符號(unsigned)整型。
JAVA的8種基本類型(boolean,byte,short,char,int,long,float,double)都是有符號的。
2、與C語言不同,JAVA里的char類型,占2個字節,專為存放Unicode字符所設計;
3、與C語言不同,JAVA里的boolean只能賦值為true或false,不能直接賦值0或1;
4、與C語言不同,JAVA里的long類型,不是占4字節,而是占8字節。
5、JAVA與C的不同之處,還有很多:
JAVA中沒有指針,其實引用就是指針,但不能進行加減,也沒有取值(*)和取地址(&)。
JAVA中有垃圾回收機制,不需要自己釋放空間;只管new,不需要delete。
JAVA中的基本類型所占內存寬度是固定的,而C里可能跟平臺相關。
JAVA中沒有預處理指令。(如C中的#define , #include , #ifdef等)。
JAVA中沒有GOTO,但可以break或continue到指定的標簽。
JAVA中沒有const關鍵字,而是用static final來定義常量。
JAVA中沒有全局變量,卻有靜態(static)變量。
JAVA中不支持struct和union的類型。
JAVA中不支持可變參數列表。
JAVA中沒有BitField的功能。
JAVA中沒有typedef的功能。
六、Java關鍵字
對比C語言,Java關鍵字要多很多。上表中紅顏色標示的關鍵字,為java中的保留關鍵字,保留即不能使用的意思。
我們也可以把關鍵字做一個分類:
這些關鍵字大家現在沒必要記住,后面我們在用到的時候,在一個個講解。
七、Java中常量和變量
(I)常量
(1)常量表示的是在程序中不能被修改的數據。
(2)聲明常量必須用final關鍵字。
(3)常量分為:整型,浮點型,字符型,布爾型,字符串型常量。
例如,語法:final <數據類型> variable = 值;
(II)變量
(1)變量與常量的相同點是在聲明之前都指定變量的數據類型,變量無final關鍵字聲明。
(2)聲明變量語法:<數據類型> variable;
(3)命名規則:與C語言類似。
注意:
在Java中定義一個常量用關鍵字"final",在C語言中用的是"const"。"final"意為終的,用它的修飾的變量只能賦一次值。也就是說
final修飾的變量在賦值后是不能修改的。
八、Java中的轉義字符與運算符
1.常用的轉義字符
2.運算符
可以看出,java中的運算符和C語言中我們學的運算符差不多,這里就不做過多講解了。
注意:
在字符串中,使用"+"運算符,表示連接兩個字符串。
運行結果如下:
helloword
hellowordok
helloword23
helloword5
注意:
在Java中任何類型與字符串相加都轉成字符串拼接,還要注意優先級哦!
九、Java中的控制語句
(1) if 語句
用法和C語言一樣,只有一個地方需要注意,如下:
(2)switch ....case .... 語句
用法和C語言一樣,只有一個地方需要注意,如下:
(3)for 語句
用法和C語言一樣,只有一個地方需要注意,如下:
(4) while與do...while語句
用法和C語言一樣,只有一個地方需要注意,如下:
(5)break 和 continue
用法和C語言一樣,不做過多講解。