再回首,Java温故知新(三):Java基本数据类型之整型
注:因为此次学习打算看一遍相关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。同理,整型数据的存储需求和取值范围如下:
类型 | 存储需求(字节) | 取值范围 |
byte | 1 | -128 ~ 127 |
short | 2 | -32768 ~ 32767 |
int | 4 | 约等于-21亿 ~ 21亿 |
long | 8 | 正常使用中不太可能溢出,范围约为-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));
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。