java與.net比較學習系列(3) 基本數據類型和類型轉換


在Java中,數據類型分為兩類,一類是基本數據類型,另外一類是引用類型。

而在C#中,數據類型分為三類,分別是基元類型,值類型和引用類型。其中基元類型是.net framework框架中預定義的類型,當然,基元類型中可能包含有值類型和引用類型。下面是C#中數據類型的圖示:

這一篇要總結的是java中幾種基本的數據類型以及類型轉換。大致分為以下幾點:

1,整數類型

2,浮點數類型

3,字符類型

4,布爾類型

5,類型轉換之自動轉換

6,類型轉換之強制轉換

一,整數類型

整數類型按占用的內存空間位數不同分為4種,分別為8位的byte字節型,16位的short短整型,32位的int整型,以及64位的long長整型。我們一般用int型。

另外,整數有三種表示方法,分別是十進制,八進制和十六進制。我們一般用十進制來表示整型。

下面是例子,代碼如下:

public class DataType1 {
    public static void main(String[] args) {
        final double PI = 3.14; // 聲明常量用final
        int R = 5; // 聲明整型
        double ymj = PI * R * R;
        System.out.print("圓的面積等於:" + ymj);
    }
}

程序輸出:圓的面積等於:78.5

總結:從開頭C#數據類型的圖中可以看到,除了Java中定義的四種整型外,C#還新增了四種整型,分別是sbyte,ushort,uint,ulong

二,浮點數類型

浮點數一般用來表示小數。Java中浮點數分為兩種,一種是32位的單精度浮點數float,另一種是64位雙精度浮點數double,它們在內存中占用的位數不同,取值范圍也不同。Java默認的浮點類型是double類型。所以如果使用單精度浮點型的時候需要顯式加上F或者f后綴,如果是雙精度浮點型的話,可以加也可以不加。示例和代碼如下:

public class DataType2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        float f = 1.2345f; // 單精度浮點類型
        double d1 = 1.234; // 雙精度浮點類型,沒有加后綴使用默認
        double d2 = 1.234d; // 雙精度浮點型,顯示加后綴
        System.out.println("單精度浮點類型數值為:" + f);
        System.out.println("雙精度浮點類型數值為:" + d1);
        System.out.println("雙精度浮點類型數值為:" + d2);
    }
}

程序輸出:

單精度浮點類型數值為:1.2345
雙精度浮點類型數值為:1.234
雙精度浮點類型數值為:1.234

總結:C#在java定義的兩種浮點型的基礎上,新增了decimal類型。它在內存中占用128位的空間,所以它的精度更高,一般用在財務和貨幣計算中。

三,字符類型

字符類型一般用來表示單個字符,特別要注意的是,String類型是一個字符數組。基本與C#相同。

四,布爾類型

布爾類型一般用於判斷邏輯值真假的數據類型,基本與C#相同。

五,類型轉換之自動轉換

因為Java和C#一樣,都是強類型(即類型明確)語言,所以當遇到不同數據類型同時操作時,就需要進行數據類型轉換。

自動轉換有一個前提條件,就是兩種數據類型要兼容,比如short和int類型是兼容的,因為它們都是整型。而boolean類型不能轉換為int型,因為它們是兩個不同的類型。

自動轉換實際上就是將低位數轉換為高位數。下面是示例和代碼:

public class TypeConvert1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        short s = 3; // 16位整數
        int i = s; // 32位整數
        float f = 1.0f; // 32位浮點數
        double d = f; // 64位浮點數
        long l = 1234l; // 64位整數
        double d2 = l;

        System.out.println("short自動轉換為int后的值為:" + i);
        System.out.println("float自動轉換為double后的值為" + d);
        System.out.println("long自動轉換為double后的值為" + d2);
    }
}

程序輸出結果:

short自動轉換為int后的值為:3
float自動轉換為double后的值為1.0
long自動轉換為double后的值為1234.0

六,類型轉換之強制轉換

與自動轉換剛好相反,強制轉換是將高位數的數據轉換為低位數的數據,當然,前提也是轉換的數據類型必須兼容。

強制轉換有可能會造成數據精度丟失,因為目標數據的數據范圍要比源數據的范圍小。下面是一個強制轉換的例子。

public class TypeConvert2 {
    public static void main(String[] args) {
        // 基本數據類型轉換之強制轉換
        int i = 123;
        byte b = (byte) i; // 強制轉換
        System.out.println("int類型強制轉換為byte后值為:" + b);
    }
}

程序輸出:int類型強制轉換為byte后值為:123


免責聲明!

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



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