变量的类型转换

1.自动类型转换

也称隐式类型转换,是指两种数据类型在转换的过程中不需要显式声明,由编译器自动完成。完成此转换必须同时满足两个条件:一是两种数据类型彼此兼容;二是目标类型的取值范围大于源类型的取值范围。例如:

byte b=3;
int x=b;

除了以上,还有很多类型之间可以进行自动类型转换。例如:

(1)整数类型之间可以实现转换。例如,byte类型的数据可以赋值给short、int、long类型的变量;short、char类型的数据可以赋值给int、long类型的变量;int类型的数据可以赋值给long类型的变量。

(2)整数类型转换为float类型。例如,byte、char、short、int类型的数据可以赋值给float类型的变量。

(3)其他类型转换为double类型。例如,byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。

2.强制类型转换

当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要强制类型转换。例如:

public class Example{
  public static void main(String[] args){
       int nnum=4;
       byte b=num;
       System.out.println(b);
   }
}
/**程序报错,将一个int型的值赋给byte类型的变量b时,
由于int类型的取值范围大于byte类型的取值范围,
这样的赋值会导致数值溢出 ———— 一个字节的变量无法存储4个字节的整数值。**/

此情况需进行强制类型转换:将int类型的值赋值给byte类型的变量。

#目标类型 变量=(目标变量)值
byte b=(byte)num;

运行结果为4;

值得注意的是,在对变量进行强制类型转换时,如果将取值范围较大的数据类型强制转换为取值范围较小的数据类型(int类型的数转换为byte类型),极易造成数据精度丢失。例:

public class Example01{
    public static void main (String[] args){
           byte a;    //定义byte类型的变量a
           int b=298; //定义int类型的变量b
           a=(byte)b;
           System.out.println("b="+b);
           System.out.println("a="+a);
     }
}

运行结果为

b=298

a=42

Tips:表达式类型自动提升

表达式是指由变量和运算符组成的算式。变量在表达式中进行运算时,可能发生自动类型转换,这就是表达式数据类型的自动提升。(一个byte类型的变量在运算期间会自动提升为int类型。)例:

public class Example02{
   public static void main (String[] args){
         byte b1=3;        //定义一个byte类型的变量
         byte b2=4;
         byte b3=b1+b2;    //两个byte类型变量相加,赋值给一个byte类型变量
         System.out.println("b3="+b3);
    }
}
/**程序报错,在表达式b1+b2运算期间,
变量b1和b2会被自动提升为int类型,表达式的运算就成了int类型。
这时,将结果赋给byte类型的变量,编译器报错。**/

解决方法:进行强制类型转换。——修改第五行代码:

byte b3=(byte) (b1+b2);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

broccoli_cake

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值