2.2.3 变量的类型转换

2.2.3 变量的类型转换

java中一个变量定义出来,它的数据类型是不能改变的,因为它占据的内存空间不能改变。
例如:

int a=22;
a=44.5;

上面这个代码就是错的,因为变量a定义出来是整型,那么它就一直是整型,想赋给它一个小数型,就会报错。除非将小数44.5转换成整数才可以。

java中的数据类型转换分为两种,自动类型转换和强制类型转换。

一、自动类型转换

自动类型转换也叫隐式转换,指的是两种数据类型在转换的过程中不需要显式地进行声明,由编译器自动完成。
例如:

short a=22;
int b=2;

上面的代码中,先定义一个短整型变量 a,然后将 a 的值赋给整型变量 b,short 型的数据存入 int 型变量,计算机会自动将 short 型转换成 int 型,这里发生了自动类型转换。

注意:

  1. 自动类型转换遵循从低到高的原则:byte , short , char —> int —> long—> float —> double
  2. 布尔型不能转换

二、强制类型转换

如果想从高到低转换,或者将不匹配的数据 类型转换,就需要强制类型转换,也叫 显式转换。
例如:

long a=444455556666L;
int b=a;

这里想将长整型数据赋给整型变量,就会报错,修改一下:

long a=444455556666L;
int b=(int)a;

这样就会将长整型数据强制转换成整型,再赋给变量b。
但是如果输出一下转换后的值:

System.out.println(b);

输出的结果是:

2073925178

这个值与原值完全不一样,这是因为原来的长整型是一个占8个字节空间的数据,强制转换成整型时,计算机会将高位的四个字节直接砍掉,无论这四个字节里有没有数据,只剩下低四个字节的数据放进整型变量里去,这就会导致数据失真,在强制类型转换时需要注意。
但是也不是全部都会失真,例如:

long a=444L;
int b=(int)a;
System.out.println(b);

这里的输出是:

444

当长整型的数据并不大,没有超出整型的取值范围(高位四个字节没有值)时,强制转换就不会失真。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值