java中基本类型之间的转换

2023-12-20 17:02:47

基本类型容量

java中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围

  1. byte:字节型,占内存容量为 1 个字节(8 位),表示范围为 -128(-2^7)到 127(2^7-1)。
  2. short:短整型,占内存容量为 2 个字节(16 位),表示范围为 -32,768(-2^15)到 32,767(2^15-1)。
  3. int:整型,占内存容量为 4 个字节(32 位),表示范围为 -2,147,483,648(-2^31)到 2,147,483,647(2^31-1)。
  4. long:长整型,占内存容量为 8 个字节(64 位),表示范围为 -9,223,372,036,854,775,808(-2^63)到 9,223,372,036,854,775,807(2^63-1)。
  5. float:单精度浮点型,占内存容量为 4 个字节(32 位),表示范围约为 ±3.4E-45(±1.18e-38)到 ±3.4028235E38(±1.0x10^38)。
  6. double:双精度浮点型,占内存容量为 8 个字节(64 位),表示范围约为 ±4.9E-324(±1.17e-308)到 ±1.8014398E+308(±9.2x10^308)。
  7. char:字符型,占内存容量为 2 个字节(16 位),表示范围为 '\u0000'(0)到 '\uffff'(65,535)。
  8. boolean:布尔型,占内存容量为 1 个字节(8 位),表示范围为 false(0)和 true(非零)。

自动类型转换

根据数据容量和范围,小的数据类型可以转换为大的数据类型

比如:

int b = 1;
double c = b;

但是大的范围转为小的数据类型就会导致精度丢失?

比如:

 double a = 1.0;
 int b = a;

整形的数据在进行计算的时候会转换为int类型去进行计算 同时要注意的是不要超过类型的数值范围

?可自动关系转换图谱

强制类型转换

这种可以使多大范围的强制转换为小范围的,但是如果范围超了会导致精度丢失

    double a = 1.0;
    int b = (int) a;

当大范围的数值被强制转换为小范围的数值时,其精度可能会受到影响。以double和int为例,如果将一个double类型的值强制转换为int类型,那么小数部分将被直接截断,而不是四舍五入。因此,如果你有一个带有小数部分的double值,如3.14,在强制转换为int类型后,你将得到3,而不是3.14的整数部分3。

为了处理这种精度损失,你可以在强制类型转换前使用四舍五入的方法将float类型值转换为int类型值。具体代码如下:

float f = 3.14; int i = ( int )(f + 0.5); // 四舍五入。

这样可以保证转换后的int类型值更加准确。

?

文章来源:https://blog.csdn.net/m0_71507863/article/details/135102299
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。