Java語言基礎組成(上)
就像學英語一樣,首先要學習英語的每個音標、基本單詞,然後再深入的學習英語語法和句子。java也是一門語言,是一門人與計算機交流的語言。Java的基礎組成部分就像英語中的音標、基本單詞一樣,是基礎中的基礎。爲了能更好的深入學習以後的內容,java基礎組成部分內容一定要學好。具體分析如下:
一、關鍵字
定義:關鍵字就是被java賦予特定含義的單詞。
注意:關鍵字所有字母都是小寫的。
隨着以後學習的深入,會具體學習每個關鍵字的用法,在此只列舉少量的關鍵字,不做過多的分析:
用於定義訪問權限修飾符的關鍵字:public、protected、private。
用於定義類,函數,變量修飾符的關鍵字:abstract、final、static。
用於定義類與類之間關係的關鍵字:extends、implements。
用於定義建立實例及引用實例,判斷實例的關鍵字:new、this、super、instanceof。
用於異常處理的關鍵字:try、catch、finally、throw、throws。
用於包的關鍵字:package、import。
二、標識符
定義:在程序中人爲定義的名稱,由26個英文字母、0—9數字、_$組成。
合法標識符的規則:
(1)、不可以數字開頭,不可以出現非法的字符;
(2)、不可以與java中的關鍵字相同。
注意:在java中,爲了提高程序的閱讀性,應該儘量定義一些一看就明白什麼意思的標識符,儘量不要寫成a;b;c;x;y;z之類。
Java中的名稱規範:
包名:多單詞組成時所有字母都小寫。xxxyyyzzz
類名接口名:多單詞組成時,所有單詞的首字母大寫。XxxYyyZzz
變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫。xxxYyyZzz
常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接。XXX_YYY_ZZZ
三、常量和變量
常量定義:表示不可以再變化的數值,定值。
具體可以分爲:
(1)、整數常量
(2)、浮點型常量
(3)、布爾型常量(true、false)
(4)、字符常量:用單引號標識
(5)、字符串常量:用雙引號標識
(6)、null常量:只有一個值null。
變量定義:變量表示內存中的一個存儲區域,值是可以變化的。
變量的定義格式:數據類型變量名 = 初始值;
由於java語言是一種強類型的語言,對於每一個數據都必須明確它的數據類型,只有明確了數據類型,java虛擬機(JVM)才知道怎樣去給數據分配內存,具體的數據類型如
圖2.1所示:
圖2.1
Java語言中數據的進制可以分爲四種:
(1)、十進制:逢10進1,這是我們在生活中最常用的進制數;
(2)、八進制:逢8進1,以0開頭;
(3)、十六進制:逢16進1,以ox開頭,0—9,A—F;
(4)、二進制數:逢2進1,只有0,1兩個基數,計算機中存儲的就是二進制數。負數的二進制數在內存中用補碼錶示。
規律:同樣一個數,進制越大,表現形式越短!
進制之間的轉換:
十進制轉成二進制:除以2取餘數;
二進制轉成十進制:乘以2的冪;
十進制轉成八進制:除以8取餘數;
八進制轉成十進制:乘以8的冪;
八進制轉十六進制:以2進製爲中間橋樑,三位二進制數表示一位八進制數,四位二進制數表示一位十六進制數。
在程序中,有特定的方法爲我們實現進制之間的轉換,但原理我們要懂。
package itheima.day02;
/*演示進制之間的轉換*/
public class NumberTranslation {
public static void main(String[] args) {
int number = 11;
System.out.println(Integer.toBinaryString(number));//1011
System.out.println(Integer.toOctalString(number));//13
System.out.println(Integer.toHexString(number));//b
}
}
類型轉換:類型轉換可以分爲自動類型轉換和強制類型轉換兩種,自動類型轉換是系統自動幫助我們轉換的,不必操心;強制類型轉換就要自己手動轉換了。
表達式的數據類型自動提升規律:
(1)、所有的byte型、short型和char的值將被提升到int型。
(2)、如果一個操作數是long型,計算結果就是long型;
(3)、如果一個操作數是float型,計算結果就是float型;
(4)、如果一個操作數是double型,計算結果就是double型。
package itheima.day02;
/*演示類型之間的轉換問題*/
public class TypeChange {
public static void main(String[] args) {
byte b = 3;
int x =4;
float f =(float)1.2;//默認是double類型的,強轉
x = x+b;//自動提升爲int類型
//b = b+3;//報錯,因爲b+3轉爲了int類型,這時不可以直接付給byte類型
b = (byte)(b+3);
f = x +f;//如果一個操作數是float型,計算結果就是float型;
System.out.println(x);//7
System.out.println(f);//8.2
}
}
四、運算符
1、 算術運算符:如圖2.2所示:
圖2.2
要注意的問題在代碼裏面體現,這樣更加直觀,如下:
package itheima.day02;
/*演示算術運算符要注意的問題*/
public class Arithmetic {
public static void main(String[] args) {
int x =3623;
int x1 =x/1000*1000;//3000,整數之間的除法運算,只保留整數部分,去掉小數部分
int y = 7;
int y1 = -7;
System.out.println(x1);
System.out.println(y%-2);//1,正負號只與被模的數有關,與模無關
System.out.println(y1%2);//-1,正負號只與被模的數有關,與模無關
}
}
2、 賦值運算符:
具體包括:= , +=,-=, *=, /=, %=。
要注意的問題我們用代碼體現,這樣更加直觀,如下:
package itheima.day02;
/*演示賦值運算符要注意的問題*/
public class Assignment {
public static void main(String[] args) {
int a,b,c;
a = b =c =5;//連續賦值,可以
short s = 2;
// s =s +2;//編譯失敗,因爲s會被提升爲int類型,運算後的結果還是int類型。無法賦值給short類型。
s +=2;//編譯通過,因爲+=可以自動類型轉換。
System.out.println("a="+a+",b="+b+",b="+b+",c="+c);
System.out.println("s="+s);
}
}
3、 比較運算符:如圖2.3所示:
圖2.3
注意:
(1)、比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。
(2)、比較運算符“==”很容易誤寫成“=”,需要特別注意。
4、 邏輯運算符:
邏輯運算符包括:
&:與運算;|:或運算;^:異或運算;!:非運算;&&:短路與;||:短路或。
規律:<<:相當於乘與2的倍數
>>:相當於除以2的倍數
移n位,就是對乘以或者除以2的n次冪。
5、 位運算符:
位運算符包括:<<:左移;>>:右移;>>>:無符號右移;&:與運算;|:或運算;^:異或運算。
下面以代碼形式體現位運算符的練習題:
package itheima.day02;
/*演示位運算*/
public class BitArithmetic {
public static void main(String[] args) {
/*需求:最有效率的方式算出2乘以8等於幾?2<<3;*/
int x= 2;
int y = 2<<3;//<<相當於乘以2的倍數
System.out.println("x="+x+",y="+y);
/*需求:對兩個整數變量的值進行互換(不需要第三方變量)*/
x = x^y;
y = x^y;
x = x^y;
System.out.println("x="+x+",y="+y);
}
}