在java中,int类型为什么占四个字节?

半兽人 发表于: 2018-09-13   最后更新时间: 2021-02-02 10:19:59  
{{totalSubscript}} 订阅, 17,376 游览

首先,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

其中byteshortintlong都是表示整数的,只不过他们的取值范围不一样。
  • 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了,可以看到byteshort的取值范围比较小,而long的取值范围太大,占用的空间多,因此,基本上int可以满足我们的日常的计算了。

在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B,如:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。

更新于 2021-02-02

查看java更多相关的文章或提一个关于java的问题,也可以与我们一起分享文章