java數據類型定義與輸出


JAVA數據類型分基本數據類型和引用數據類型。


一、基本數據類型

Java里面包含8個基本數據類型,分別是:

boolean、byte、char、short、int、float、douboe、long

1、byte 字節
   byte是JAVA中最小的數據類型,它在內存中占8位(8個bit),取值范圍從-128到127
   賦值:byte I = 127;

  byte I =128;程序將出錯,因為取值范圍越界!
2、short 短整型

short類型在內存中占2個字節,取值范圍從 -32768到32767
賦值:short i = 32767;


  3、char 字符型
 char類型在內存中占2個字節。表示一個字符,也可以使用ASCII碼范圍內的值來給char型的變量賦值。由於字符在內存中的取值不存在負數范圍,所有取值范圍從 0 到 65535
  賦值:char i = ‘a’; 或者 char i = 97;


4、int 整型
int型在內存中占4個字節。取值范圍從 -2147483648 到 2147483647

  賦值:int i = 10;

5、float 單精度浮點型
float型在內存中占4個字節。取值范圍從 -3.4E38 到 3.4E38
賦值:float i = 1.0f;


6、long 長整型

long型在內存中占8個字節。取值范圍從 -9223372036854775808 到 9223372036854775807

7、double 雙精度浮點型

double 型在內存中占8個字節。取值范圍從 -1.7E308 到 1.7E308

  8、boolean 布爾型
boolean類型只有兩個值:true和false。


基本數據類型的相互轉換

轉型規則
JAVA中所有的數字變量都是有符號(正負)的。
JAVA不允許類型的隨意轉換。只有數字變量可以進行轉換,但是不能隨意。
帶有小數點的數字變量默認都為double型。定義float型必須進行強制類型轉換。
所占字節數小的數字型變量賦值給所占字節數比它大的類型時不用強制類型轉換,此時是自動轉型。
int型變量賦值給char型變量時,JVM會以int型變量值到ASCII碼表中查找出所對應的字符,再賦值給char型變量。反之也是。但是遵循第4條規則。
初始化簡單數據類型時要注意賦值的范圍,超出則會產生編譯錯誤。


基本數據類型默認初值
類型 初始值
boolean false
byte 0
char 0
short 0
int 0
float 0.0
double 0.0
long 0

 
 
二、引用數據類型

JAVA中,非簡單數據類型的類型都是引用數據類型。


三、舉例
JAVA中的數值類型不存在無符號的,它們的取值范圍是固定的,不會隨着機器硬件環境或者操作系統的改變而改變。實際上,JAVA中還存在另外一種基本類型void,它也有對應的包裝類 java.lang.Void,不過我們無法直接對它們進行操作。對於數值類型的基本類型的取值范圍,我們無需強制去記憶,因為它們的值都已經以常量的形式定義在對應的包裝類中了。請看下面的例子:
Java代碼
public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("基本類型:byte 二進制位數:" + Byte.SIZE);  
        System.out.println("包裝類:java.lang.Byte");  
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
        System.out.println();  
  
        // short  
        System.out.println("基本類型:short 二進制位數:" + 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();  
  
        // int  
        System.out.println("基本類型:int 二進制位數:" + 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();  
  
        // long  
        System.out.println("基本類型:long 二進制位數:" + Long.SIZE);  
        System.out.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();  
  
        // float  
        System.out.println("基本類型:float 二進制位數:" + Float.SIZE);  
        System.out.println("包裝類:java.lang.Float");  
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("基本類型:double 二進制位數:" + Double.SIZE);  
        System.out.println("包裝類:java.lang.Double");  
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("基本類型:char 二進制位數:" + Character.SIZE);  
        System.out.println("包裝類:java.lang.Character");  
        // 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE);  
    }  
}  

運行結果:

1、基本類型:byte 二進制位數:8
2、包裝類:java.lang.Byte
3、最小值:Byte.MIN_VALUE=-128
4、最大值:Byte.MAX_VALUE=127
5、
6、基本類型:short 二進制位數:16
7、包裝類:java.lang.Short
8、最小值:Short.MIN_VALUE=-32768
9、最大值:Short.MAX_VALUE=32767
10、
11、基本類型:int 二進制位數:32
12、包裝類:java.lang.Integer
13、最小值:Integer.MIN_VALUE=-2147483648
14、最大值:Integer.MAX_VALUE=2147483647
15、
16、基本類型:long 二進制位數:64
17、包裝類:java.lang.Long
18、最小值:Long.MIN_VALUE=-9223372036854775808
19、最大值:Long.MAX_VALUE=9223372036854775807
20、
21、基本類型:float 二進制位數:32
22、包裝類:java.lang.Float
23、最小值:Float.MIN_VALUE=1.4E-45
24、最大值:Float.MAX_VALUE=3.4028235E38
25、
26、基本類型:double 二進制位數:64
27、包裝類:java.lang.Double
28、最小值:Double.MIN_VALUE=4.9E-324
29、最大值:Double.MAX_VALUE=1.7976931348623157E308
30、
31、基本類型:char 二進制位數:16
32、包裝類:java.lang.Character
33、最小值:Character.MIN_VALUE=0
34、最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科學記數法的形式輸出的,結尾的“E+數字”表示E之前的數字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

大家將運行結果與上表信息仔細比較就會發現float、double兩種類型的最小值與Float.MIN_VALUE、 Double.MIN_VALUE的值並不相同,這是為什么呢?實際上Float.MIN_VALUE和Double.MIN_VALUE分別指的是 float和double類型所能表示的最小正數。也就是說存在這樣一種情況,0到±Float.MIN_VALUE之間的值float類型無法表示,0 到±Double.MIN_VALUE之間的值double類型無法表示。這並沒有什么好奇怪的,因為這些范圍內的數值超出了它們的精度范圍。

基本類型存儲在棧中,因此它們的存取速度要快於存儲在堆中的對應包裝類的實例對象。從Java5.0(1.5)開始,JAVA虛擬機(Java Virtual Machine)可以完成基本類型和它們對應包裝類之間的自動轉換。因此我們在賦值、參數傳遞以及數學運算的時候像使用基本類型一樣使用它們的包裝類,但這並不意味着你可以通過基本類型調用它們的包裝類才具有的方法。另外,所有基本類型(包括void)的包裝類都使用了final修飾,因此我們無法繼承它們擴展新的類,也無法重寫它們的任何方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM