1 Java 基本資料型別
變數就是申請記憶體來儲存值。也就是說,當建立變數的時候,需要在記憶體中申請空間。
記憶體管理系統根據變數的型別為變數分配儲存空間,分配的空間只能用來儲存該型別資料。
因此,通過定義不同型別的變數,可以在記憶體中儲存整數、小數或者字元。
Java 的兩大資料型別:
- 內建資料型別
- 引用資料型別
1.1 內建資料型別
Java語言提供了八種基本型別。六種數字型別(四個整數型,兩個浮點型),一種字元型別,還有一種布林型。
1.1.1 byte:
- byte 資料型別是8位、有符號的,以二進位制補碼錶示的整數;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 預設值是 0;
- byte 型別用在大型陣列中節約空間,主要代替整數,因為 byte 變數佔用的空間只有 int 型別的四分之一;
- 例子:byte a = 100,byte b = -50。
1.1.2 short:
- short 資料型別是 16 位、有符號的以二進位制補碼錶示的整數
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 資料型別也可以像 byte 那樣節省空間。一個short變數是int型變數所佔空間的二分之一;
- 預設值是 0;
- 例子:short s = 1000,short r = -20000。
1.1.3 int:
- int 資料型別是32位、有符號的以二進位制補碼錶示的整數;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型變數預設為 int 型別;
- 預設值是 0 ;
- 例子:int a = 100000, int b = -200000。
1.1.4 long:
- long 資料型別是 64 位、有符號的以二進位制補碼錶示的整數;
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 這種型別主要使用在需要比較大整數的系統上;
- 預設值是 0L;
- 例子: long a = 100000L,Long b = -200000L。
"L"理論上不分大小寫,但是若寫成"l"容易與數字"1"混淆,不容易分辯。所以最好大寫。
1.1.5 float:
- float 資料型別是單精度、32位、符合IEEE 754標準的浮點數;
- float 在儲存大型浮點陣列的時候可節省記憶體空間;
- 預設值是 0.0f;
- 浮點數不能用來表示精確的值,如貨幣;
- 例子:float f1 = 234.5f。
1.1.6 double:
- double 資料型別是雙精度、64 位、符合IEEE 754標準的浮點數;
- 浮點數的預設型別為double型別;
- double型別同樣不能表示精確的值,如貨幣;
- 預設值是 0.0d;
- 例子:double d1 = 123.4。
1.1.7 boolean:
- boolean資料型別表示一位的資訊;
- 只有兩個取值:true 和 false;
- 這種型別只作為一種標誌來記錄 true/false 情況;
- 預設值是 false;
- 例子:boolean one = true。
1.1.8 char:
- char型別是一個單一的 16 位 Unicode 字元;
- 最小值是 \u0000(即為0);
- 最大值是 \uffff(即為65,535);
- char 資料型別可以儲存任何字元;
- 例子:char letter = 'A';。
2 引用型別
- 在Java中,引用型別的變數非常類似於C/C++的指標。引用型別指向一個物件,指向物件的變數是引用變數。這些變數在宣告時被指定為一個特定的型別,比如 Employee、Puppy 等。變數一旦宣告後,型別就不能被改變了。
- 物件、陣列都是引用資料型別。
- 所有引用型別的預設值都是null。
- 一個引用變數可以用來引用任何與之相容的型別。
- 例子:Site site = new Site("Runoob")。
3 常量的概述
常量是指在程式執行過程中其值不能改變的量。
3.1 常量型別
Java中常量的分類:
整數常量 : 所有整數
小數常量 : 所有小數
布林常量 : 只有true和false
字元常量 :使用’’引起來的單個字元
字串常量 :使用“”引起來的字元序列,“” 、“a” 、” ”
null常量 : 只有一個值null
3.2 char 型別
char型別表示的是單個字元型別,任何資料使用單引號括起來的都是表示字元。字元只能有一個字元,比如:普通的老百姓穿上軍裝就是軍人。
注意:特殊字元的轉義序列:轉義字元
轉義字元的概述:
特殊字元使用”\”把其轉化成字元的本身輸出,那麼使用”\”的字元稱作為轉移字元。
需求:使用輸出語句,列印出帶引號的資訊例如輸出。
System.out.println("teacher said"java is fun"");編譯是無法正常通過的。語法有錯誤,編譯器讀到第二個引號就認為是字串的結束,剩餘的不知道怎麼處理。如何解決這個問題:java中使用轉義字元來表示特殊的字元。一個轉義字元以反斜槓(\)開始。
問題:想要列印帶引號的字串怎麼辦,就可以使用反斜槓(\)後跟字元,這個反斜槓就是轉義字元。
\r 表示接受鍵盤輸入,相當於按下回車。
\n 表示換行。
\t 製表符,相當於Table鍵
\b 退格鍵,相當於Back Space
\’ 單引號
\’’ 雙引號
\\ 表示一個斜跨
上述問問題解決:System.out.println("teacher said\"java is fun\"");
注意:換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時編寫檔案的回車符應該確切來說叫做回車換行符
Java中這8中基本資料型別都是小寫的。
3.4 常量名的宣告規範:
多個單片語成時,字母全部大寫,多個單詞之間使用_分隔(例:INTEGER_CACHE)
注意:只是為了增加規範性、可讀性而做的一種約定,識別符號在定義的時候最 好見名知意,提高程式碼閱讀性。
4 自動型別轉換
整型、實型(常量)、字元型資料可以混合運算。運算中,不同型別的資料先轉化為同一型別,然後進行運算。
轉換從低階到高階。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
資料型別轉換必須滿足如下規則:
-
1. 不能對boolean型別進行型別轉換。
-
2. 不能把物件型別轉換成不相關類的物件。
-
3. 在把容量大的型別轉換為容量小的型別時必須使用強制型別轉換。
-
4. 轉換過程中可能導致溢位或損失精度
- 5. 浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入
自動型別轉換
必須滿足轉換前的資料型別的位數要低於轉換後的資料型別,例如: short資料型別的位數為16位,就可以自動轉換位數為32的int型別,同樣float資料型別的位數為32,可以自動轉換為64位的double型別。
強制型別轉換
-
1. 條件是轉換的資料型別必須是相容的。
-
2. 格式:(type)value type是要強制型別轉換後的資料型別
隱含強制型別轉換
-
1. 整數的預設型別是 int。
-
2. 浮點型不存在這種情況,因為在定義 float 型別時必須在數字後面跟上 F 或者 f。
5 final關鍵字
1:定義靜態方法求圓的面積
2:定義靜態方法求圓的周長
3:發現方法中有重複的程式碼,就是PI,圓周率。
1:如果需要提高計算精度,就需要修改每個方法中圓周率。
4:描述一個變數
1:方法都是靜態的,靜態只能訪問靜態,所以變數也定義為靜態的。
public static double PI=3.14;
1:如果定義為public後,新的問題,類名.PI=300; 改變了PI的值。
2:修改為private,修改為private後進行了封裝,需要getset公共訪問方法。
3:現有的知識不能解決這樣的問題了。可以使用final
5.1 使用final
1:final關鍵字主要用於修飾類、類成員、方法、以及方法的形參。
2:final修飾成員屬性:
1:說明該成員屬性是常量,不能被修改。
public static final double PI=3.14;
1:public :訪問許可權最大
2:static :記憶體中只有一份
3:final :是一個常量
4:常量名大寫
5:必須初賦值。
2:使用類名.成員。修改該成員的值,報錯。--常量不能被修改
1:基本資料型別,final使值不變
2:物件引用,final使其引用恆定不變,無法讓其指向一個新的物件,但是物件自身卻可以被修改。
3:該關鍵字一般和static關鍵字結合使用
1:常量可以優先載入,不必等到建立物件的時候再初始化。
4:final和static可以互換位置
5:常量一般被修飾為final
3:fianl修飾類:
1:該類是最終類,不能被繼承。
1:將父類加final修飾,子類繼承,就會報錯。
2:檢視api文件發現String類是final的。Integer類也是final的
1:為了防止程式碼功能被重寫
2:該類沒有必要進行擴充套件
4:final修飾方法:
1:該方法是最終方法,不能被重寫
2:當一個類被繼承,那麼所有的非私有函式都將被繼承,如果函式不想被子類繼承並重寫可以將該函式final修飾
3:當一個類中的函式都被修飾為final時,可以將類定義為final的。
5:final關鍵字修飾形參
1:當形參被修飾為final,那麼該形參所屬的方法中不能被篡改。
2: 專案中主要用於一些只用來遍歷未知資料的函式。將未知變數宣告為final的。增強資料的安全性。