整體思維導圖
標識符:對各種變量,方法和類等要素命名時候的字符序列稱爲標識符Java標識符命名規則:
- 標識符由字母、下劃線、美元符或數字組成
- 標識符應以字母、下劃線、美元符開頭
- Java標識符大小寫敏感、長度無限制
關鍵字:在java中一些賦以特定含義,用來專門用途的字符串稱爲關鍵字,所有的java關鍵字都是小寫英文,goto和const是java的關鍵保留字。
Java常量:常量值用字符串表示,區分爲不同的數據類型
- 整型常量:12
- 實型常量:3.12
- 字符常量:‘a’
- 邏輯常量:true、false
- 字符串常量:"hello"
- 注意:注意區分字符常量和字符串常量
常量這個名詞還會用到另外其他語境表示值不可不可變的變量
Java變量:是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域;每個變量都屬於特殊的數據類型,在使用前必須對其進行申明
- 如:int a=100;
- 從本質講,變量其實是內存中的一小塊區域,使用變量名來訪問這塊區域,因此每一個變量使用前必須要先申明,然後必須進行賦值才能使用。
程序的執行過程:
Java變量分類:
- 按聲明的位置劃分
局部變量:方法或語句塊內部定義的變量
成員變量:方法外部、類的內部定義的變量
注意:類外面(與類對應的大括號外面)不能有變量的聲明
- 按數據類型劃分
基本數據類型變量
引用數據類型變量
作用域:其實就是大括號,一個變量只有在這個大括號裏面起作用,一旦離開了這個大括號就沒有人認識你了。
Java數據類型的劃分
Java基本數據類型(4類8種)
- 邏輯型—boolean
- 文本型—char
- 整數型—byte,short,int,long
- 浮點數型—float,double
邏輯型Boolean:適用於邏輯運算,一般用於流程控制,他只允許取值爲true或false,不可以用其他代替,這裏不同於C語言
字符型char:用來表示通常意義上的“字符”,字符常量爲用單引號括起萊的帶個字符,java中還允許使用轉義字符‘\’來講其後面的字符轉變爲其他的含義,如:char c='\n'代表換行符
整數類型:java中個整數類型有固定的表數範圍和字符長度,其不受具體操作系統的影響,以保證java程序的可移植性。注意:java中整型常量默認爲int型,聲明long型常量可以後面加L
浮點類型:與整數類型類似,java浮點類型有固定的表數範圍和字段長度,不受平臺的影響,java浮點類型常量默認爲double型,如要聲明一個常量爲float型,則必須在數字後面加F
基本數據類型的轉換
- Boolean類型不可用轉爲其他類型的數據
- 整型,字符型,浮點型的數據在混合運算中可以相互轉換,轉換的時候遵循如下原則:
- 容量小的類型自動轉換爲容量大的數據類型,按照容量大小排序爲:
- byte,shout,char->int ->long->float->double
- byte,shout,char之間不會相互轉換,他們在計算的時候首先轉換爲int類型
- 容量大的數據類型轉換爲容量小的數據類型的時候,要加上強制轉換符,但是可能造成精度降低或溢出,使用時候要格外小心
- 有多個數據類型數據進行混合運算的時候,系統首先自動將所有的數據轉換成容量最大的那個數據類型,然後再進行計算
小細節
問題一:byte類型表示的範圍是127~-128,那麼如果我們超出了這個範圍會怎麼樣呢?(看代碼示例)
public class TestConVert{
public static void main(String arg[]){
byte b1=100;
byte b2=29;
byte b3=(byte)(b1+b2);
System.out.println(b3);
}
}
編譯結果:
問題二:上面如果超過這個範圍代碼將無法編譯,下面我們就超過這個範圍看會怎麼樣?
public class TestConVert{
public static void main(String arg[]){
byte b1=100;
byte b2=90;
byte b3=(byte)(b1+b2);
System.out.println(b3);
}
}
執行結果:
總結:出現上面的問題的原因是什麼呢?
解答:因爲byte的範圍是-128~127,如果我們要表達的數超過127,java中溢出的數就會回到最小值-128開始,看圖(會更加清晰)
public class TestConVert{
public static void main(String arg[]){
byte b1=100;
byte b2=29;
byte b3=(byte)(b1+b2);
System.out.println(b3);
}
}
執行結果:
當然還有浮點數的,這個有點複雜,感興趣的可以參考這個:https://segmentfault.com/a/1190000005015151