类型转换注意点

类型转换注意点

// 低 ---------------------------------------> 高
// byte,short,char-->int-->long-->float-->double
  • 类型从高到低,需要强制转换,有内存溢出风险 或 精度问题
  • 类型从低到高可直接转换
  • byte可直接转成short,但byte和char之间,short和char之间都需要强制转换
  • Boolean不可进行类型转换
  • long类型尽量用L,因为 l 跟1很像
  • 整数不同类型之间相加,如果有long类型,则结果为long类型
  • 如果没有long类型,不管有没有int类型,结果都为int类型
  • 相加时,如果有double类型,则结果为double类型
  • 用+连接时,从左开始出现String类型 之前 是做 加法
  • 用+连接时,从左开始出现String类型 之后 是做 字符串拼接
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
//====================================
//整数不同类型之间相加,如果有long类型,则结果为long类型
//如果没有long类型,不管有没有int类型,结果都为int类型
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


posted @ 2020-11-04 22:00  阿灿呀  阅读(131)  评论(0)    收藏  举报