二、基本語法
一、關鍵字和標識符
二、變量
1.java中變量按照數據類型來分類:基本數據類型 和 引用數據類型
>基本數據類型:
整形:byte(8bit) short int(默認類型) long
浮點型:float double(默認類型)
字符型:char(‘ ‘)
布爾類型:boolean (只能取值true或false,不能取null)
補充:按照變量在類中的位置不同:成員變量 VS局部變量
2.進制
十進制 二進制 八進制 十六進制
二進制:計算機底層都是用二進制來存儲和計算。
>四種進制轉換。
3.變量運算:
a.自動類型轉換:容量小的數據類型自動轉換為容量大的數據類型。
short s = 12;
int i = s+2;
註意:byte short char 之間做運算,結果為int類型
b.強制類型轉換:使用(數據類型)實現強轉。
doubel d =10.5;
int i=(int)d+2;
三、運算符
運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等。 算術運算符 賦值運算符 比較運算符(關系運算符) 邏輯運算符 位運算符 三元運算符
1.算術運算符:
註意:
如果對負數取模,可以把模數負號忽略不記,如:5%-2=1。 但被模數是負數則不可忽略。此外,取模運算的結果不一定總是整數。
對於除號“/”,它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而舍棄小數部分。 例如:int x=3510;x=x/1000*1000; x的結果是?3000
“+”除字符串相加功能外,還能把非字符串轉換成字符串.例如:
System.out.println("5+5="+5+5); //打印結果是?5+5=55
System.out.println("5+5="+(5+5));//打印結果是?5+5=10
以下二者的區別:
System.out.println(‘*‘ + ‘\t‘ +‘*‘);93
System.out.println("*" + ‘\t‘ +‘*‘);* *
2.賦值運算符:
符號:= 當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理。
支持連續賦值。 擴展賦值運算符: +=, -=, *=, /=, %=
思考1: short s = 3;
s=s+2; ①
s+=2; ②
①和②有什麽區別?
a+=b --> a=(a.Type)a+b;//返回的是a類型
a=a+b --> a=a+b;//返回類型是a類型與b類型中的最高類型.
1、對於同樣類型的a,b來說
兩個式子執行的結果確實沒有什麽區別。但是從編譯的角度看吧,a+=b;執行的時候效率高。
2、對於不同類型的a,b來說
2.1 不同類型的兩個變量在進行運算的時候,我們經常說到的是類型的轉換問題。這裏,記住兩點:
一、運算過程中,低精度的類型向高精度類型轉換。
二、如果將高精度的數值賦值給低精度類型變量,則必須要進行顯性的強制轉換。
2.2 對於a+=b;這個式子,要明確的一點是,+=運算中,結合了強制類型轉換的功能,因此,不會出現編譯錯誤;而對於a=a+b;這個式子,因為是簡單的運算,沒有類型轉換,在編譯過程中會報錯,代碼如下:
public class Test{ public Test(){ int a = 5; char b = 3; b+=a;//編譯通過 b=a+b;//編譯出錯 } public static void main(String[] args){ Test t = new Test(); } }
要想改正上面的錯誤,只要像這樣寫:
public class Test{ public Test(){ int a = 5; char b = 3; b+=a; b=(char)(a+b);//編譯通過 } public static void main(String[] args){ Test t = new Test(); } }
因此,總的來說,a=a+b;和a+=b;並不是任何時候都等價,也要分情況的。
3.比較運算符(關系運算符)
比較運算符的結果都是boolean型,也就是要麽是true,要麽是false。 比較運算符“==”不能誤寫成“=” 。
4.邏輯運算符
5.位運算符
6.三元運算符
二、基本語法