Java基礎一:基礎資料型別 (Elementary Data Type)

來源:互聯網
上載者:User

標籤:浮點數   莫名奇妙   邏輯   返回   bool   驗證   常用   class   number   

一、八種基礎資料型別 (Elementary Data Type)

  1、整數類型

    ①byte 佔一個位元組。 常用作緩衝數組。

    ②short 佔兩個位元組 。

    ③int 佔四個位元組。 最常用。

    ④long 佔8個位元組。注意long類數值後面有一個尾碼L。

  注意:*Java沒有無符號(unsigned)整數。

     *所有的數實值型別所佔據的位元組數與平台無關,保證了可移植性。

  2、浮點類型

    ①float 佔四個位元組。尾碼帶有一個F。例:float f=3.4L;

    ②double 佔8個位元組。預設是double類型。例:3.14

  注意:*double的精度是float的兩倍,一般情況下能夠使用double就不要使用float,否則使用不當容易出現意想不到的異常。

     現代電腦搞運算能力下,可以忽略它們被處理的速度差異。

     *有三個特殊的浮點數值:正無窮大(Double.POSITIVE_INFINITY)、負無窮大(Double.NAGATIVE_INFINITY)、NaN(Double.NaN)。

     則三種數值一般很少用到。另外判斷非數值不能使用==號,而是使用Double.isNaN(驗證對象)。

     *浮點數不能使用在禁止出現四捨五入的場合,比如金融計算中。浮點數相乘除和相減都會出現誤差。金融計算可以使用BigDecimal類,或者

     藉助第三方庫。

  3、文本類型

     ①char 字元常量為單引號括起來的字元。

  注意:*Java字元採用Unicode編碼。一個字元佔兩個位元組(一個字元是肯定可以容納一個漢字的)。

  4、邏輯類型

    ①boolean

  注意:Java中不可以使用0或者非0的整數代替true或false。這點與c不同要小心。 

  5、引用資料類型(類、介面、數組)

 

二、數值之間的類型轉換

  當整型、字元型、浮點型資料在混合計算中相互轉換的時候(Boolean類型不可以轉換為其它類型,再次強調它不能夠轉換為0或1),遵循以下轉換規則

  1、向上轉型(自動轉換)

    精度小的類型會自動轉換為精度大的類型:byte、char、short->int->long->float->double。byte、char、short不會直接相互轉換,它們在轉換過程中先要轉換

  為int類型。

  2、向下轉型(強制轉換)

    精確度大的類型轉換為精確度小的類型:需要加上強制轉換符。但要十分小心,很容易造成精度下降或者溢出(有時候會造成莫名奇妙的bug)。

  例如:short s1 = 1; s1 = s1 + 1;// 編譯錯誤。1是int類型,s1 + 1運算時s1會自動向上轉型成為int型,s1 + 1運行結果也為int型,賦值給s1的時候是向下轉型。需要強制轉換。

  例如:而short s1 = 1; s1 += 1;// 正確編譯,因為s1+= 1;相當於s1 = (short)(s1 + 1);其中有隱含的強制類型轉換。

  例如:float f=3.4;// 編譯錯誤。3.4是double類型,轉換為float類型時是向下轉型,需要強制轉換:float f = (float)3.4;

  3、多種資料類型混合在一起計算的時候,要轉換為精度最大的資料類型後再進行計算。

 

三、一些常見的問題

  1、Java一個漢字占幾個位元組:http://www.cnblogs.com/God-/p/6006749.html

  2、基礎資料型別 (Elementary Data Type)的封裝類型

    為了能夠將這些基礎資料型別 (Elementary Data Type)當成對象操作,Java為每一個基礎資料型別 (Elementary Data Type)都引入了對應的封裝類型(wrapper class),int的封裝類就是Integer,從Java 5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉換。
Java 為每個原始類型提供了封裝類型:
- 原始類型: boolean,char,byte,short,int,long,float,double
- 封裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

 

一個與自動拆箱與裝箱的無聊問題:  

public class Test03 {     public static void main(String[] args) {        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;         System.out.println(f1 == f2);// 返回true        System.out.println(f3 == f4);// 返回false    }}  原因:如果整型字面量的值在-128到127之間,那麼不會new新的Integer對象,而是直接引用常量池中的Integer對象,所以上面的面試題中f1==f2的結果是true,而f3==f4的結果是false 3、String是Java基礎資料型別 (Elementary Data Type)嗎?   當然不是。如果不是應屆畢業生,面試官問這個問題我感覺他在逗你玩。  

 

 

     

 

Java基礎一:基礎資料型別 (Elementary Data Type)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.