Java基础
TIPS
数据类型
类型 | 字节数 | 范围 | 举例 |
---|---|---|---|
byte | 1 | $-128\sim 127$ ($-2^7\sim 2^7 - 1$) | 123 |
short | 2 | $-2^{15}\sim 2^{15} - 1$ | 12345 |
int | 4 | $-2^{31}\sim 2^{31} - 1$ | 12345678 |
long | 8 | $-2^{63}\sim 2^{63} - 1$ | 1234567890123L |
float(高精度) | 4 | $-2^{31}\sim 2^{31} - 1$ | 1.2F |
double(高精度) | 8 | $-2^{63}\sim 2^{63} - 1$ | 1.3, 1.3D |
boolean | 1 | true/false | |
char | 2 | ‘A’ |
为什么byte的范围为$-2^7\sim 2^7 - 1$?
Java中所有整数类型都是使用补码来表示有符号整数
1 byte = 8 bit
8 bit的表示方法:0000 0000,每一位只有0 1,也就是二进制在字节数范围表示中规定:
- 第一位如果是0:表示正数
- 第一位如果是1:表示负数
最小值:1000 0000 表示-128
最大值:0111 1111 表示127
十进制 原码(二进制) 反码 补码 +5
0000 0101
- 0000 0101
-5
1000 0101
(原码)1111 1010
(反码)1111 1011
(补码)-1
1000 0001
(原码)1111 1110
(反码)1111 1111
(补码)-128
无 无 1000 0000
(特殊情况)
- 原码
定义: 原码是最简单的表示形式,符号位为 0 表示正数,为 1 表示负数,数值部分为该数的绝对值的二进制表示。
示例:
- +7 的原码为 00000111
- -7 的原码为 10000111
- 反码
定义:
对于正数,反码与原码相同。
对于负数,反码符号位不变,其余位按位取反。
示例:
- +7 的反码为 00000111
- -7 的反码为 11111000
- 补码
定义:
对于正数,补码与原码相同。
对于负数,补码是在反码的基础上加 1。
示例:
- +7 的补码为 00000111
- -7 的补码为 11111001
总结
表示形式 | 符号位 | 数值位 |
---|---|---|
原码 | 0 表示正数,1 表示负数 | 绝对值的二进制表示 |
反码 | 0 表示正数,1 表示负数 | 正数与原码相同,负数按位取反 |
补码 | 0 表示正数,1 表示负数 | 正数与原码相同,负数在反码基础上加 1 |
补码的作用用于给计算机识别做加法
如,计算$7 - 3$
$7$的原码:0000 0111
$-3$的原码:1000 0011
$7$的反码:0000 0111
$-3$的反码:1111 1100
$7$的补码:0000 0111
$-3$的补码:1111 1110
0000 0111
加
1111 1110
等于
0000 0101
不是1 0000 0101
的原因是,最高位的进位会被丢弃,称为溢出
可以使用如下方法调用可变个数形参
1
2
3
4
5
6
7
8 public void func(int ... argc) {};
public void func(String ... argc) {};
...
// 类似于
public void func(int[] argc) {};
public void func(String[] argc) {};
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 JasonQian's Blog!