int i1=3;
int i2=i1;
i2=4;
====> i1=3;i2=4; i1/i2为不同的变量
class Value {int val;}
Value v1.val=5;
Value v2.val=v1;
v2.val=6;
====>v1.val=6;v2.val=6; v1,v2 为引用的同一个实例
int 类型在内存中占8个字节 32位
float类型 单精度浮点数 在内存中占8个字节 32位
double 双精度浮点型 在内存中占 16个字节 64位
整数与浮点数在内存中的表示
整数:
原码:第一位表示为符号位 0表示正数 1表示负数
反码:符号位不变 其余位取反
负数补码:反码加上1
正数补码:与原码相同
一个整数在内存中表示都是使用补码的形式,采用补码表示的原因:
(1)是0的原因,0既不是正数也不是负数,在有些地方说可以把0看成是正数或者是负数,如果把0看成是正数 则在内存中表示 0000 0000
如果将0看成是负数,则在内存中表示 1000 0000;则中两种的表示是不一样的
用反码表示:如果0是正数;0000 0000 如果0是负数 1111 1111+1=0000 0000 两种的表示是一样的
(2)在计算机中表示减法或者是计算减法是很麻烦的,若是将其转化为加法则是比较简单,补码表示可以很容易的额将减法转化为加法
2-1可以转化为2+(-1)
一个浮点数在内存中的表示形式
float
s eeee eeee mmmm mmmm mmmm mmmm mmmm mmm
符号位 指数位 附加位
s*m*2^(e-127)
-3.5
1 1000 0000 1100 0000 0000 0000 0000 000
(-1)*2^(128-127*2^0+2^-1+2^-2)=3.5