Java基础:类型

基本类型和引用类型

分为基本类型和引用类型

基本类型就是四类八种

引用类型就是变量,存储在堆内

 Person对象有一个为int类型的属性,这个属性也是放在堆中的

当==两边是基本数据类型时,==于比较的是两边的两个值是否相等,当==两边是引用类型时比较的是两个内存地址。.equals()是比较值
 
 

基本类型

四类八种:
 

 

整型的范围:

int为例

-(2^31)~(2^31-1)

4个字节,一个字节8位,共32位

符号占一位,剩下31位,最大值为2的31次方减1(31位全为1的情况,等于32位为1再减去1,注意32位为1表示2的31次方,正如1位为1表示2的零次方)

负数多表示一个数是因为,0不需要两种表示方式,10000000这样就用来表示最小值

int在32位环境中,取值范围为-2147483648~2147483647。
即-(2^31)~(2^31-1);第一,为什么是31次幂而不是32次幂?因为有一位是符号位,代表正负。第二,为何最小值为-2147483648而最大值为2147483647?因为最大值为
01111111 11111111 11111111 11111111
等于2^31-1,而00000000表示0,10000000就可以不用表示0,用来表示最小值。故最小值用补码可以表示成10000000 00000000 00000000 00000000;

小数默认为double,如果要float的话,float a=1.1f;

char默认4位,Unicode编码,写成16进制就变成了常见的u2A13这种

浮点数问题:

类型转换

转换:
将一种类型的值赋值给另一种类型是很常见的
 
将6种数据类型按下面顺序排列一下:
double > float > long > int > short > byte
如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。
 
自动转换:
除了整数转小数,不会有精度损失
不会出现任何运行时(run-time)异常。
 
 
强制转换
把大的转成小的
(target-type) value;
 
如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。
将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。

原文地址:https://www.cnblogs.com/take-it-easy/p/14500607.html