JDK,JRE,JVM的區別
JDK:Java Development Kit(Java開發工具包)
Java開發工具包,亦是Java開發者必須安裝的軟件環境。JDK包含了JRE與開發Java程序所需所需的工具,如編譯器、調試器、反編譯器、文檔生成器等。
JRE:Java Runtime Environment(Java運行環境)
Java程序運行的必要環境,包含類庫和JVM。
JVM:Java Virtual Machine(Java虛擬機)
JVM是Java的虛擬機,引入Java語言虛擬機後,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。
Java的基本組成
Java的基本組成包含數據類型、變量、標識符、運算符、字符串、數組、流程控制、註釋
數據類型
Java的數組類型分爲原始類型和引用類型。
原始類型:
1.整數類型:byte、short、int和long。
2.浮點類型:float和double。
3.字符類型:char。
4.布爾類型:boolean。
引用類型:
包括類,接口和數組。
比起c語言,Java的原始類型多了byte和布爾類型的boolean,byte是最小的整數類型,所佔位數爲8位。布爾類型boolean只包含True和False兩個值。
Java使用Unicode碼錶示字符(C則使用ASCLL碼錶示),所以在Java中字符類型char佔了16位,C中的char則佔8位。
在Java中,若在變量聲明時沒有給變量賦初值,則會給該變量賦默認值。
Java的類型轉換和C基本相同。
註釋
單行註釋 //
多行註釋 /、/
文檔註釋 /**、*/,文檔註釋會包含在javadoc生成的文檔中。
標識符
Java語言中,標識符是以字母、下劃線(_)和美元符($)開始的一個字符序列,後面可以跟字母、下劃線、美元符和數字。建議最好以字母開頭、儘量不要包含其他符號,如程序中的類名“Circle” “TestJavaStructure”等。
元素 | 規範 | 實例 |
---|---|---|
類名、接口名 | 首字母大寫 | Person Student SystemManager |
變量名、數組名 | Camel規則,小寫開頭 | ageValue salary printInformation |
函數名(方法名) | Camel規則,小寫開頭 | setCourse getAge setUserName |
包名 | 全部小寫 | com_zknu.czw sam.gover |
常量名 | 全部大寫 | MAX_VALUE |
C中標識符以字母,數字,下劃線組成,都不能以數字開頭。
變量
變量,即值可以改變的量。變量利用聲明的方式將內存中的某個內存塊保存下來以供程序使用。變量可以用來存放數據,而使用前必須先聲明它的數據類型,也可以在聲明時立即爲其賦值,如程序中變量的聲明和初始化(與C語言相同)。
運算符
運算符分爲賦值運算符、算術運算符、位運算符和關係運算符
賦值運算符:=。
算術運算符:+、-、*、/、%。
常用:+=、-=、*=、/=、%=、++、–。
Java的賦值運算符和算術運算符使用方式和C中基本一致。
位運算符:~、&、|、、>>、<<、>>>、&=、|=、=、>>=、<<=、>>>=。
含義 | C語言 | Java |
---|---|---|
按位與 | a & b | a & b |
按位或 | a | b | a | b |
按位異或 | a ^ b | a ^ b |
按位取反 | ~a | ~a |
左移 | a << b | a << b |
帶符號右移 | a >> b | a >> b |
無符號右移 | / | a>>> b |
關係運算符:==、!=、>、<、>=、<=。
三元運算符:?:。
Java的運算符優先級與C中的一致。
流程控制
流程控制語句可分爲選擇、循環和跳轉三大類。
選擇語句包括if-else語句和switch-case語句。
循環語句包括for語句、while語句和do-while語句。
中斷語句包括break語句和continue語句。
Java的流程控制與C基本相同。
在for語句中,JDK1.5以上版本可以使用foreach語句
for each(數據類型 變量名稱 : 數組名稱){
// 語句序列;
}
數組
數組包含一維數組,二維數組和多維數組。
一維數組
數組名 = new 數據類型 [數組大小];
buffer = new int[5];
數據類型 數組名[] = new 數據類型[數組大小];
數據類型[] 數組名 = new 數據類型[數組大小];
int []buffer = new int[50];//聲明數組的同時創建數組
int []buffer1 =new int[]{10,20,30,40,60};//因格式比較煩瑣,所以很少使用
使用關鍵字new創建數組時,元素都是默認值,這種初始化叫做“動態初始化”。
還有一種不使用關鍵字new,在聲明數組的同時就完成了創建和初始化的工具,稱爲“靜態初始化”。
int [] buffer = {2,3,4,1,9}//不使用new,必須寫在一行。
Java中數組的下標也是和C一樣,從0開始到數組大小-1。不同於C的是,Java中會進行數組越界檢查。
Java中,只開闢了棧內存空間的數組是永遠無法使用的,必須有指向的堆內存纔可以使用。要想開闢新的堆內存,必須使用關鍵字new,然後將此堆內存的使用權交給對應的棧內存空間,並且一個堆內存可以同時被多個棧內存空間指向。
二維數組
聲明方法:
數據類型 數組名[][] 或者 數據類型[][] 數組名;
二維數組分配內存方法如下:
數組名 = new 數據類型 [行數組大小][列數組大小];
二維數組在分配內存時,必須告訴編譯器二維數組的行與列個數。(C語言中二維數組聲明大小時行個數可以省略)。
String類(字符串)
String是用於聲明字符串的類,在Java中是一個特殊的類。
String類中有兩種實例化對象的方法。
//直接實例化String對象
String s1 = "abc";
String s2 = "abc";
//調用String類中的構造方法實例化對象
String s3 = new String("abc");
String s4 = new String("abc");
在上述實例化對象中,s1 == s2, s3 != s4。
String的常用方法
方法名 | 功能 |
---|---|
boolean equals (Object anObject) : | 將此字符串與指定對象進行比較 |
boolean equalsIgnoreCase (String anotherString) : | 將此字符串與指定對象進行比較,忽略大小寫。 |
int length () : | 返回此字符串的長度。 |
String concat (String str) : | 將指定的字符串連接到該字符串的末尾。 |
char charAt (int index) : | 返回指定索引處的 char值。 |
int indexOf (String str) : | 返回指定子字符串第一次出現在該字符串內的索引。 |
String substring (int beginIndex) : | 返回一個子字符串,從beginIndex開始截取字符串到字符串結尾。 |
String substring (int beginIndex, int endIndex) : | 返回一個子字符串 |
char[] toCharArray () : | 將此字符串轉換爲新的字符數組。 |
byte[] getBytes () : | 使用平臺的默認字符集將該 String編碼轉換爲新的字節數組。 |
String replace (CharSequence target, CharSequence replacement) : | 將與target匹配的字符串使用replacement字符串替換。 |
String[] split(String regex) : | 將此字符串按照給定的regex(規則)拆分爲字符串數組。 |
boolean contains(CharSequence s): | 判斷字符串中是否包含指定字符。 |