在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