Java隐式类型转换和强制类型转换

 

一、强制类型转换

char 和 整型之间的类型转换

 1 char a7 = 'a';
 2 System.out.println(a7);
 3 
 4 System.out.println( (int)a7 );
 5 System.out.println( (byte)a7 );
 6 System.out.println( (short)a7 );
 7 
 8 int b1 = 101;
 9 System.out.println( (char)b1 );
10 System.out.println( (char)(b1 + 1) );

输出:

a
97
97
97
e
f

 

下面这段代码会把 26 个小写字母对应的 int 值打印出来

1 char[] chs = {
2             'a','b','c','d','e','f','g','h','i','j','k','l','m',
3             'n','o','p','q','r','s','t','u','v','w','x','y','z'};
4 
5 for (int i = 0; i < chs.length; i++) {
6     System.out.println( (int)chs[i] );
7 }

 

 

二、隐式类型转换

这是一个很经典的题目,先看代码:

1 short a = 1;
2 short b = 2;
3 
4 short c = a + b;

答案是第4行代码出现编译错误:“可能损失精度”

原因:在进行 a + b 操作时,会把结果的类型“隐式”提升为 int 类型,此时再使用 short 类型的 c 变量引用时,就会出现“损失精度”

 

可以把 a + b 的结果强制转换为 short 类型,但是可能导致数值精度发生错误。也就是说可以解决编译期的错误,但是可能在运行期出现BUG

1 short a = 1;
2 short b = 2;
3 
4 // short c = (a + b);
5 short c = (short)(a + b);

 

还可以使用 int 或者 long 类型变量接收返回值

1 short a = 1;
2 short b = 2;
3 
4 int c = (a + b);

 

转载于:https://www.cnblogs.com/xugf/p/7795305.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中的数据类型可以分为两类:基本数据类型和引用数据类型。基本数据类型包括 boolean、byte、short、int、long、float 和 double,而引用数据类型包括类、接口、数组等。 Java 中的自动类型转换隐式类型转换)是指在表达式中将一种数据类型的值自动转换成另一种数据类型的值。自动类型转换是从小类型到大类型的转换,例如 byte 类型可以自动转换为 short、int、long、float 或 double 类型,int 类型可以自动转换为 long、float 或 double 类型,等等。Java 中的自动类型转换是安全的,因为它不会导致数据的精度损失。 Java 中的强制类型转换(显式类型转换)是指将一种数据类型的值制转换成另一种数据类型的值。强制类型转换必须显式地进行,因为它可能导致数据的精度损失或溢出。强制类型转换的语法格式如下: ``` (目标类型) 值 ``` 其中,目标类型是要转换成的数据类型,值是要转换的值。需要注意的是,强制类型转换可能会导致数据的精度损失或溢出,因此在进行强制类型转换时要谨慎,避免数据的精度损失和溢出。 例如,将一个 double 类型的值制转换成 int 类型的值可以使用以下语句: ``` double d = 3.14159; int i = (int) d; ``` 在这个例子中,d 是一个 double 类型的值,它被制转换成了 int 类型的值,i 的值为 3。需要注意的是,强制类型转换可能会导致精度损失,因此在进行强制类型转换时要注意数据的类型和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值