Java基本數據類型及之間的轉換

基本類型可以分爲三類:

字符類型char;

布爾類型boolean;

數值類型byte、short、int、long、float、double。

數值類型又可以分爲整數類型byte、short、int、long和浮點數類型float、double

1、布爾型

boolean類型不可以轉換成其他的數據類型,不可以以0或非0的數字代替;

2、整數型

整型默認爲int型,而long類型表示的範圍要超出int表數範圍,所以,聲明long類型時,常量後要加L

如:long l1=12345678  //  數值在int範圍之內,還不會出錯

       long l2=8888888888;//  數值在int範圍之外,會出錯

       long l3=8888888888L; //正確

3、浮點型

浮點型默認爲double,所以float類型聲明時後面需要加f/F ; 或者用強制轉換符

如:float f1 = (float)0.1;

float f2 = 0.1f;



二、基本數據類型轉換:

    各數據類型按容量大小(表數範圍大小)由小到大排列爲:

     Byte, short, char  ——int ——long——float——double

  1.轉換時遵循的原則

     1)容量小的類型自動轉換爲容量大的類型;

     2)容量大的類型轉換爲容量小的類型時,要加強制轉換符;

    3)byte,short,char之間不會互相轉換,並且三者在計算時首先轉換爲int類型;

    4)實數常量默認爲double類型, 整數常量默認爲int類型;

    *  字符型 爲什麼也能和 整形、浮點型進行運算呢? 

       答:  字符型在機器內部也是數字。進行計算時,先獲得字符的ASCK碼,然後再進行計算。

2.轉換舉例: 

     Int i1=123;

     Int i2=456;

     Double d1 = (i1+i2)*1.2             //容量小的類型自動轉換爲容量大的類型

      Byte b1=1;

      Byte b2=2;

      Byte b3=(byte)(b1+b2);        //byte,short,char在計算時首先轉換爲int,大容量(int)轉換爲小容量的類型(byte)時要加強制轉換符

  典型問題:

(1)  double d = 1e200;//打印顯示Infinity;

(2)  float f = 11.1//錯誤;默認爲double類型,應該修改爲float f = 11.1f;

(3)public class TestDataKind {

            public static void main(String[] args) {

               byte b = 44;

               char c = 'b';

               short s = 1024;

               int i = 40000;

               long l = 12463l;

               float f = 35.67f;

               double d = 3.1234d;

       /*

        * (f * b)時,b自動提升爲float類型 (l*f)時,l自動提升爲float類型 (i/c)

*時,c自動提升爲int類型

        * (d*s)時,s自動提升爲double類型 再相加時,中間結果都變爲了double類型。

        * 這裏result只能聲明爲double類型,result聲明爲其他類型會出錯,除非進行

*強制類型轉換

        */

               double result = (f * b) + (l * f) + (i / c) - (d * s);

               System.out.print((f * b) + " + " + (l * f) + " + " + (i /

c) + " - " + (d * s));

               System.out.println(" = " + result);

            }

}

(4) byte b1 = (byte)128;

byte b2 =(byte)-129;

System.out.println(b1);

System.out.println(b2);

    打印結果:-128和127

    分析:byte只有八位,只能表示-128—127;計算機中負數的存儲方式是補碼。對負數的絕對值的二進制值取反,再加一,即爲負數的二進制碼。如:-1的絕對值1的二進制碼爲00000001,取反得到11111110,再加一爲11111111。-128的絕對值128的二進制碼爲10000000,取反得到01111111,再加一爲10000000,正好是Byte的最大表示範圍。而-129的絕對值129的二進制碼爲10000001,取反後得01111110,加一後得01111111,最後結果就是127




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章