史上最全Java类型转换

本文详细介绍了Java中基本类型的自动类型转换和强制类型转换规则,包括转换路径、精度损失和特殊情况。例如,byte到int的提升,以及long如何转换为float。同时,解释了为何32位的float能表示更大的范围,涉及浮点数在内存中的存储原理。此外,还讨论了基本类型转字符串的方法。在理解这些概念时,涉及到了计算机组成原理和IEEE754浮点数标准。
摘要由CSDN通过智能技术生成

讲类型转换之前,让我来贴张表

                                                      基本数据类型的表示范围

类型

长度

表示范围默认值
byte8b-128~+1270
short16b-32768~+327670
int32b-21147483648~+21474836470
long64b-9223372036 854 775 808~+9223372036 8547758070L
float32b-3.4E38~+3. 4E380.0f
double64b-1.7E308~+1.7E3080.0d
char16b'\ u0000'~'\uffff''\u0000'

 

一、自动类型转换

1、boolean类型不能进行类型的转换,既不能进行自动类型的提升,也不能强制类型转换。 否则编译出错。

2、Java基本类型的转换

如图,只要顺着箭头可以走到,就可以转换,但不可以逆着箭头。

byte型可以转换为short、int、、long、float和double; 
short可转换为int、long、float和double; 
char可转换为int、long、float和double; 
int可转换为long、float和double; 
long可转换为float和double; 
float可转换为double; 

那么仔细看开头的表的同学要问了,long类型64bit,float类型32bit,long怎么能转换成float呢?

答:在仔细看表会发现,float表示的数据范围比long大得多。

你们又有同学要问了,为什么32bit比64bit表示的范围大呢?

答;这里就涉及到计算机组成原理中的浮点数在内存中的存储问题了。(不想看可以不看)

数字在计算机中都是用二进制表示的,有符号位。,

按IEEE754浮点数标准:浮点数由数符S、指数E、尾数M组成,

单精度格式(32位):数符1位,E=8位,M=23位

看道没有E=8,最大时01111111,即127,

 

是10^38次方,long最大才19位,

当然是float表示范围大喽。

3、基本类型转换为字符串

        把任何基本类型的值和字符串进行运算时,基本类型的值将自动转换成为字符串类型,即使字符串类型不是基本类型,而是引用类型。因此,如果想将基本类型的值转换为对应的字符串,可以把基本类型的值和一个空字符串进行连接。

二、强制类型转换

把范围小的转换为范围大的,精度高的转换为精度低的,因为会损失精度,所以要强制转换,

语法格式:(目的类型)表达式;

例如:int i = (int)9.9f;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值