一.基本数据类型
编译器根据每个变量或者常量的数据类型为其分配内存。
Java为数值、字符值和布尔值数据提供八种基本数据类型
类型名 | 范围 | 存储大小 |
---|---|---|
byte | ![]() | 8位带符号数 |
short | ![]() | 16位带符号数 |
int | ![]() | 32位带符号数 |
long | ![]() | 64位带符号数 |
float | 负数范围:-3.4028235E+38~-1.4E-45 整数范围:1.4E-45~3.4028235E+38 | 32位,标准IEEE754 |
double | 负数范围:-1.7976931348623157E+308~-4.9E-324 整数范围:4.9E-324~1.7976931348623157E+308 | 64位,标准IEEE754 |
boolean | 只有 true 和 false 两种取值 | 4个字节,在JVM中用int数据类型代替,boolean数组会被编码为JVM的byte数组 |
char | 默认Unicode编码 | 16位,2个字节 |
【常见问题】为什么 byte 的取值范围是 -128 到 +127
首先需要了解原码、反码、补码的知识:
- 原码:二进制表示法,最高位为符号位,0表示正,1表示负,其余位表示数值的大小
- 反码:整数的反码和原码相同,负数的反码除开符号位外对原码逐位取反
- 补码:正数的补码和原码相同,负数的补码是在其反码的末位加1
Java 中用补码表示二进制数。
最大正数是01111111,其对应的数值为127
11111111+1=10000000 相加的是后面7位,到第8位溢出,故为10000000 表示-128
二.运算
操作符 | 名称 | 说明 |
---|---|---|
++var | 前置自增操作符 | var值加1,且使用var增加后的新值 |
var++ | 后置自增操作符 | var值加1,但使用var原来的值 |
--var | 前置自减操作符 | var值减1,且使用var减少后的新值 |
var-- | 后置自减操作符 | var值减1,但使用var原来的值 |
- 除法运算要注意 5/2 得到的是2,如果想得到小数,除数或者被除数至少有一个需要为浮点数。
- 总是可以将一个数值赋给支持更大数值范围类型的变量。
- 缩窄类型必须显式完成。