学习
实践
活动
专区
工具
TVP
写文章

java中基本数据类型的转换

Java中的数据类型(四类八种):

1、整型

byte 、short 、int 、long

2、浮点型

float 、 double

3、字符型

char

4、布尔型

boolean

基本类型之间的转换:

将一种类型的值赋值给另一种类型是很常见的。在Java中,boolean类型与其他7中类型的数据都不能进行转换,这一点很明确。但对于其他7种数据类型,它们之间都可以进行转换,只是可能会存在精度损失或其他一些变化。转换分为自动转换和强制转换:

自动转换(隐式):小的数据类型转换大的数据类型,无需任何操作。

强制转换(显式):大的数据类型转换小的数据类型,需使用转换操作符。

将6种数据类型按下面顺序排列一下:

double > float > long > int > short > byte

如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。

面试题:(以下运行会出错吗)

(1)第一题:

byte b1=3, b2=4;

b=b1+b2;

会,出错因为在JAVA虚拟机中默认是int类型转换,虚拟机不知道b1,b2中的数值到底是多少,所有会抛出可能损失精度的错误;虚拟机会把 b1,b2 转换成 int类型在进行运算,两个int类型的数值相加结果任然是int类型,int类型 不能赋值给 byte类型

b=3+4;

正确 ,因为他们都是常量,具有常量类型优化机制,可以直接识别为byte,两个常量相加,先计算常量值,然后判断是否满足类型范围,再赋值。

(2)第二题:

byte by = 130;有没有问题?有问题如何解决?结果是多少呢?

有问题,byte 的数值范围是 126~-127 ,130已经超出byte取值范围 ,需写成byte by = (byte)130,运算是会砍掉前面的 三个8位,结果会变成-126

(3)第三题:

byte b=10;

b++; //这句 java虚拟机会做一个自动转换动作 相当于 b=(byte)(b+1)所以不会报错

b = b + 1; //这句java虚拟机会把,b转换成int类型 相当于 int b +int 类型的1 然后赋值给Byte类型 int是4个字节 byte是1个字节所有会抛出损失精度。

希望能对你有一点帮助,如有问题,可在下方留言!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190827A0MIXH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券