Java基础数据类型知识点

数据类型

基本数据类型范围

序号 数据类型 字节 默认值 取值范围 举例说明
1 byte 1 0 -2^7 ~ 2^7-1 byte b = 10;
2 short 2 0 -2^15 ~ 2^15-1 short s = 10;
3 int 4 0 -2^31 ~ 2^31-1 int i = 10;
4 long 8 0L -2^63 ~ 2^63-1 long l = 10L;
5 float 4 0F -2^128 ~ 2^128 float f = 10.0F;
6 double 8 0D -2^1024 ~ 2^1024 double d = 10.0D;
7 char 2 \u0000(空) 0 ~ 2^16-1 char c = 'c';
8 boolean 1 false true,false boolean b = false;

范围说明

整数类型

以byte为例,byte二进制占1个字节,8位数据中,最左侧即最高位是符号位,所以正数的范围为 00000000 ~ 011111111,即 0 ~ 127,而负数的范围为 10000000 ~ 11111111,即 -127 ~ -0,实际中 -0 是没有意义的,计算机中将 10000000 定义为 -128 的补码,因此得到byte的数据类型范围为 -128 ~ 127。其它 short、int、long 数据类型范围同样按此定义。

浮点类型

浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡。通常情况下,浮点数表示为:N = M × r^E。
式子里面r是浮点数阶码的底在计算机中是隐含的,通常情况下r=2。 E 和 M 都是带符号的定点数, E 被称之为阶码,M 被称之为尾数,而r被称之为阶码的基数。
其中E的大小越大,能表示的数范围越大,M的位数越大,数的有效精度越高。

IEEE 754标准采用的浮点数的格式:

S为数符,表示浮点数的符号,E为阶码部分,用移码【不管正负数,只要将其补码的符号位取反即可】表示,M是尾数部分,用原码表示,数字在计算机中是以二进制补码方式存储。
​IEEE 754标准规定常用的浮点数格式有短浮点数(单精度、float)、长浮点数(双精度、double型)、临时浮点数。
​float数符占1位;阶码占8位,以2为底,用移码表示,阶码偏置值为127(阶码全1表示无限大,E的范围是1~254,空出全0表示非规格化数);尾数部分为23位。
double数符占1位;阶码占11位,以2为底,用移码表示,阶码偏置值为1023(阶码全1表示无限大,E的范围是1~2046,空出全0表示非规格化数);尾数部分为52位。

浮点数的取值范围主要看指数部分
float的指数部分占8位(2^8),由于是有符号型,所以得到对应的指数范围-128~128。对应的取值范围为:-2^128 ~ 2^128。
double的指数部分占11位(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。对应的取值范围为:-2^1024 ~ 2^1024。

浮点数的精度主要看尾数位
float的尾数位是23位,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位
double的尾数位是52位,对应15~16位十进制数,所以有效数字有的编译器是15位

数值类型转换


实线箭头表示无信息丢失的转换,虚线箭头表示可能有精度损失的转换。

参考:
https://blog.csdn.net/alongbigbig/article/details/115027153
https://blog.csdn.net/qq_36915078/article/details/106019023

posted @ 2023-07-01 23:59  #码农9527#  阅读(23)  评论(0)    收藏  举报