您的位置:首页 > 编程语言 > Java开发

再回首,Java温故知新(三):Java基本数据类型之整型

2015-05-26 22:41 232 查看
  注:因为此次学习打算看一遍相关Java源码,所以更新速度一开始会相对慢一些。还有就是不得不佩服那群大牛啊,算法不是一时半会能懂的,本来打算直接弄懂的,后来感觉这样效率太低了,所以决定大体上通读一遍,反正以后肯定还会回来再次学习。

  Java作为一种强类型语言,意味着每一个变量都会有特定的类型,Java共有8种基本类型,其中有4种整型(byte、short、int、long)、两种浮点型(float、double)、1种字符型(char)和一种布尔型(boolean),值得注意的是,虽然字符串String非常常用,但是它却不属于基本类型。

  一、整型

  整型在表示没有小数部分的数值,允许负数(Java中没有无符号类型,即unsigned),计算机中的存储信息的最小单位是位(bit),存储容量的基本计量单位是字节(Byte),一个字节占8个位,整型数据的取值范围根据其存储的位数计算,即2的N次方,例如byte类型占1个字节,占8个位,所以共有256个值,负数包括-128~-1,正数包括0~127。同理,整型数据的存储需求和取值范围如下:

类型存储需求(字节)取值范围
byte1-128 ~ 127
short2-32768 ~ 32767
int4约等于-21亿 ~ 21亿
long8正常使用中不太可能溢出,范围约为-92亿亿 ~ 92亿亿
  另外在程序中处理整型数据时可能会用到各种类型的写法,以下列出几种常用的:

写法含义备注
12345十进制与书面相同
12345L十进制,长整型(long)如果数值大于int型数据的最大值却没有加L,会报错
012345八进制不推荐,易混淆
0x12345十六进制二进制数据的另类表示法,便于书写和记忆
0b10010101二进制Java 7新加入的写法,之前版本不支持
1_000_000字面量分割与书面中1,000,000相同,Java 7新加入的写法,编译器会自动忽略下划线
  以下是在大体上略一遍源码时的疑问及解答:

 1.Integer.parseInt和Integer.valueOf有什么区别?

  parseInt返回的是int型数据,而valueOf返回的是Integer封装类型,后者可以调用Integer中的API进行其他操作。

 2.Integer.getInteger是干什么用的?

  在日常开发中接触较少,用来获取系统参数的,源码中调用System.getProperty(String key),然后使用decode进行解析

 3.Integer.decode和Integer.valueOf有什么区别

  前者可以解析0x,#等表示的其他进制,而后者只能转换十进制

 还需要注意的地方有,Byte和Short的compareTo是直接计算差值,即a-b,而Integer和Long的compareTo却是返回-1、0和1;Byte、Short、Integer的hashCode()为返回当前数值的int值,而Long类型的处理方法为return (int)(value ^ (value >>> 32));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: