Java的数据类型转换

Java语言是一种强类型语言,因此变量在使用前必须声明。

强类型语言有以下几个要求:

1)变量或者常量必须要有类型。只有声明类型之后,才能使用。

2)赋值时类型必须一致。

3)运算时类型必须一致。

在实际使用中会牵扯到类型之间的转换,Java提供了两种类型转换:

1)自动类型转换。不需要在程序中显示地编写代码,编译器自动完成类型之间的转换。

2)强制类型转换。需要在程序中显示地编写代码,强制编译器进行类型之间的转换。

由于基本数据类型中的boolean类型不是数字型,所以基本类型的转换是除boolean类型以外的其他7种基本类型之间的转换。

1.自动类型转换(隐式类型转换)

是指不用显示编写代码,系统自动地完成类型转换,由JVM自动完成。

1)转换规则:从占用空间小的类型转换到占用空间大的类型。

byte-->short(char)-->int-->long-->float-->double

例如byte类型可以自动转换为short类型

byte bo = 100;

short s = bo;

类型转换亦可跳跃转换:

byte byt = 8;

int n = byt;

2)注意事项

在整数之间类型转换时,数值不会发生改变;而要将比较大的整数类型转换成小数时,由于存储原因,有可能造成精度的损失。

2.强制类型转换(显式类型转换)

是指需要显示地编写代码实现类型的转换。此类类型转换很可能造成数据的精度损失,所以想要使用此类类型转换,就必须接受这种损失。

1)转换规则:从占用空间大的类型转换到占用空间小的类型。

double-->float-->long-->int-->short(char)-->byte

语法格式:(转换的类型)需转换的值

代码示例:

double d = 3.14;

int i = (int)d;

//无条件舍掉小数点后面的数字--此为小数转换为整数的规则,所以此处i=3.

**如果相对浮点数进行舍入运算,以得到最接近的整数,那就需要使用Math.round方法

示例:

double x=9.99;

int n=(int)Math.round(x);//在此种情况下,n的值就是10.

当调用round的时候,仍然需要使用强制类型转换(int)。

其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。

2)注意事项:

(1)整数强制转换为整数时,取数字的低位。

例如,int转换为byte时,去掉int的低8位(即一个字节)

(2)强制类型转换通常会造成存储精度的损失,需谨慎使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值