整型
类型 | 占用存储空间 | 范围 |
byte | 1个字节 | - 2^7 ~ 2^7 - 1(- 128 ~ 127) |
short | 2个字节 | - 2^15 ~ 2^15 - 1(- 32768 ~ 32767) |
int | 4个字节 | - 2^31 ~ 2^31 - 1(- 2147483648 ~ 2147483647) 约21亿 |
long | 8个字节 | - 2^63 ~ 2^63 - 1 |
老李说明:
上述类型表示的范围,可以不用实际的背下来,但是需要了解大概。
2^7 指的是数学中的2的7次幂(次方),以byte为例,范围可以这样记忆,2^8 = 256,除以一半就是128,所以正数表示128个,负数表示128个,但是负数与正数之间还有一个整数0,所以正数到127!同理,short为 2^16 = 65536等。
在定义实际数据类型的时候,int 够大多数情况的使用。如果不够,就用 long类型就可以了。
java语言的整型常数默认为int型,占4个字节,在声明long型常量后面可以加 "l" 或 "L"。这里建议使用大写的 "L" ,因为小写的 "l" 和数字1很像,容易分不清(当然在文本编辑器可以很容易区分,但是在开发工具中就不一定很容易区分啦!)
代码示例
/**
* long 类型变量的声明
*/
public class TestLong{
public static void main(String[] args){
// 正确代码
long success = 10000000; // 编译通过,在int型表示的范围内(21亿内)
// 不正确代码(编译器是不通过的,我这里也仅仅是更好的演示,想要通过就注释掉这段代码)
long failed = 10000000000; // 编译不通过(100亿远超过21亿),超过int所表示的范围
// 报错:The literal 10000000000 of type int is out of range 修改代码为:
long failed = 10000000000L; // 加上一个大小的 L
/**
* 说明:java默认的整数类型是int型
* 想要使用更大的数字常量就要在数字后面加上一个 "L",小写 "l"也可以,但是不建议!
* 即使前面使用的是long型定义的变量,后面如果不超过int型也会默认是int型,只有在后面加
* 上 "L"才可以转换为long型!大家一定要记住哦,否则总会编译不通过,或者以为自己是在使
* 用long型,实际上还是int型 !
}
}
java 语言整型常量的四种表示形式
- 十进制整数,例如:10,100,-50等;
- 二进制数,要求以0b或者0B开头,例如:0b10011000;
- 八进制整数,要求以0开头的,例如:010,011;
- 十六进制数,要求以0x或者0X开头,例如:0x10;
在这里可以帮大家回忆一下高中学习的十进制与二进制之间的转换!
十进制转二进制
十进制整数转换为二进制整数采用的是"除2取余,逆序排列"法。
十进制数21转成二进制就是:10101
二进制转十进制
二进制转十进制采用的是"按权展开法,即权相加法"。按照所给的二进制数从左到右依次开始,二进制数中的每一项数乘2的当前二进制数位数-1次幂,最高次依次递减,最后相加即可得出十进制数,完成二进制数转十进制数。
类似的像八进制数,十六进制数等之间转换,如果还是不会算的情况下,我们直接上工具。其实在实际开发过程中我们大多数的情况是不需要自己计算的,一是数大容易计算错误,二是浪费时间,有计算的时间不如多写写代码。
在线进制转换工具:进制转换 - 在线工具 (tool.lu)https://tool.lu/hexconvert/
二进制、十进制和十六进制数的对应关系
十进制数 | 二进制 | 十六进制 |
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | a |
11 | 1011 | b |
12 | 1100 | c |
13 | 1101 | d |
14 | 1110 | e |
15 | 1111 | f |