您现在的位置是:亿华云 > 人工智能
Java中的基本数据类型转换(自动、强制、提升)
亿华云2025-10-02 18:58:39【人工智能】3人已围观
简介说基本数据类型转换之前,先了解下 Java 中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围,如下图所示。重新温故了下原始数据类型,现在来解释下它们之间的转换关系。自动类型转换自动类型
说基本数据类型转换之前,中的转换自动先了解下 Java 中的基本 8 种基本数据类型,以及它们的数据占内存的容量大小和表示的范围,如下图所示。类型
重新温故了下原始数据类型,强制现在来解释下它们之间的提升转换关系。
自动类型转换
自动类型转换是中的转换自动指:数字表示范围小的数据类型可以自动转换成范围大的数据类型。
如:
long l = 100; int i = 200; long ll = i;具体自动转换如如下图所示。基本
实线表示自动转换时不会造成数据丢失,数据虚线则可能会出现数据丢失问题。类型
自动转换也要小心数据溢出问题,强制看下面的提升例子。
int count = 100000000; int price = 1999; long totalPrice = count * price;编译没任何问题,中的转换自动但结果却输出的云南idc服务商基本是负数,这是数据因为两个 int 相乘得到的结果是 int, 相乘的结果超出了 int 的代表范围。这种情况,一般把***个数据转换成范围大的数据类型再和其他的数据进行运算。
int count = 100000000; int price = 1999; long totalPrice = (long) count * price;另外,向下转换时可以直接将 int 常量字面量赋值给 byte、short、char 等数据类型,而不需要强制转换,只要该常量值不超过该类型的表示范围都能自动转换。
强制类型转换
强制类型转换我们再清楚不过了,即强制显示的把一个数据类型转换为另外一种数据类型。
如:
short s = 199; int i = s; // 199 double d = 10.24; long ll = (long) d; // 10以上的转换结果都在我们的预期之内,香港云服务器属于正常的转换和丢失精度的情况,下面的例子就一样属于数据溢出的情况。
int ii = 300; byte b = (byte)ii;300 已经超出了 byte 类型表示的范围,所以会转换成一个毫无意义的数字。
类型提升
所谓类型提升就是指在多种不同数据类型的表达式中,类型会自动向范围表示大的值的数据类型提升。
把上面的溢出的例子再改下。
long count = 100000000; int price = 1999; long totalPrice = price * count;price 为 int 型,count 为 long 型,运算结果为 long 型,运算结果正常,没有出现溢出的情况。源码下载
很赞哦!(35698)