Java 编程基础
基本数据类型
| 类型名 | 字节长度 | 示例 |
| --- | --- | --- |
| byte | 1 | byte b = 22 |
| short | 2 | short s = 1 |
| int | 4 | int i = 10 |
| long | 8 | long l = 1000L |
| float | 4 | float f = 33.33f |
| double | 8 | double d = 33.33 |
| boolean | 虚拟机确定 | boolean b = true |
| char | 2 | char c = ‘A’ |
数字常量默认为
int
类型小数常量默认为
double
类型boolean
变量默认是 false
小数计算结果不精确
无论是使用 float
还是 double
,进行运算时都会出现计算结果与预期不符的情况,下面看看
可以看到 d
的预期结果是 0.01
,但实际结果是 0.010000000000000002
;f 的预期结果是 0.01
,但实际结果是 0.010000001
。解决办法是使用 BigDecimal
来进行计算
二进制
原码
「原码」就是符号位加上数字的二进制表示,最左边第一位表示符号 (0正数 1负数)。
1 的原码为:
00000001
-1 的原码为:
10000001
反码
一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为 1 不变,其余位数取反;
1 的反码为:
00000001
-1 的反码为:
111111110
补码
在计算机中没有原码,反码的存在,只有补码,补码参与实际运算
「补码」一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则取它的反码然后加 1 (反码加1就是补码),负数的补码表示做补码运算可以得到其对应正数的原码
1 的补码为:
00000001
-1 的补码为:
111111111
-1
求补码的步骤:
先求 -1 的原码是
00000001
再求 -1 的反码是
11111110
最后,求 -1 的补码是
11111111
计算机的实际运算
计算机其实只能做加法运算,1 - 1
其实是通过计算 1 + (-1)
的结果而实现的。
对于
byte
类型,正数的最大表示为0111 1111
,即127
,负数的最小表示为1000 0000
,即-128
,表示范围就是-128 ~ 127
。
评论