Java类型转换

  • Java是强类型语言,所以进行一些运算时,需要进行强制类型转换,转换成同一类型,然后进行运算。
  • 容量从低到高(字节大小):
    byte->short->char->int->long->float->double
    (小数优先级大于整数)
  • 字节从高到低,高容量转到低容量需要强制类型转换。从低到高,自动类型转换
  • 转换的时候可能存在内存溢出,或者精度问题
  • 不能对布尔值进行转换
  • 不能把对象类型转换成不相干的类型
int money = 10_0000_0000; // 可以用下划线分割数字
int num = 20;
int sum = money * num; // -1474836480 计算时已经溢出
long sum2 = money * num; // 结果依旧时-1474836480 
long sum3 = money * (long)num; // 结果正确 , 先把一个数字转成long
// 建议用大写L,小写l容易和别的字符混淆

Java表达式转型规则由低到高转换:
  • 当使用 +、-、*、/、%、运算操作是,遵循如下规则:
    1、操作数为:byte、short、int 、char,两个数都会被转换成int类型,并且结果也是int类型;
    2、如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
    3、如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型;
    4、只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
    5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
posted @ 2021-01-06 13:06  张三丰学Java  阅读(70)  评论(0编辑  收藏  举报