Java自动类型转换
■ 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
■ 特例:可以讲整型常量直接赋给byte,short,char等类型变量,而不需要强制类型转换,只要不超出其表数范围。
■ 强制类型转换(cast):又称为造型,用于显示的转换一个数值的类型,在有可能丢失信息的情况下进行的转换时通过造型来完成的,但可能造成精度降低或溢出。
■ 强制类型转换的语法格式:“(type) var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。
■ 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。(例:int x = 300; byte y = (byte)x; //值为44)
■ 不能在布尔类型和任何数值类型之间做强制类型转换。(若需要将布尔类型转换为数字可以用三目运算符)
■ 基本类型转换常见错误和问题:
①操作比较大的数时,要留意是否溢出,尤其是整数操作时。
int a = 100000000; // 1亿 int b = 22; int c = a*b; // 返回的是负数 long c = a*b; // 返回的仍是负数(默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失) long d = a*((long)*b); // 先将一个因子变成long,整个表达式发生提升,全部用long来计算。
②L和l的问题:
不要命名名字为l的变量;
long类型使用大写L不要用小写。