史上最全Java类型转换

04
六月
2021

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

                                                      基本数据类型的表示范围

类型

长度

表示范围默认值
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;

 

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员