標籤:個數 lis 9.png 布爾 blog 技術分享 關係 字串 判斷
1.關鍵字
- 關鍵字在Java中被賦予了特殊的含義,比如public void class 等等,Java語言中的關鍵字全部都是小寫的。但這句話可不能搞反了。
2.標識符
- 標識符其實就是在程式中自訂的一些名稱。
- 標識符由英文字母,數字以及符號"_"和"$"構成,不能使用空格。要注意:
- 數字不能用作標識符的開頭
- 不能使用關鍵字來定義標識符
- 凡是變數的名稱,都是標識符。如main,haha等
3.注釋
- Java中的注釋有單行注釋也有多行注釋。
- 單行注釋: 由雙斜杠"//"開始,作用於本行
- 多行注釋: 由 /* 開始,以 */ 結束
- Java特有的文檔型注釋可以通過Java中的工具javadoc提取,產生說明書。
- 注意:
- 多行注釋當中不能再嵌套一個多行注釋,因為在編譯的時候會多餘出一個 " */ "
- 可以利用多行注釋來尋找代碼出錯的範圍,並最終確定該錯誤位置。即注釋可以進行程式的調試
- 注釋在編譯的過程中不會被編譯到CLASS檔案中去,這一點可以通過比較編譯前後class檔案的大小看出
- 一個規範的Java檔案在進行代碼編寫class之前,都要進行多行注釋,用來說明這個Java檔案中代碼的意義和思路。具體格式如下
/*需求:(即代碼所要解決的問題是什麼——幹什麼)思路:(編寫代碼的核心,找出問題的著手點——怎麼幹)步驟:(主要的編程步驟,包括需要用到的變數和方法等)*/
class Demo
{
......
}
4.常量——不能改變的資料
- 分類:整數常量、小數常量、布爾型常量、字元常量、字串常量、null常量
- 注意
- ""和‘‘不等於null,這種字串或字元稱為空白字元(串)。null不能有單引號/雙引號
5.變數
- 記憶體中的一個儲存地區,並且該地區有自己的名稱(變數名)和類型(資料類型),該地區的資料可以再同一個類型範圍內不斷變化。
- 變數定義之後就不能再定義一個相同資料類型和名稱的變數。
- 格式
- 注意注意!!!
- 在Java中,整數在賦值給變數時預設的是int類型,如果該整數的範圍大於了int類型的範圍,就需要在整數的後面加上小寫字母" l "進行聲明,即對過大的數要用字元" l "標識。
- 同理,由於小數在Java預設的是雙精確度的類型,如果想把小數儲存成單精確度的float類型,需要在該小數的後面加上字母" f ",聲明該數字為單精確度的浮點型資料。
6.資料類型(基礎資料型別 (Elementary Data Type)和引用資料類型)
- 基礎資料型別 (Elementary Data Type):
1.整數類型:byte(1位元組,-127~128)、short(2位元組)、int(4位元組預設)、long(8位元組,過大的整數要表示字元 l )ps: 1).為了方便運算,對整數進行不同程度的劃分,對記憶體的空間能夠進行有效配置。 2).1個位元組佔用8個bit位 如 0000-0000
如int類型的6在記憶體中的表示: 0000-0000 0000-0000 0000-0000 0000-0110-6的表示(正數6先去反,再加1) 取反 1111-1111 1111-1111 1111-1111 1111-1001 + 0000-0000 0000-0000 0000-0000 0000-0001_____________________________________________________________________ 1111-1111 1111-1111 1111-1111 1111-1010 (注意:負數的二進位最高位是1)
2.浮點類型:單精確度float(4位元組共32個bit位表示,後面也要聲明 f )、預設為雙精確度double(8位元組)
-
- 字元型:char(取值範圍在2個位元組之內,引號中能裝下的整數只能是個數)
- 引用資料類型:
- 類:class
- 借口:interface
- 數組: []
7.型別提升&強制轉換
- 上面介紹到了不同種的資料類型以及他們在電腦記憶體中的二進位表示方式和所佔記憶體大小。當等式賦值運算的兩端資料類型不一致的時候,就會發生自動型別提升和強制類型轉換。
- 下面通過舉例來分別說明兩者:
1).首先,從一個簡單的運算入手,
class VarDemo2{ public static void main(String[] args) { int x = 3; x = x + 5; //把記憶體空間中的3取出來,在運算區二進位運算3+5 即 011+101 = 1000 ,然後將運算結果賦予給x,此時x記憶體空間中的資料為8 System.out.printn(x); }}
上述代碼在記憶體中的具體運算過程是這樣的
PS:運算兩端必須是相同類型才能運算(類型不一致,記憶體空間就不一致)。但是數實值型別之間的數可以運算。
2).自動型別提升
class VarDemo2{ public static void main(String[] args) { int x = 3; byte b = 5; x = x + b; //自動型別提升 System.out.printn(x); }}
/*
int 類型的整數在記憶體中佔用了4個位元組,也就是32個bit位,而byte類型的整數在記憶體中只佔用1個位元組,即8個bit位。
在 x = x+ b 運算時,類型為byte的資料 b 會在記憶體中自動補齊高位的剩下24個bit位,也就是3個位元組,然後在進行運算。
*/
3).強制類型轉換
class VarDemo2{ public static void main(String[] args) { byte b = 5; b = (byte)(b + 3); //強制類型轉換:將一個int型強制轉換成byte型(除去高位的位元據,只留下8個bit位參與運算),再複製給byte型變數 System.out.println(b); }}
/*
思路和上面自動型別提升一樣,只不過這裡是講等式右邊記憶體較大的int類型的 3 強制去除了其二進位中的高位(前3位位元組),然後再進行運算。
*/
7.常量與變數
class VarDemo2{ public static void main(String[] args) { System.out.println(‘a’ + 1); //char在記憶體中是2位,int在記憶體中是4位,在沒有強制轉換的情況下,java會自動的把位元較小的自動轉換成位元大的類型 ,然後再進行運算, 1 對應的二進位進行了自動類型轉換 System.out.print((char)(‘a‘ + 1)); //再指定了輸出類型後,對結果 98 進行了強制類型轉換 成位元更小的char類型 }}// 運行得到 >>> 98 >>> b
PS:二進位與生活中的文字如字母之間對應關係---->編碼錶
01100001---> a 01100002---> b ...... ---> ...
class VarDemo{ public static void main(String[] args) { byte b = 4; byte b1 = 3; byte b2 = 7; b = b1 + b2; //此處會報錯,原因是以為等式右邊為變數,變數是不確定的,java編譯器無法檢查等號右邊的值得範圍是否超出byte(-128~127),如定義b1之後,又將127賦予b1,會丟失精度。即右邊不確定,是無法判斷賦值的 //b = 3 + 7; //3 7 為常量,不會報錯 }}
class VarDemo{ public static void main(String[] args) { int x; int x1 = 898; int x2 = 810; x = b1 + b2; //因為計算結果在java中預設為int,但是當x1 + x2的值超出了int範圍的時候,java就會進行強制轉換,強制儲存int的二進位4個8位,導致截掉了最高位的1 ,得到的會是一個負數 }}
java---03Java語言的基礎構成(原創,請勿轉載)