一个小标为int的byte数组全部放满东西需要的内存为(2^31-11)*1b=2Gb=0.25GB
一个小标为long的byte数组全部放满东西需要的内存为(2^63+1)*1b 需要的内存太大 !!

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:short s = 1000,short r = -20000。

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0 ;
  • 例子:int a = 100000, int b = -200000。

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L;
  • 例子: long a = 100000L,Long b = -200000L。
    "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

int32位,为何最大值不是2^32 -1 ?

由于Int最高位,也就是第32不是用来计算value,(最高位)而是用来表示此值是正数还是负数,0表示正数,1表示负数。不参与value计算。

所以只有31位,那还差一位,二进制换算,是从0开始的,在移位过程中,移到30位,就是第31bit值。

int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。注意:7的二进制形式最高位为0

0x7fffffff = 2147483647 = 2^31 - 1

Java 为什么数组下标只能为int不能为long?int32位,为何最大值不是2^32 -1 ? java基本类型取值范围相关推荐

  1. int和long类型取值范围。 基本数据类型 byte , short , char ,int , long , float ,double,boolean类型取值范围

    int和long类型取值范围. 1. int类型 ---------4字节(32位) ​ ------------------------------------------------------- ...

  2. Java的byte类型取值范围为什么是负128到正127呢

    Java的byte类型取值范围是-128~127为什么负数是128正数到127呢 概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为&quo ...

  3. java 枚举类型 取值_java枚举类型

    一: 有时候变量的取值是在有限的集合内,比如说服务器状态:上线.下线.报废等. 可以将这些装备标记为:1.2.3 但是这种情况,我们在给变量赋值的有时候赋值为错误的值比如:0 或者true 这时候就出 ...

  4. Go语言-int类型取值范围

    相比于C/C++语言的int类型,GO语言提供了多种int类型可供选择,有int8.int16.int32.int64.int.uint8.uint16.uint32.uint64.uint.文章目录 ...

  5. char(int……)类型取值范围

    先抛问题,为什么char的取值范围是-128-127或0-255呢? 再做解答: 概念悉知:char类型占一个字节,一个字节8个比特位.计算机中储存数字储存的是补码,正数的原返补相同: 1.当char ...

  6. int类型取值范围的理解

    C语言中,int表示整数类型,占4Byte,也就是32bit.那么为什么int的取值范围是-2147483648~2147483647(即-(2^31) ~ (2^31 -1))呢? 我们知道,这32 ...

  7. c语言 long类型取值范围,详解 IOS下int long longlong的取值范围

    详解 IOS下int long longlong的取值范围 32bit下: unsigned int 0-4294967295 int -2147483648-2147483647 unsigned ...

  8. java中数组输出空格_如何使用数字元素和空格分割字符串并将其存储到Java中的可索引数组中?...

    我有一些困难得到我的输入并将其存储到数组中.我正在制定一个证券交易所类型的程序,用户如果想要购买,出售或计算其股票的资本收益,将进入该程序.所以基本上这个输入将会在使用扫描仪并将其存储到一个变量中.然 ...

  9. java 数组下标6,这里为什么用equals会错,改==就不会?java入门第一集6.8获取数组下标课后练习...

    源自:6-8 使用 foreach 操作数组 这里为什么用equals会错,改==就不会?java入门第一集6.8获取数组下标课后练习 public class practice_1_6_8 { pu ...

最新文章

  1. Facebook AI新架构:全景FPN,同时完成图像实例与语义分割 | 极客头条
  2. JMetro 5.5版发布
  3. 用IMAP4访问Exchange邮箱:Exchange2003系列之七
  4. 《Pytorch - 神经风格转换》
  5. 2021年即墨萃英中学高考成绩查询,2017即墨萃英中学青岛十九中录取分数线发布...
  6. html让后端删除数据库,Chrome在请求之间删除WebSQL数据库
  7. 蓝桥杯 BASIC-11 基础练习 十六进制转十进制
  8. 【CFD学习】yplus,y+,边界层理论,壁面第一层网格
  9. 易语言解压服务器中压缩包,易语言取压缩包中的文件列表源码
  10. 基于微信小程序的毕业设计题目(29)php家政服务预约小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  11. 自定义ImageView实现圆形图片
  12. 微信小程序生成Excel
  13. CentOS7配置sendmail发送QQ邮件
  14. 基于蓝牙协议的无线网络化传感器设计
  15. AWS攻略——Peering连接VPC
  16. PLC实验:水塔水位控制
  17. ICLR 2023 | 清华大学龙明盛组提出通用时间序列神经网络骨干—TimesNet
  18. EDEM证书屡次失效怎么办 ERROR : License Problem :
  19. OA-命令执行漏洞复现
  20. Android中关于ScrollView中有视频播放器VideoView时问题的总结

热门文章

  1. linux touch权限不够,Linux下的Access、Modify、Change , touch的使用以及权限问题
  2. 文件上传java逻辑_Java 文件上传 实例
  3. java 执行顺序_Java代码执行顺序
  4. linux 声明消息函数,linux消息队列函数--解析
  5. 土豚mysql_树莓派LNMP配置
  6. 底量超顶量超级大黑马指标源码_一旦出现底量超顶量形态,是超级大黑马诞生!...
  7. c语言i++和++i程序_使用C ++程序从链接列表中消除重复项
  8. 正则数字字母下划线至少两种_8085微处理器中至少两个8位数字
  9. 调整灰度图像的大小,而无需在Python中使用任何内置函数
  10. python中acosh_带有Python示例的math.acosh()方法