目錄
前言
Java型別匯總
整型變數-int\長整型變數-long\短整形變數-short
浮點型變數-double\float
字符型別變數-char
位元組型別變-byte
布爾型別變數-boolean
字串型別變數-String
字串拼接
字串轉義
變數的作用域
變數的命名規則
常量
字面值常量
final 關鍵字修飾的常量
型別轉換
int 和 long/double 相互賦值
int 和 boolean 相互賦值
數值提升
int 和 long 混合運算
byte 和 byte 的運算
int 和 String 之間的相互轉換
int 轉換成 String
String 轉換成 int
前言
本文主要講解:
- 掌握各種資料型別
- 變數作用域及命名和常量
- 型別轉換及數值提升
Java型別匯總
整型變數-int\長整型變數-long\短整形變數-short
- 基本語法格式:
int 變數名 = 初始值;
long 變數名 = 初始值;
short 變數名 = 初始值;
- 包裝類:Integer(依舊是整形); Long ; Short
- 示例:
int num = 10; // 定義一個整型變數
System.out.println(num);
long num = 10L; // 定義一個長整型變數, 初始值寫作 10l 也可以(小寫的 L, 不是數字1).
System.out.println(num);
short value = 0;
System.out.println(value);
注:Java 是強型別語言,10 默認是 int 型,不加 L 則等號左右型別不匹配
- 整型資料范圍:
int 型別占4位元組,資料范圍是 -2^31 ~ 2^31-1
- 如何查看:
System.out.println(Integer.MAX_VALUE); // int 的最大值 2147483648
System.out.println(Integer.MIN_VALUE); // int 的最小值-2147483648
- 長整形資料范圍:
long 型別占 8 個位元組 . 表示的資料范圍 - 2^63 - > 2^63 - 1
- 如何查看:
System.out.println(Long.MAX_VALUE);\\ 9223372036854775807
System.out.println(Long.MIN_VALUE);\\-9223372036854775807
- 短整形資料范圍:
short 占用 2 個位元組 , 表示的資料范圍是 - 32768 - > +32767
- 如何查看:
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
- 注意:
當運算的結果超出了相應型別的范圍, 就會出現溢位的情況(參考上文圓形范圍圖)
- 以int型別為例:
System.out.println(Integer.MAX_VALUE+1);// 結果為-2147483648
System.out.println(Integer.MIN_VALUE-1);// 結果為 2147483648
特別注意:
變數定義時一定要初始化,否則編譯不通過(java語言安全性高)
變數大小與平臺位數無關(java語言可移植性高)
浮點型變數-double\float
- 基本語法格:
double 變數名 = 初始值;
float 變數名 = 初始值;
- 示例:
double num = 1.0;
System.out.println(num)
float num = 1.0f; // 寫作 1.0F 也可以
System.out.println(num);
注:Java 是強型別語言,1.0 默認是 double 型,不加 f 則等號左右型別不匹配
- 輸出:
如果想規定輸出小數點多少位時使用 printf
System.out.printf("%.nlf",num);\\n表示想要輸出小數點后幾位
注意:
- Java 中的 double 占 8 個位元組;float 占四個位元組
- 當整型相除得到的是整型,如果需要得到小數點需要double型別運算
- 浮點數的存盤與整型存盤不同,java浮點數的存盤參考C語言(遵守IEEE754標準)
字符型別變數-char
- 基本格式:
char 變數名 = 初始值;
- 示例:
char ch1 = 'A';
char ch2 = '呵';
System.out.println(ch);
注:Java 中使用 單引號 + 單個字母 的形式表示字符字面值
- 字符型別資料范圍:
java中 char 型別占兩個位元組(表示的字符種類更多, 包括中文)
System.out.println(Character.MAX_VALUE); // char 的最大值'\uFFFF'
System.out.println(Character.MIN_VALUE); // char 的最小值'\u0000'
注:計算機中字符本質為整數:C語言中使用ASCII表示字符, Java中使用Unicode表示字符
- 注意:
當有編碼有中文時需要在編譯執行 javac 時加上 -encoding UTF-8 (否則會編譯錯誤)
位元組型別變-byte
- 基本語法格式:
byte 變數名 = 初始值;
- 示例:
byte value = 0;
System.out.println(value);
注:位元組型別表示的也是整數,只占一個位元組, 表示范圍較小 ( -128 -> 127 )(與char不同)
當位元組等小于4個位元組的型別運算時會發生整型提升
布爾型別變數-boolean
- 基本語法格式:
boolean 變數名 = 初始值;//初始值只能是true\flase
- 示例:
boolean value = true;
System.out.println(value);
- 注意:
- boolean 型別的變數只有兩種取值, true 表示真, false 表示假(與C語言不同)
- Java 中 boolean 型別和 int 不能相互轉換(型別不兼容),不存在 1 表示 true, 0 表示 false 這樣的用法
- boolean 型別有些 JVM 的實作是占 1 個位元組, 有些是占 1 個位元位, 這個沒有明確規定
字串型別變數-String
String不是基本型別,是參考型別
- 基本語法格式:
String 變數名 = "初始值";
- 示例:
String name = "zhangsan";
System.out.println(name);
注:Java 使用 雙引號 + 若干字符 的方式表示字串字面值
name存放的是字串所占的那片空間的地址
字串拼接
字串“+”任意型別的資料結果是字串
- 示例:
//字串與字串拼接
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
輸出結果:hello world
//字串和整數進行拼接
int a = 10;
System.out.println("a = " + a);
輸出結果:a=10
注意:當想要先計算資料時可以加上括號
- 示例:
int a = 10;
int b = 20;
System.out.println("a+b = " + (a + b));
輸出結果:a+b=30
字串轉義
字串中的一些特定的不太方便直接表示的字符需要進行轉義(同C語言)
- 示例:
String str = "Hello \"xxx\" !";
System.out.println(str);
輸出結果:Hello "xxx" !
- 特殊的轉義字符:
| 特殊字符的轉義序列 | ||
|---|---|---|
| 轉義字符 | 解釋 | Unicode 值 |
| \b | 退格 | \u0008 |
| \t | 制表 | \u0009 |
| \n | 換行 | \u000a |
| \r | 回車 | \u000d |
| \ ‘’ | 雙引號 | \u0022 |
| \ ’ | 單引號 | \u0027 |
| \ \ | 反斜杠 | \u005c |
變數的作用域
定義:指變數能生效的范圍,一般是變數定義所在的代碼塊 (大括號)(與C語言一致)
變數的命名規則
- 硬性指標:
1. 一個變數名只能包含數字, 字母, 下劃線2. 數字不能開頭3. 變數名是大小寫敏感的. 即 num 和 Num 是兩個不同的變數注意: 雖然語法上也允許使用中文/美元符($)命名變數, 但 強烈 不推薦這樣做
- 軟性指標:
1. 變數命名要具有描述性, 見名知意2. 變數名不宜使用拼音(但是不絕對)3. 變數名的詞性推薦使用名詞4. 變數命名推薦 小駝峰命名法, 當一個變數名由多個單詞構成的時候, 除了第一個單詞之外, 其他單詞首字母都大寫
常量
定義:指的是運行時型別不能發生改變
字面值常量
10 // int 字面值常量(十進制)
010 // int 字面值常量(八進制) 由數字 0 開頭. 010 也就是十進制的 8
0x10 // int 字面值常量(十六進制) 由數字 0x 開頭. 0x10 也就是十進制的 16
10L // long 字面值常量. 也可以寫作 10l (小寫的L)
1.0 // double 字面值常量. 也可以寫作 1.0d 或者 1.0D
1.5e2 // double 字面值常量. 科學計數法表示. 相當于 1.5 * 10^2
1.0f // float 字面值常量, 也可以寫作 1.0F
true // boolen 字面值常量, 同樣的還有 false
'a' // char 字面值常量, 單引號中只能有一個字符
"abc" // String 字面值常量, 雙引號中可以有多個字符
final 關鍵字修飾的常量
final int a = 10;
a = 20; // 編譯出錯. 提示 無法為最終變數a分配值
注:常量不能在程式運行程序中發生修改
型別轉換
int 和 long/double 相互賦值
隱性型別轉換小范圍型別賦值給大范圍型別(不會報錯)顯性型別轉換大范圍型別賦值給小范圍型別(會報錯)
- 示例:
int a = 10;
long b = 20;
a = b; // 編譯出錯, 提示可能會損失精度
b = a; // 編譯通過
注:使用強制型別轉化的方式可以將 double 型別強制轉成 int,但是可能精度缺失
int 和 boolean 相互賦值
- 示例:
int a = 10;
boolean b = true;
b = a; // 編譯出錯, 提示不兼容的型別
a = b; // 編譯出錯, 提示不兼容的型別
注:int 和 boolean互不相干,互不相干的型別之間無法強轉
1. 不同數字型別的變數之間賦值, 表示范圍更小的型別能隱式轉換成范圍較大的型別2. 如果需要把范圍大的型別賦值給范圍小的, 需要強制型別轉換, 但是可能精度丟失3. 將一個字面值常量進行賦值的時候, Java 會自動針對數字范圍進行檢查
數值提升
int 和 long 混合運算
int a = 10;
long b = 20;
int c = a + b; // 編譯出錯, 提示將 long 轉成 int 會丟失精度
long d = a + b; // 編譯通過
結論:
當 int 和 long 混合運算的時候 , int 會提升成 long , 得到的結果是 long 型別 , 需要 long 型別接收如果非要用 int 來接收結果 , 就需要使用強制型別轉換
byte 和 byte 的運算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c); // 編譯報錯
解釋:計算時先將a和b都提升成int, 得到的結果也是int, 需要int型接收(或者強制型別轉化)
結論:
當小于4位元組型別資料計算時需考慮整型提升
int 和 String 之間的相互轉換
int 轉換成 String
int num = 10;
String str1 = num + "";
//String str2 = String.valueOf(num);
String 轉換成 int
示例:
String str = "100";
int num = Integer.parseInt(str);
//int num = Integer.valueOf(str);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/296566.html
標籤:java
上一篇:收藏這篇兩萬字總結,??Docker??這一塊保證你拿捏的死死的,我說的,耶穌都不行
下一篇:cgb2107-day05

