一篇文章帶你了解JavaSE的數(shù)據(jù)類型
前言
本文主要講解:
掌握各種數(shù)據(jù)類型
變量作用域及命名和常量
類型轉(zhuǎn)換及數(shù)值提升
Java類型匯總
整型變量-int\長整型變量-long\短整形變量-short
基本語法格式:
int 變量名 = 初始值; long 變量名 = 初始值; short 變量名 = 初始值;
- 包裝類:Integer(依舊是整形); Long ; Short
- 示例:
int num = 10; // 定義一個整型變量 System.out.println(num); long num = 10L; // 定義一個長整型變量, 初始值寫作 10l 也可以(小寫的 L, 不是數(shù)字1). System.out.println(num); short value = 0; System.out.println(value);
注:Java 是強(qiáng)類型語言,10 默認(rèn)是 int 型,不加 L 則等號左右類型不匹配
- 整型數(shù)據(jù)范圍:
int 類型占4字節(jié),數(shù)據(jù)范圍是 -2^31 ~ 2^31-1

- 如何查看:
System.out.println(Integer.MAX_VALUE); // int 的最大值 2147483648 System.out.println(Integer.MIN_VALUE); // int 的最小值-2147483648
- 長整形數(shù)據(jù)范圍:
long 類型占 8 個字節(jié) . 表示的數(shù)據(jù)范圍 - 2^63 - > 2^63 - 1
- 如何查看:
System.out.println(Long.MAX_VALUE);\\ 9223372036854775807 System.out.println(Long.MIN_VALUE);\\-9223372036854775807
- 短整形數(shù)據(jù)范圍:
short 占用 2 個字節(jié) , 表示的數(shù)據(jù)范圍是 - 32768 - > +32767
- 如何查看:
System.out.println(Short.MAX_VALUE); System.out.println(Short.MIN_VALUE);
- 注意:
當(dāng)運(yùn)算的結(jié)果超出了相應(yīng)類型的范圍, 就會出現(xiàn)溢出的情況(參考上文圓形范圍圖)
- 以int類型為例:
System.out.println(Integer.MAX_VALUE+1);// 結(jié)果為-2147483648 System.out.println(Integer.MIN_VALUE-1);// 結(jié)果為 2147483648
特別注意:
變量定義時一定要初始化,否則編譯不通過(java語言安全性高)
變量大小與平臺位數(shù)無關(guān)(java語言可移植性高)
浮點(diǎn)型變量-double\float
- 基本語法格:
double 變量名 = 初始值; float 變量名 = 初始值;
- 示例:
double num = 1.0; System.out.println(num) float num = 1.0f; // 寫作 1.0F 也可以 System.out.println(num);
注:Java 是強(qiáng)類型語言,1.0 默認(rèn)是 double 型,不加 f 則等號左右類型不匹配
- 輸出:
如果想規(guī)定輸出小數(shù)點(diǎn)多少位時使用 printf
System.out.printf("%.nlf",num);\\n表示想要輸出小數(shù)點(diǎn)后幾位
注意:
1.Java 中的 double 占 8 個字節(jié);float 占四個字節(jié)
2.當(dāng)整型相除得到的是整型,如果需要得到小數(shù)點(diǎn)需要double類型運(yùn)算
3.浮點(diǎn)數(shù)的存儲與整型存儲不同,java浮點(diǎn)數(shù)的存儲參考C語言(遵守IEEE754標(biāo)準(zhǔn))
字符類型變量-char
- 基本格式:
char 變量名 = 初始值;
- 示例:
char ch1 = 'A'; char ch2 = '呵'; System.out.println(ch);
注:Java 中使用 單引號 + 單個字母 的形式表示字符字面值
- 字符類型數(shù)據(jù)范圍:
java中 char 類型占兩個字節(jié)(表示的字符種類更多, 包括中文)
System.out.println(Character.MAX_VALUE); // char 的最大值'\uFFFF' System.out.println(Character.MIN_VALUE); // char 的最小值'\u0000'
注:計(jì)算機(jī)中字符本質(zhì)為整數(shù):C語言中使用ASCII表示字符, Java中使用Unicode表示字符
- 注意:
當(dāng)有編碼有中文時需要在編譯執(zhí)行 javac 時加上 -encoding UTF-8 (否則會編譯錯誤)
字節(jié)類型變-byte
- 基本語法格式:
byte 變量名 = 初始值;
- 示例:
byte value = 0; System.out.println(value);
注:字節(jié)類型表示的也是整數(shù),只占一個字節(jié), 表示范圍較小 ( -128 -> 127 )(與char不同)
當(dāng)字節(jié)等小于4個字節(jié)的類型運(yùn)算時會發(fā)生整型提升
布爾類型變量-boolean
- 基本語法格式:
boolean 變量名 = 初始值;//初始值只能是true\flase
- 示例:
boolean value = true; System.out.println(value);
- 注意:
1.boolean 類型的變量只有兩種取值, true 表示真, false 表示假(與C語言不同)
2.Java 中 boolean 類型和 int 不能相互轉(zhuǎn)換(類型不兼容),不存在 1 表示 true, 0 表示 false 這樣的用法
3.boolean 類型有些 JVM 的實(shí)現(xiàn)是占 1 個字節(jié), 有些是占 1 個比特位, 這個沒有明確規(guī)定
字符串類型變量-String
String不是基本類型,是引用類型
- 基本語法格式:
String 變量名 = "初始值";
- 示例:
String name = "zhangsan"; System.out.println(name);
注:Java 使用 雙引號 + 若干字符 的方式表示字符串字面值
name存放的是字符串所占的那片空間的地址
字符串拼接
字符串“+”任意類型的數(shù)據(jù)結(jié)果是字符串
- 示例:
//字符串與字符串拼接
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
輸出結(jié)果:hello world
//字符串和整數(shù)進(jìn)行拼接
int a = 10;
System.out.println("a = " + a);
輸出結(jié)果:a=10
注意:當(dāng)想要先計(jì)算數(shù)據(jù)時可以加上括號
- 示例:
int a = 10;
int b = 20;
System.out.println("a+b = " + (a + b));
輸出結(jié)果:a+b=30
字符串轉(zhuǎn)義
字符串中的一些特定的不太方便直接表示的字符需要進(jìn)行轉(zhuǎn)義(同C語言)
- 示例:
String str = "Hello \"xxx\" !"; System.out.println(str); 輸出結(jié)果:Hello "xxx" !
- 特殊的轉(zhuǎn)義字符:
| 特殊字符的轉(zhuǎn)義序列 | ||
|---|---|---|
| 轉(zhuǎn)義字符 | 解釋 | Unicode 值 |
| \b | 退格 | \u0008 |
| \t | 制表 | \u0009 |
| \n | 換行 | \u000a |
| \r | 回車 | \u000d |
| \ ‘' | 雙引號 | \u0022 |
| \ ' | 單引號 | \u0027 |
| \ \ | 反斜杠 | \u005c |
變量的作用域
定義:指變量能生效的范圍,
一般是變量定義所在的代碼塊 (大括號)(與C語言一致)
變量的命名規(guī)則
- 硬性指標(biāo):
1. 一個變量名只能包含數(shù)字, 字母, 下劃線
2. 數(shù)字不能開頭
3. 變量名是大小寫敏感的. 即 num 和 Num 是兩個不同的變量
注意: 雖然語法上也允許使用中文/美元符($)命名變量, 但 強(qiáng)烈 不推薦這樣做
- 軟性指標(biāo):
1. 變量命名要具有描述性, 見名知意
2. 變量名不宜使用拼音(但是不絕對)
3. 變量名的詞性推薦使用名詞
4. 變量命名推薦 小駝峰命名法, 當(dāng)一個變量名由多個單詞構(gòu)成的時候, 除了第一個單詞之外, 其他單詞首字母都大寫
常量
定義:指的是運(yùn)行時類型不能發(fā)生改變
字面值常量
10 // int 字面值常量(十進(jìn)制) 010 // int 字面值常量(八進(jìn)制) 由數(shù)字 0 開頭. 010 也就是十進(jìn)制的 8 0x10 // int 字面值常量(十六進(jìn)制) 由數(shù)字 0x 開頭. 0x10 也就是十進(jìn)制的 16 10L // long 字面值常量. 也可以寫作 10l (小寫的L) 1.0 // double 字面值常量. 也可以寫作 1.0d 或者 1.0D 1.5e2 // double 字面值常量. 科學(xué)計(jì)數(shù)法表示. 相當(dāng)于 1.5 * 10^2 1.0f // float 字面值常量, 也可以寫作 1.0F true // boolen 字面值常量, 同樣的還有 false 'a' // char 字面值常量, 單引號中只能有一個字符 "abc" // String 字面值常量, 雙引號中可以有多個字符
final 關(guān)鍵字修飾的常量
final int a = 10; a = 20; // 編譯出錯. 提示 無法為最終變量a分配值
注:常量不能在程序運(yùn)行過程中發(fā)生修改
類型轉(zhuǎn)換
int 和 long/double 相互賦值
隱性類型轉(zhuǎn)換
小范圍類型賦值給大范圍類型(不會報(bào)錯)
顯性類型轉(zhuǎn)換
大范圍類型賦值給小范圍類型(會報(bào)錯)
- 示例:
int a = 10; long b = 20; a = b; // 編譯出錯, 提示可能會損失精度 b = a; // 編譯通過
注:使用強(qiáng)制類型轉(zhuǎn)化的方式可以將 double 類型強(qiáng)制轉(zhuǎn)成 int,但是可能精度缺失
int 和 boolean 相互賦值 示例:
int a = 10; boolean b = true; b = a; // 編譯出錯, 提示不兼容的類型 a = b; // 編譯出錯, 提示不兼容的類型
注:int 和 boolean互不相干,互不相干的類型之間無法強(qiáng)轉(zhuǎn)
總結(jié):
1. 不同數(shù)字類型的變量之間賦值, 表示范圍更小的類型能隱式轉(zhuǎn)換成范圍較大的類型
2. 如果需要把范圍大的類型賦值給范圍小的, 需要強(qiáng)制類型轉(zhuǎn)換, 但是可能精度丟失
3. 將一個字面值常量進(jìn)行賦值的時候, Java 會自動針對數(shù)字范圍進(jìn)行檢查
數(shù)值提升
int 和 long 混合運(yùn)算
int a = 10; long b = 20; int c = a + b; // 編譯出錯, 提示將 long 轉(zhuǎn)成 int 會丟失精度 long d = a + b; // 編譯通過
結(jié)論:
當(dāng) int 和 long 混合運(yùn)算的時候 , int 會提升成 long , 得到的結(jié)果是 long 類型 , 需要 long 類型接收
如果非要用 int 來接收結(jié)果 , 就需要使用強(qiáng)制類型轉(zhuǎn)換
byte 和 byte 的運(yùn)算
byte a = 10; byte b = 20; byte c = a + b; System.out.println(c); // 編譯報(bào)錯
解釋:計(jì)算時先將a和b都提升成int, 得到的結(jié)果也是int, 需要int型接收(或者強(qiáng)制類型轉(zhuǎn)化)
結(jié)論:
當(dāng)小于4字節(jié)類型數(shù)據(jù)計(jì)算時需考慮整型提升
int 和 String 之間的相互轉(zhuǎn)換
int 轉(zhuǎn)換成 String
示例:
int num = 10; String str1 = num + ""; //String str2 = String.valueOf(num);
String 轉(zhuǎn)換成 int
示例:
String str = "100"; int num = Integer.parseInt(str); //int num = Integer.valueOf(str);
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java設(shè)計(jì)模式之命令模式詳細(xì)解析
這篇文章主要介紹了Java設(shè)計(jì)模式之命令模式詳細(xì)解析,命令模式將請求封裝成對象,以便使用不同的請求、隊(duì)列或者日志來參數(shù)化其他對象,同時也支持可撤銷的操作,需要的朋友可以參考下2024-01-01
Spring整合Quartz Job以及Spring Task的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Spring整合Quartz Job以及Spring Task的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
SpringMVC中@controllerAdvice注解的詳細(xì)解釋
剛接觸SpringMVC應(yīng)該很少會見到這個注解,其實(shí)它的作用非常大,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@controllerAdvice注解的相關(guān)資料,需要的朋友可以參考下2022-02-02
Java HttpClient實(shí)現(xiàn)socks代理的示例代碼
這篇文章主要介紹了Java HttpClient 實(shí)現(xiàn) socks 代理的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11
springmvc+Hibernate+JPA(混合事務(wù))解讀
在Spring項(xiàng)目中,Spring Data JPA作為一種持久層框架,因其簡化數(shù)據(jù)庫操作而受到青睞,但在將其引入使用Hibernate的舊項(xiàng)目時,可能會遇到事務(wù)處理問題,解決方案包括配置兩種事務(wù)管理器:Hibernate事務(wù)管理器和JPA事務(wù)管理器2024-09-09
Idea打包springboot項(xiàng)目沒有.original文件解決方案
這篇文章主要介紹了Idea打包springboot項(xiàng)目沒有.original文件解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07


