2020-12-05

Java变量

在这里插入图片描述
Java变量数据类型:
1 byte(字节) = 8 bit(比特/位)

类型大小(字节byte)/范围
boolean 布尔型1/8(0,1)
byte 字节类型1 (-27~27-1)
char 字符型2
short 短整型2(-215~215-1)
int 整数类型4(-231~231-1)
float 浮点类型(单精度)4 (3.402823e+38 ~ 1.401298e-45)
long(长整形)8 (-263~263-1)
double 双精度类型8( 1.797693e+308~ 4.9000000e-324 )

e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
使用 long a = 0这种赋值方式的时候,JVM内部存在数据转换,a转化为int类型。

类型转换:

  1. 自动类型转换:从小类型到大类型,不需要强制转换符
int a = 5; 
double b = a;
  1. 强制类型转换:从大类型到小类型,需要强制转换符实现
double a = 3.1415
int b = (int)a;//强制转换符:(需要转换成的类型)变量
  1. 关于byte、short、char赋值与运算的强转规则:
    (1)不参与运算时,证书直接量可以直接赋值给byte,short,char,不需要强转。
    (2)byte,short,char型变量参与运算时,需要强转
byte a = 9;
byte b = 45;
byte c = (byte)(a+b);
System.out.println(c);//a、b不参与运算时,整数(a、b)可以直接赋值给byte类型变量(a、b),a、b参与运算时(a+b)需强制转换成byte,再赋值给c

Java 运算时,当两个不同类型的数进行基本运算符操作时,低精度会自动向高精度转换,字节短的会自动向字节长的转换。

《Java 核心技术》一书中这么归纳到:

如果两个操作数其中有一个是 double 类型,另一个操作就会转换为 double 类型。 否则,如果其中一个操作数是 float
类型,另一个将会转换为 float 类型。 否则,如果其中一个操作数是 long 类型,另一个会转换为 long 类型。
否则,两个操作数都转换为 int 类型。

不会丢失精度的合法的类型转化图:
在这里插入图片描述
值域大的向值域小的转换需要使用强制转型,可能会丢失精度。
图中实现箭头类型转换代表不会丢失精度,虚线箭头类型转换可能会丢失精度。

各进制转换bit(位)、bytes(字节)、M、G、TB、PB:

1 Byte = 8 Bit
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值