首先,int如果转成十进制来说就是最大值和最小值范围 “-2147483648 ~ 2147483647”
:
Modifier and Type | Constant Field | Value |
---|---|---|
public static final int | MAX_VALUE | 2147483647 |
public static final int | MIN_VALUE | -2147483648 |
public static final int | SIZE | 32 |
一个字节有8位,我们来看看一个位
能表示多少个状态,计算机只认二进制,也就说只有0和1来表示状态:
- 1位,0和1 = 2的1次方 = 能表达2个状态 (ps:要么是0,要么是1)
- 2位:00和最大11 = 2的2次方 = 能表达4个状态 (ps:4种状态:00,01,10,11)
- 3位:000和最大111 = 2的3次方 = 能表达8个状态
那8个位能表示多少?
- 8位,00000000和最大11111111 = 2的8次方 = 能表达256个状态。
计算机为了区分正负数,所以把256个状态一半分给了负数,-128 ~ 127
也是256个数,因为8位里面拿走一个位
用来表示正负,所以只能表示最大127。
- 接下来 : 9位 = 2的九次方 = 512个数字
- 接下来: 10位 = 2的十次方 = 1024个 ..... 以此类推
- 32位,00000000 00000000 00000000 和最大11111111 11111111 11111111 = 2的32次方 = 4294967296个数
那么:
- 1 byte = 1字节 = 8bit 可表达 2的八次方个数字
- 1 short= 2字节 = 16bit 可表达2的十六次方个数字
- 1 int = 4字节 = 32bit 可表达2的32次方
那么,int类型为什么占四个字节呢?
在JAVA中一共有八种基本数据类型,它们分别是 byte、short、int、long、float、double、char、boolean
。
其中byte
、short
、int
、long
都是表示整数的,只不过他们的取值范围不一样。
- byte的取值范围为
-128 ~ 127
,占用1
个字节(-2的7次方到2的7次方-1); - short的取值范围为
-32768 ~ 32767
,占用2
个字节(-2的15次方到2的15次方-1) ; - int的取值范围为
(-2147483648 ~ 2147483647)
,占用4个字节(-2的31次方到2的31次方-1) ; - long的取值范围为
(-9223372036854774808 ~ 9223372036854774807)
,占用8个字节(-2的63次方到2的63次方-1);
我们先看在内存中的开销 :
int i=1;
在内存存蓄中就是以00000000 00000000 00000000 00000001
这种形态存蓄。
byte j = 1;
是 00000001
我们需要一个中规中矩通用的一个取值范围,就是int了,可以看到byte
和short
的取值范围比较小,而long
的取值范围太大,占用的空间多,因此,基本上int
可以满足我们的日常的计算了。
在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B
,如:35B,表示它是byte型的,同样的35S
表示short型,35L
表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。