java数据类型之间的转换_Java基本类型之间的转换

一、基本数据类型长度

byte:一个字节,8位,有符号

short:两个字节,16为,有符号

char:两个字节,16位,无符号

int:4个字节,32位,有符号

float:4个字节,32位,有符号

long:8个字节,64位,有符号

double:8个字节,64位,有符号

boolean:比较特殊,1个字节,由于其值的特殊性,不能与任何基本类型进行转换

二、向上类型转换(不考虑char类型,char类型后面一节单独说)

何为向上?

byte->short->int->long->float->double

只要是要转换的类型等级比本身类型等级高,不需要强制类型转换,而且,内存中所占长度也会随之提升

但是,整数转换为浮点数有可能会损失精度

三、向下类型转换

向下类型转换,均需要强制转换

注意:在给基本类型赋初值的时候,整数默认是int类型,浮点数默认是double类型

所以,

float a = 5.0;   //编译器会报错,因为5.0默认是double类型,不经过强制转换不可以转换为float类型

float a = (float)5.0;  //正确

float a = 5.0f;  //正确,这时候的5.0是float类型

但是,

byte a = 6;   //这种写法不会报错,因为对于默认为int类型的数据,将其赋给比int类型等级低的类型k时(byte、char、short),JVM会自动判断该值是否超过了k类型的取值范围,如果超过了,则报错,如果没有超过,则将该int值隐式地强制转换为k类型并赋值。

所以;

char a = 5;  // 不会报错

byte a = 1000;   // 报错,因为1000超过了byte所能存储的最大范围

四、char的独特性

虽然char类型内部存的也是数字(ASCII码),但是,有一点不同:byte、short、int、float、double都是有符号的变量类型,char是无符号的变量类型,所以,即使是byte向char类型转换(升级)、short向char类型转换(同级)均需要强制转换,因为有符号和无符号的区别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值