基本数据类型.md

初始化默认值,占用字节,取值范围,值传递和引用传递


Java数据类型.jpg
包装类继承层次结构.jpg

一位bit可以表示0或1,一字节byte等于8位0或1,2^8
java中的整型都是有符号的,会占去一位bit,所以 byte 取 -2^7 + 0 + 2^7-1

摘自贴吧大神dtph007
有符号的整数类型使用的是2的补码算术运算:为了对一个数值取其负值,你要反转其每一位,然后加1,从而得到结果[JLS 15.15.4]。
2的补码算术运算的一个很大的优势是,0具有唯一的表示形式。
如果你要对int数值0取负值,你将得到0xffffffff+1,它仍然是0。
但是,这也有一个相应的不利之处,总共存在偶数个int数值——准确地说有232个——其中一个用来表示0,这样就剩些奇数个int数值来表示正整数和负整数,这意味着正的和负的int数值的数量必然不相等。
这暗示着至少有一个int数值,其负值不能正确地表示成为一个int数值。
事实上,恰恰就有一个这样的int数值,它就是Integer.MIN_VALUE,即-2^31。
他的十六进制表示是0x80000000。其符号位为1,其余所有的位都是0。
如果我们对这个值取负值,那么我们将得到0x7fffffff+1,也就是0x80000000,即Integer.MIN_VALUE!
换句话说,Integer.MIN_VALUE是它自己的负值,Long.MIN_VALUE也是一样。
对这两个值取负值将会产生溢出,但是Java在整数计算中忽略了溢出。其结果已经阐述清楚了,即使它们并不总是你所期望的。

类型 占用字节 取值范围 初始化默认值
byte 1 -128~127(2^8 = 256 = -2^7 + 0 + 2^7-1) 0
short 2 -32768~32767(2^16 = 65536 = -2^15 + 0 + 2^15) 0
int 4 -2147483648~2147483647(2^32 = -2^31 + 0 + 2^31-1)负20亿,正20亿 0
long 8 -2^63 ~ 2^63 -1(2^64 = -2^63 +0+2^63-1) 0L
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。