1. 程式人生 > >java中的基本資料型別轉換

java中的基本資料型別轉換

1.java中的基本資料型別轉換

java基本資料型別的轉換是需要兩個基本事項:

1.boolean型不進行型別轉換。

2.Java中基本資料型別按精度從“低”到“高”排列順序

    byte  short  char  int   long    float   double 

在上面兩個基本事項之下,我們將java的基本資料型別轉換分成兩種形式:

1.1自動資料型別轉換【隱式型別轉換】---把精度低的資料值轉換成精度高的資料值。這個轉換過程系統自動完成,不需要手動干預,只需要完成賦值就好。

例如:
public  class  DataTypeSwitch{
    public  static  void  main(String args[]){
     //把精度低的資料值轉換成精度高的資料值---自動資料型別轉換【隱式型別轉換】
     //系統自動完成,不需要手動干預。
     byte  byte_valeu=120; //byte  1個位元組  
     int  int_value; //int  4個位元組
     int_value=byte_valeu;
     System.out.println("int_value=="+int_value);

     int  int_val=1234;  // int  4個位元組
     double  double_val=int_val;  //double 8個位元組 
     System.out.println("double_val=="+double_val);
   }
}

1.2強制型別轉換【顯式型別轉換】---把精度高的資料值轉換成精度低的資料值。這個過程就需要我們自己手動編寫程式碼來實現。

強制型別轉換【顯式型別轉換】的基本格式:(低級別變數的型別名稱)要轉換的值【變數名稱】

例如:
public  class  DataTypeSwitch_1{
    public  static  void  main(String args[]){
       //把精度高的資料值轉換成精度低的資料值--強制型別轉換【顯式型別轉換】
       //格式:(低級別變數的型別名稱)要轉換的值【變數名稱】
       double  dou=12.5;  //8個位元組 
       int  int_val;   // 4個位元組
       int_val=(int)dou;  //強制型別轉換【顯式型別轉換】
       System.out.println("int_val=="+int_val); //12

      float  f=3.14f;
      byte  b=(byte)f;
       System.out.println("b=="+ b); //3
   }

}

2.關於char與int之間的型別轉換

 1. char型別轉換成int型別,需要自動資料型別轉換【隱式型別轉換】。

 2. int型別轉換成char型別,需要強制型別轉換【顯式型別轉換】。

例如:
public  class  DataTypeSwitch_2{
    public  static  void  main(String args[]){
       //1. char---->int   自動資料型別轉換【隱式型別轉換】
         char  ch='家';
         int i=ch;
         System.out.println("i=="+i);  
      //2. int------>char    強制型別轉換【顯式型別轉換】
      int  i_val=23478;
      char ch_val=(char)i_val;
      System.out.println("ch_val=="+ch_val);  
   }

}

3.表示式的資料型別的自動提升

1.所有的byte型、short型、char型的值被提升為int型。
2.如果一個運算元是long型,計算結果就是long型。
3.如果一個運算元是float型,計算結果就是float型。
4.如果一個運算元是double型,計算結果就是double型。
例如:
public  class  DataTypeSwitch_3{
    public  static  void  main(String args[]){
     //1.所有的byte型、short型、char型的值被提升為int型。
     byte  b_val=120; 
     short  sh_val=1000;
     char  ch_val='a';
     //byte提升int
     //short提升int
     //char提升int
     //int  val = b_val+sh_val-ch_val; 

     //2.如果一個運算元是long型,計算結果就是long型。
     long  l_val=100L;
     //long val=b_val+sh_val-ch_val+l_val;
    
     //3.如果一個運算元是float型,計算結果就是float型。
     float  f_val=100.45f;
     //float val=b_val+sh_val-ch_val+l_val+f_val;

     //4.如果一個運算元是double型,計算結果就是double型。
     double  dou=300.5;  
     double val=b_val+sh_val-ch_val+l_val+f_val+dou;
     System.out.println(val);
     
     //在一個表示式中如果有多個不同資料型別的資料,那麼這個表示式的結果就是精度最高的資料型別的值。     
     //在java程式中出現的整數數字都是int型,出現的小數都是double型。
      byte  by_val=120;
      int value= by_val+1000;      
      System.out.println(value);

      int int_value=1234;
      double dou_val= int_value+168.5;
      System.out.println(dou_val);
   }
}
總結:在一個表示式中如果有多個不同資料型別的資料,那麼這個表示式的結果的資料型別就是表示式中資料型別精度最高的資料型別決定。