型別轉換注意點

MJQC123發表於2020-11-06

型別轉換注意點

// 低 ---------------------------------------> 高
// byte,short,char-->int-->long-->float-->double
  • 型別從高到低,需要強制轉換,有記憶體溢位風險 或 精度問題
  • 型別從低到高可直接轉換
  • byte可直接轉成short,但byte和char之間,short和char之間都需要強制轉換
  • Boolean不可進行型別轉換
  • long型別儘量用L,因為 l 跟1很像
  • 整數不同型別之間相加,如果有long型別,則結果為long型別
  • 如果沒有long型別,不管有沒有int型別,結果都為int型別
int i = 128;
byte j = (byte) i;
int k = 10;
int l = 20;
System.out.println(i);//128
System.out.println(j);//-128   記憶體溢位
//精度丟失問題
System.out.println((int)(23.7));//23
System.out.println((int)(-46.8));//-46
System.out.println(k/l);//0
//===================================
//操作大數的時候注意記憶體溢位問題
//jdk7新特性:數字間可加下劃線來分割
int a = 10_0000_0000;
int b = 20;
int c = a*b;
long d = a*b;//轉換之前就存在記憶體溢位問題了
long e = (long)a*b;
System.out.println(c);//-1474836480
System.out.println(d);//-1474836480
System.out.println(e);//2000000000
//====================================
byte a = 10;
short b = 20;
int c = 30;
long d = 40;
System.out.println(a+b);//int型別
System.out.println(a+b+c);//int型別
System.out.println(a+b+c+d);//long型別
//======================================
int a = 10;
int b = 20;
String c = "30";
//用+連線時,從左開始出現String型別 之前 是做 加法
//用+連線時,從左開始出現String型別 之後 是做 字串拼接
System.out.println(a+b); //30
System.out.println(a+b+c); // 3030
System.out.println(c+a+b); // 301020



相關文章