java基本類型_第1頁(yè)
java基本類型_第2頁(yè)
java基本類型_第3頁(yè)
java基本類型_第4頁(yè)
java基本類型_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論