![java基本類型_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/319da0ef-700d-4435-8eba-78ab72d24b85/319da0ef-700d-4435-8eba-78ab72d24b851.gif)
![java基本類型_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/319da0ef-700d-4435-8eba-78ab72d24b85/319da0ef-700d-4435-8eba-78ab72d24b852.gif)
![java基本類型_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/319da0ef-700d-4435-8eba-78ab72d24b85/319da0ef-700d-4435-8eba-78ab72d24b853.gif)
![java基本類型_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/319da0ef-700d-4435-8eba-78ab72d24b85/319da0ef-700d-4435-8eba-78ab72d24b854.gif)
![java基本類型_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/319da0ef-700d-4435-8eba-78ab72d24b85/319da0ef-700d-4435-8eba-78ab72d24b855.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java基本類型,或者叫做內(nèi)置類型,是JAVA中不同于類的特殊類型。它們是我們編程中使用最頻繁的類型,因此面試題中也總少不了它們的身影,在這篇文章中我們將從面試中??嫉膸讉€(gè)方面來(lái)回顧一下與基本類型相關(guān)的知識(shí)。 基本類型共有九種,它們分別都有相對(duì)應(yīng)的包裝類。對(duì)于基本類型void以及它的包裝類java.lang.Void,我們都無(wú)法直接進(jìn)行操作?;绢愋涂梢苑譃槿?,字符類型char,布爾類型boolean以及數(shù)值類型byte、short、int、long、float、double。數(shù)值類型又可以分為整數(shù)類型byte、short、int、long和浮點(diǎn)數(shù)類型float、double。JAVA中的數(shù)
2、值類型不存在無(wú)符號(hào)的,它們的取值范圍是固定的,不會(huì)隨著機(jī)器硬件環(huán)境或者操作系統(tǒng)的改變而改變。對(duì)于數(shù)值類型的基本類型的取值范圍,我們無(wú)需強(qiáng)制去記憶,因?yàn)樗鼈兊闹刀家呀?jīng)以常量的形式定義在對(duì)應(yīng)的包裝類中了。請(qǐng)看下面的例子:Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. / byte 4. System.out.println(基本類型:byte 二進(jìn)制位數(shù): + Byte.SIZE); 5. System.out.println(包裝類:java.lang.Byte); 6. Sy
3、stem.out.println(最小值:Byte.MIN_VALUE= + Byte.MIN_VALUE); 7. System.out.println(最大值:Byte.MAX_VALUE= + Byte.MAX_VALUE); 8. System.out.println(); 9.10. / short 11. System.out.println(基本類型:short 二進(jìn)制位數(shù): + Short.SIZE); 12. System.out.println(包裝類:java.lang.Short); 13. System.out.println(最小值:Short.MIN_VALUE=
4、 + Short.MIN_VALUE); 14. System.out.println(最大值:Short.MAX_VALUE= + Short.MAX_VALUE); 15. System.out.println(); 16.17. / int 18. System.out.println(基本類型:int 二進(jìn)制位數(shù): + Integer.SIZE); 19. System.out.println(包裝類:java.lang.Integer); 20. System.out.println(最小值:Integer.MIN_VALUE= + Integer.MIN_VALUE); 21. S
5、ystem.out.println(最大值:Integer.MAX_VALUE= + Integer.MAX_VALUE); 22. System.out.println(); 23.24. / long 25. System.out.println(基本類型:long 二進(jìn)制位數(shù): + Long.SIZE); 26. System.out.println(包裝類:java.lang.Long); 27. System.out.println(最小值:Long.MIN_VALUE= + Long.MIN_VALUE); 28. System.out.println(最大值:Long.MAX_V
6、ALUE= + Long.MAX_VALUE); 29. System.out.println(); 30.31. / float 32. System.out.println(基本類型:float 二進(jìn)制位數(shù): + Float.SIZE); 33. System.out.println(包裝類:java.lang.Float); 34. System.out.println(最小值:Float.MIN_VALUE= + Float.MIN_VALUE); 35. System.out.println(最大值:Float.MAX_VALUE= + Float.MAX_VALUE); 36. S
7、ystem.out.println(); 37.38. / double 39. System.out.println(基本類型:double 二進(jìn)制位數(shù): + Double.SIZE); 40. System.out.println(包裝類:java.lang.Double); 41. System.out.println(最小值:Double.MIN_VALUE= + Double.MIN_VALUE); 42. System.out.println(最大值:Double.MAX_VALUE= + Double.MAX_VALUE); 43. System.out.println(); 4
8、4.45. / char 46. System.out.println(基本類型:char 二進(jìn)制位數(shù): + Character.SIZE); 47. System.out.println(包裝類:java.lang.Character); 48. / 以數(shù)值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺(tái) 49. System.out.println(最小值:Character.MIN_VALUE= 50. + (int) Character.MIN_VALUE); 51. / 以數(shù)值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺(tái) 52. Sys
9、tem.out.println(最大值:Character.MAX_VALUE= 53. + (int) Character.MAX_VALUE); 54. 55. Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. / byte 4. System.out.println(基本類型:byte 二進(jìn)制位數(shù): + Byte.SIZE); 5. System.out.println(包裝類:java.lang.Byte); 6. System.out.println(最小值:Byte
10、.MIN_VALUE= + Byte.MIN_VALUE); 7. System.out.println(最大值:Byte.MAX_VALUE= + Byte.MAX_VALUE); 8. System.out.println(); 9.10. / short 11. System.out.println(基本類型:short 二進(jìn)制位數(shù): + Short.SIZE); 12. System.out.println(包裝類:java.lang.Short); 13. System.out.println(最小值:Short.MIN_VALUE= + Short.MIN_VALUE); 14.
11、System.out.println(最大值:Short.MAX_VALUE= + Short.MAX_VALUE); 15. System.out.println(); 16.17. / int 18. System.out.println(基本類型:int 二進(jìn)制位數(shù): + Integer.SIZE); 19. System.out.println(包裝類:java.lang.Integer); 20. System.out.println(最小值:Integer.MIN_VALUE= + Integer.MIN_VALUE); 21. System.out.println(最大值:Int
12、eger.MAX_VALUE= + Integer.MAX_VALUE); 22. System.out.println(); 23.24. / long 25. System.out.println(基本類型:long 二進(jìn)制位數(shù): + Long.SIZE); 26. System.out.println(包裝類:java.lang.Long); 27. System.out.println(最小值:Long.MIN_VALUE= + Long.MIN_VALUE); 28. System.out.println(最大值:Long.MAX_VALUE= + Long.MAX_VALUE);
13、29. System.out.println(); 30.31. / float 32. System.out.println(基本類型:float 二進(jìn)制位數(shù): + Float.SIZE); 33. System.out.println(包裝類:java.lang.Float); 34. System.out.println(最小值:Float.MIN_VALUE= + Float.MIN_VALUE); 35. System.out.println(最大值:Float.MAX_VALUE= + Float.MAX_VALUE); 36. System.out.println(); 37.3
14、8. / double 39. System.out.println(基本類型:double 二進(jìn)制位數(shù): + Double.SIZE); 40. System.out.println(包裝類:java.lang.Double); 41. System.out.println(最小值:Double.MIN_VALUE= + Double.MIN_VALUE); 42. System.out.println(最大值:Double.MAX_VALUE= + Double.MAX_VALUE); 43. System.out.println(); 44.45. / char 46. System.o
15、ut.println(基本類型:char 二進(jìn)制位數(shù): + Character.SIZE); 47. System.out.println(包裝類:java.lang.Character); 48. / 以數(shù)值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺(tái) 49. System.out.println(最小值:Character.MIN_VALUE= 50. + (int) Character.MIN_VALUE); 51. / 以數(shù)值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺(tái) 52. System.out.println(最大值:Chara
16、cter.MAX_VALUE= 53. + (int) Character.MAX_VALUE); 54. 55. public class PrimitiveTypeTest public static void main(String args) / byteSystem.out.println(基本類型:byte 二進(jìn)制位數(shù): + Byte.SIZE);System.out.println(包裝類:java.lang.Byte);System.out.println(最小值:Byte.MIN_VALUE= + Byte.MIN_VALUE);System.out.println(最大值:
17、Byte.MAX_VALUE= + Byte.MAX_VALUE);System.out.println();/ shortSystem.out.println(基本類型:short 二進(jìn)制位數(shù): + Short.SIZE);System.out.println(包裝類:java.lang.Short);System.out.println(最小值:Short.MIN_VALUE= + Short.MIN_VALUE);System.out.println(最大值:Short.MAX_VALUE= + Short.MAX_VALUE);System.out.println();/ intSys
18、tem.out.println(基本類型:int 二進(jìn)制位數(shù): + Integer.SIZE);System.out.println(包裝類:java.lang.Integer);System.out.println(最小值:Integer.MIN_VALUE= + Integer.MIN_VALUE);System.out.println(最大值:Integer.MAX_VALUE= + Integer.MAX_VALUE);System.out.println();/ longSystem.out.println(基本類型:long 二進(jìn)制位數(shù): + Long.SIZE);System.o
19、ut.println(包裝類:java.lang.Long);System.out.println(最小值:Long.MIN_VALUE= + Long.MIN_VALUE);System.out.println(最大值:Long.MAX_VALUE= + Long.MAX_VALUE);System.out.println();/ floatSystem.out.println(基本類型:float 二進(jìn)制位數(shù): + Float.SIZE);System.out.println(包裝類:java.lang.Float);System.out.println(最小值:Float.MIN_VAL
20、UE= + Float.MIN_VALUE);System.out.println(最大值:Float.MAX_VALUE= + Float.MAX_VALUE);System.out.println();/ doubleSystem.out.println(基本類型:double 二進(jìn)制位數(shù): + Double.SIZE);System.out.println(包裝類:java.lang.Double);System.out.println(最小值:Double.MIN_VALUE= + Double.MIN_VALUE);System.out.println(最大值:Double.MAX_
21、VALUE= + Double.MAX_VALUE);System.out.println();/ charSystem.out.println(基本類型:char 二進(jìn)制位數(shù): + Character.SIZE);System.out.println(包裝類:java.lang.Character);/ 以數(shù)值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺(tái)System.out.println(最小值:Character.MIN_VALUE=+ (int) Character.MIN_VALUE);/ 以數(shù)值形式而不是字符形式將Character.MAX_VALUE輸出
22、到控制臺(tái)System.out.println(最大值:Character.MAX_VALUE=+ (int) Character.MAX_VALUE);運(yùn)行結(jié)果:1. 基本類型:byte 二進(jìn)制位數(shù):8 2. 包裝類:java.lang.Byte 3. 最小值:Byte.MIN_VALUE=-128 4. 最大值:Byte.MAX_VALUE=127 5. 基本類型:short 二進(jìn)制位數(shù):16 6. 包裝類:java.lang.Short 7. 最小值:Short.MIN_VALUE=-32768 8. 最大值:Short.MAX_VALUE=32767 9. 基本類型:int 二進(jìn)制位數(shù):
23、32 10. 包裝類:java.lang.Integer 11. 最小值:Integer.MIN_VALUE=-2147483648 12. 最大值:Integer.MAX_VALUE=2147483647 13. 基本類型:long 二進(jìn)制位數(shù):64 14. 包裝類:java.lang.Long 15. 最小值:Long.MIN_VALUE=-9223372036854775808 16. 最大值:Long.MAX_VALUE=9223372036854775807 17. 基本類型:float 二進(jìn)制位數(shù):32 18. 包裝類:java.lang.Float 19. 最小值:Float.M
24、IN_VALUE=1.4E-45 20. 最大值:Float.MAX_VALUE=3.4028235E38 21. 基本類型:double 二進(jìn)制位數(shù):64 22. 包裝類:java.lang.Double 23. 最小值:Double.MIN_VALUE=4.9E-324 24. 最大值:Double.MAX_VALUE=1.7976931348623157E308 25. 基本類型:char 二進(jìn)制位數(shù):16 26. 包裝類:java.lang.Character 27. 最小值:Character.MIN_VALUE=0 28. 最大值:Character.MAX_VALUE=65535
25、 Float和Double的最小值和最大值都是以科學(xué)記數(shù)法的形式輸出的,結(jié)尾的“E+數(shù)字”表示E之前的數(shù)字要乘以10的多少倍。比如3.14E3就是3.141000=3140,3.14E-3就是3.14/1000=0.00314。 大家將運(yùn)行結(jié)果與上表信息仔細(xì)比較就會(huì)發(fā)現(xiàn)float、double兩種類型的最小值與Float.MIN_VALUE、Double.MIN_VALUE的值并不相同,這是為什么呢?實(shí)際上Float.MIN_VALUE和Double.MIN_VALUE分別指的是float和double類型所能表示的最小正數(shù)。也就是說(shuō)存在這樣一種情況,0到Float.MIN_VALUE之間的值
26、float類型無(wú)法表示,0到Double.MIN_VALUE之間的值double類型無(wú)法表示。這并沒(méi)有什么好奇怪的,因?yàn)檫@些范圍內(nèi)的數(shù)值超出了它們的精度范圍。 基本類型存儲(chǔ)在棧中,因此它們的存取速度要快于存儲(chǔ)在堆中的對(duì)應(yīng)包裝類的實(shí)例對(duì)象。從Java5.0(1.5)開(kāi)始,JAVA虛擬機(jī)(Java Virtual Machine)可以完成基本類型和它們對(duì)應(yīng)包裝類之間的自動(dòng)轉(zhuǎn)換。因此我們?cè)谫x值、參數(shù)傳遞以及數(shù)學(xué)運(yùn)算的時(shí)候像使用基本類型一樣使用它們的包裝類,但這并不意味著你可以通過(guò)基本類型調(diào)用它們的包裝類才具有的方法。另外,所有基本類型(包括void)的包裝類都使用了final修飾,因此我們無(wú)法繼承它
27、們擴(kuò)展新的類,也無(wú)法重寫它們的任何方法。 各種數(shù)值類型之間的賦值與轉(zhuǎn)換遵循什么規(guī)律呢?我們來(lái)看下面這個(gè)例子:Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. / 給byte類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 4. byte byte_a = 1; 5. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 6. / byte byte_b = 1000; 7. / 把一個(gè)long型值賦值給byte型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出byte類型的取值范圍 8. / byt
28、e byte_c = 1L; 9.10. / 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 11. short short_a = 1; 12. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 13. / short short_b = 70000; 14. / 把一個(gè)long型值賦值給short型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍 15. / byte short_c = 1L; 16.17. / 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 18. int int_a = 1; 19. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 20.
29、/ int int_b = 2200000000; 21. / 把一個(gè)long型值賦值給int型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍 22. / int int_c = 1L; 23.24. / 可以把一個(gè)int型值直接賦值給long型變量,數(shù)字后無(wú)需后綴標(biāo)識(shí) 25. long long_a = 1; 26. / 如果給long型變量賦予的值超出了int型值的范圍,數(shù)字后必須加L(不區(qū)分大小寫)標(biāo)識(shí) 27. long long_b = 2200000000L; 28. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 29. / long long_c = 9300
30、000000000000000L; 30.31. / 可以把一個(gè)int型值直接賦值給float型變量 32. float float_a = 1; 33. / 可以把一個(gè)long型值直接賦值給float型變量 34. float float_b = 1L; 35. / 沒(méi)有F(不區(qū)分大小寫)后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double型的,不能將它直接賦值給float型變量 36. / float float_c = 1.0; 37. / float型數(shù)值需要有一個(gè)F(不區(qū)分大小寫)后綴標(biāo)識(shí) 38. float float_d = 1.0F; 39. / 把一個(gè)double型值賦值給float型變量,編
31、譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出float類型的取值范圍 40. / float float_e = 1.0D; 41. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 42. / float float_f = 3.5000000E38F; 43.44. / 可以把一個(gè)int型值直接賦值給double型變量 45. double double_a = 1; 46. / 可以把一個(gè)long型值直接賦值給double型變量 47. double double_b = 1L; 48. / 可以把一個(gè)float型值直接賦值給double型變量 49. double double_c = 1F;
32、 50. / 不帶后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double類型的,可以直接賦值 51. double double_d = 1.0; 52. / 也可以給數(shù)字增加一個(gè)D(不區(qū)分大小寫)后綴標(biāo)識(shí),明確標(biāo)出它是double類型的 53. double double_e = 1.0D; 54. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 55. / double double_f = 1.8000000000000000E308D; 56.57. / 把一個(gè)double型值賦值給一個(gè)byte類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出byte類型的取值范圍 58. / byte byte_d =
33、 1.0D; 59. / 把一個(gè)double型值賦值給一個(gè)short類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍 60. / short short_d = 1.0D; 61. / 把一個(gè)double型值賦值給一個(gè)int類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍 62. / int int_d = 1.0D; 63. / 把一個(gè)double型值賦值給一個(gè)long類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出long類型的取值范圍 64. / long long_d = 1.0D; 65.66. / 可以用字符初始化一個(gè)char型變量 67. char ch
34、ar_a = a; 68. / 也可以用一個(gè)int型數(shù)值初始化char型變量 69. char char_b = 1; 70. / 把一個(gè)long型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍 71. / char char_c = 1L; 72. / 把一個(gè)float型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍 73. / char char_d = 1.0F; 74. / 把一個(gè)double型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍 75. / char char_
35、e = 1.0D; 76. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 77. / char char_f = 70000; 78. 79. Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. / 給byte類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 4. byte byte_a = 1; 5. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 6. / byte byte_b = 1000; 7. / 把一個(gè)long型值賦值給byte型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)
36、有超出byte類型的取值范圍 8. / byte byte_c = 1L; 9.10. / 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 11. short short_a = 1; 12. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 13. / short short_b = 70000; 14. / 把一個(gè)long型值賦值給short型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍 15. / byte short_c = 1L; 16.17. / 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí) 18. int int_a = 1; 19. / 編譯器會(huì)做范圍
37、檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 20. / int int_b = 2200000000; 21. / 把一個(gè)long型值賦值給int型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍 22. / int int_c = 1L; 23.24. / 可以把一個(gè)int型值直接賦值給long型變量,數(shù)字后無(wú)需后綴標(biāo)識(shí) 25. long long_a = 1; 26. / 如果給long型變量賦予的值超出了int型值的范圍,數(shù)字后必須加L(不區(qū)分大小寫)標(biāo)識(shí) 27. long long_b = 2200000000L; 28. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 2
38、9. / long long_c = 9300000000000000000L; 30.31. / 可以把一個(gè)int型值直接賦值給float型變量 32. float float_a = 1; 33. / 可以把一個(gè)long型值直接賦值給float型變量 34. float float_b = 1L; 35. / 沒(méi)有F(不區(qū)分大小寫)后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double型的,不能將它直接賦值給float型變量 36. / float float_c = 1.0; 37. / float型數(shù)值需要有一個(gè)F(不區(qū)分大小寫)后綴標(biāo)識(shí) 38. float float_d = 1.0F; 39. / 把
39、一個(gè)double型值賦值給float型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出float類型的取值范圍 40. / float float_e = 1.0D; 41. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 42. / float float_f = 3.5000000E38F; 43.44. / 可以把一個(gè)int型值直接賦值給double型變量 45. double double_a = 1; 46. / 可以把一個(gè)long型值直接賦值給double型變量 47. double double_b = 1L; 48. / 可以把一個(gè)float型值直接賦值給double型變量 49
40、. double double_c = 1F; 50. / 不帶后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double類型的,可以直接賦值 51. double double_d = 1.0; 52. / 也可以給數(shù)字增加一個(gè)D(不區(qū)分大小寫)后綴標(biāo)識(shí),明確標(biāo)出它是double類型的 53. double double_e = 1.0D; 54. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 55. / double double_f = 1.8000000000000000E308D; 56.57. / 把一個(gè)double型值賦值給一個(gè)byte類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出byte類型的取
41、值范圍 58. / byte byte_d = 1.0D; 59. / 把一個(gè)double型值賦值給一個(gè)short類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍 60. / short short_d = 1.0D; 61. / 把一個(gè)double型值賦值給一個(gè)int類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍 62. / int int_d = 1.0D; 63. / 把一個(gè)double型值賦值給一個(gè)long類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出long類型的取值范圍 64. / long long_d = 1.0D; 65.66. / 可以用字符初
42、始化一個(gè)char型變量 67. char char_a = a; 68. / 也可以用一個(gè)int型數(shù)值初始化char型變量 69. char char_b = 1; 70. / 把一個(gè)long型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍 71. / char char_c = 1L; 72. / 把一個(gè)float型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍 73. / char char_d = 1.0F; 74. / 把一個(gè)double型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類
43、型的取值范圍 75. / char char_e = 1.0D; 76. / 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò) 77. / char char_f = 70000; 78. 79. public class PrimitiveTypeTest public static void main(String args) / 給byte類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí)byte byte_a = 1;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ byte byte_b = 1000;/ 把一個(gè)long型值賦值給byte型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出byte類型
44、的取值范圍/ byte byte_c = 1L;/ 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí)short short_a = 1;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ short short_b = 70000;/ 把一個(gè)long型值賦值給short型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍/ byte short_c = 1L;/ 給short類型變量賦值時(shí),數(shù)字后無(wú)需后綴標(biāo)識(shí)int int_a = 1;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ int int_b = 2200000000;/ 把一個(gè)long型值賦值給int型變量
45、,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍/ int int_c = 1L;/ 可以把一個(gè)int型值直接賦值給long型變量,數(shù)字后無(wú)需后綴標(biāo)識(shí)long long_a = 1;/ 如果給long型變量賦予的值超出了int型值的范圍,數(shù)字后必須加L(不區(qū)分大小寫)標(biāo)識(shí)long long_b = 2200000000L;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ long long_c = 9300000000000000000L;/ 可以把一個(gè)int型值直接賦值給float型變量float float_a = 1;/ 可以把一個(gè)long型值直接賦值給float型變量fl
46、oat float_b = 1L;/ 沒(méi)有F(不區(qū)分大小寫)后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double型的,不能將它直接賦值給float型變量/ float float_c = 1.0;/ float型數(shù)值需要有一個(gè)F(不區(qū)分大小寫)后綴標(biāo)識(shí)float float_d = 1.0F;/ 把一個(gè)double型值賦值給float型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出float類型的取值范圍/ float float_e = 1.0D;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ float float_f = 3.5000000E38F;/ 可以把一個(gè)int型值直接賦值給double型變量d
47、ouble double_a = 1;/ 可以把一個(gè)long型值直接賦值給double型變量double double_b = 1L;/ 可以把一個(gè)float型值直接賦值給double型變量double double_c = 1F;/ 不帶后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double類型的,可以直接賦值double double_d = 1.0;/ 也可以給數(shù)字增加一個(gè)D(不區(qū)分大小寫)后綴標(biāo)識(shí),明確標(biāo)出它是double類型的double double_e = 1.0D;/ 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ double double_f = 1.8000000000000000E3
48、08D;/ 把一個(gè)double型值賦值給一個(gè)byte類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出byte類型的取值范圍/ byte byte_d = 1.0D;/ 把一個(gè)double型值賦值給一個(gè)short類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出short類型的取值范圍/ short short_d = 1.0D;/ 把一個(gè)double型值賦值給一個(gè)int類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出int類型的取值范圍/ int int_d = 1.0D;/ 把一個(gè)double型值賦值給一個(gè)long類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出long類型的取值范圍/ long long_d = 1
49、.0D;/ 可以用字符初始化一個(gè)char型變量char char_a = a;/ 也可以用一個(gè)int型數(shù)值初始化char型變量char char_b = 1;/ 把一個(gè)long型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍/ char char_c = 1L;/ 把一個(gè)float型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍/ char char_d = 1.0F;/ 把一個(gè)double型值賦值給一個(gè)char類型變量,編譯時(shí)會(huì)報(bào)錯(cuò),即使這個(gè)值沒(méi)有超出char類型的取值范圍/ char char_e = 1.0D;/
50、 編譯器會(huì)做范圍檢查,如果賦予的值超出了范圍就會(huì)報(bào)錯(cuò)/ char char_f = 70000;從上面的例子中我們可以得出如下幾條結(jié)論:1. 未帶有字符后綴標(biāo)識(shí)的整數(shù)默認(rèn)為int類型;未帶有字符后綴標(biāo)識(shí)的浮點(diǎn)數(shù)默認(rèn)為double類型。 2. 如果一個(gè)整數(shù)的值超出了int類型能夠表示的范圍,則必須增加后綴“L”(不區(qū)分大小寫,建議用大寫,因?yàn)樾懙腖與阿拉伯?dāng)?shù)字1很容易混淆),表示為long型。 3. 帶有“F”(不區(qū)分大小寫)后綴的整數(shù)和浮點(diǎn)數(shù)都是float類型的;帶有“D”(不區(qū)分大小寫)后綴的整數(shù)和浮點(diǎn)數(shù)都是double類型的。 4. 編譯器會(huì)在編譯期對(duì)byte、short、int、lon
51、g、float、double、char型變量的值進(jìn)行檢查,如果超出了它們的取值范圍就會(huì)報(bào)錯(cuò)。 5. int型值可以賦給所有數(shù)值類型的變量;long型值可以賦給long、float、double類型的變量;float型值可以賦給float、double類型的變量;double型值只能賦給double類型變量。 下圖顯示了幾種基本類型之間的默認(rèn)邏輯轉(zhuǎn)換關(guān)系: 圖中的實(shí)線表示無(wú)精度損失的轉(zhuǎn)換,而虛線則表示這樣的轉(zhuǎn)換可能會(huì)損失一定的精度。如果我們想把一個(gè)能表示更大范圍或者更高精度的類型,轉(zhuǎn)換為一個(gè)范圍更小或者精度更低的類型時(shí),就需要使用強(qiáng)制類型轉(zhuǎn)換(Cast)了。不過(guò)我們要盡量避免這種用法,因?yàn)樗3?/p>
52、引發(fā)錯(cuò)誤。請(qǐng)看下面的例子,如果不運(yùn)行代碼,你能預(yù)測(cè)它的結(jié)果嗎?Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. int a = 123456; 4. short b = (short) a; 5. / b的值會(huì)是什么呢? 6. System.out.println(b); 7. 8. Java代碼 1. public class PrimitiveTypeTest 2. public static void main(String args) 3. int a = 123456
53、; 4. short b = (short) a; 5. / b的值會(huì)是什么呢? 6. System.out.println(b); 7. 8. public class PrimitiveTypeTest public static void main(String args) int a = 123456;short b = (short) a;/ b的值會(huì)是什么呢?System.out.println(b);運(yùn)行結(jié)果:1. -7616 運(yùn)算符對(duì)基本類型的影響 當(dāng)使用+、-、*、/、%運(yùn)算符對(duì)基本類型進(jìn)行運(yùn)算時(shí),遵循如下規(guī)則:1. 只要兩個(gè)操作數(shù)中有一個(gè)是double類型的,另一個(gè)將會(huì)被轉(zhuǎn)
54、換成double類型,并且結(jié)果也是double類型; 2. 否則,只要兩個(gè)操作數(shù)中有一個(gè)是float類型的,另一個(gè)將會(huì)被轉(zhuǎn)換成float類型,并且結(jié)果也是float類型; 3. 否則,只要兩個(gè)操作數(shù)中有一個(gè)是long類型的,另一個(gè)將會(huì)被轉(zhuǎn)換成long類型,并且結(jié)果也是long類型; 4. 否則,兩個(gè)操作數(shù)(包括byte、short、int、char)都將會(huì)被轉(zhuǎn)換成int類型,并且結(jié)果也是int類型。 當(dāng)使用+=、-=、*=、/=、%=、運(yùn)算符對(duì)基本類型進(jìn)行運(yùn)算時(shí),遵循如下規(guī)則: 運(yùn)算符右邊的數(shù)值將首先被強(qiáng)制轉(zhuǎn)換成與運(yùn)算符左邊數(shù)值相同的類型,然后再執(zhí)行運(yùn)算,且運(yùn)算結(jié)果與運(yùn)算符左邊數(shù)值類型相同。 了解了這些,我們就能解答下面這個(gè)??嫉拿嬖囶}了。請(qǐng)看:引用short s1=1;s1=s1+1;有什么錯(cuò)?short s1=1;s1+=1;有
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)驅(qū)動(dòng)的農(nóng)業(yè)技術(shù)推廣合同
- 國(guó)際貿(mào)易代理合同
- 航空貨運(yùn)服務(wù)運(yùn)輸合同
- 尿素購(gòu)銷合同
- 助動(dòng)車維修技術(shù)發(fā)展趨勢(shì)考核試卷
- 家電批發(fā)市場(chǎng)調(diào)研與預(yù)測(cè)試題考核試卷
- 塑料人造革生產(chǎn)過(guò)程中的質(zhì)量管理體系考核試卷
- 娃娃玩具的全球市場(chǎng)渠道拓展策略考核試卷
- 農(nóng)業(yè)金屬工具行業(yè)可持續(xù)發(fā)展策略考核試卷
- 批發(fā)市場(chǎng)定價(jià)策略與調(diào)整考核試卷
- 2024年3月四川省公務(wù)員考試面試題及參考答案
- 2024年山東省春季高考技能考試汽車專業(yè)試題 (多選題匯總)
- 循環(huán)系統(tǒng)練習(xí)試題(含答案)
- 新生兒黃疸早期識(shí)別課件
- 醫(yī)藥營(yíng)銷團(tuán)隊(duì)建設(shè)與管理
- 二年級(jí)數(shù)學(xué)上冊(cè)口算題100道(全冊(cè)完整)
- 四百字作文格子稿紙(可打印編輯)
- 冷軋工程專業(yè)詞匯匯編注音版
- 小升初幼升小擇校畢業(yè)升學(xué)兒童簡(jiǎn)歷
- 第一單元(金融知識(shí)進(jìn)課堂)課件
- 介入導(dǎo)管室護(hù)士述職報(bào)告(5篇)
評(píng)論
0/150
提交評(píng)論