分类
占字节数
类型 | 占字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
boolean | 1 |
class | 4 |
interface | 4 |
数组 | 4 |
整数类型
byte
- 占用存储空间:1 字节
- 表数范围:-128 ~ 127
short
- 占用存储空间:2 字节
- 表数范围:-32768 ~ 32767
int
- 占用存储空间:4 字节
- 表数范围:-2147483648 ~ 2147483647
long
- 占用存储空间:8 字节
- 表数范围:-263 ~ 263-1
表现形式
-
十进制:默认
-
八进制:以 0 开头,例:051
-
十六进制:以 0x 开头,例:0x2A
-
二进制:以 0b 开头,例 0b0100
-
代码
public class Index { public static void main(String[] args) { int a = 10; int b = 051; int c = 0x2A; int d = 0b0100; System.out.println("十进制数:" + a); System.out.println("八进制数转十进制数:" + b); System.out.println("十六进制数转十进制数:" + c); System.out.println("二进制数转十进制数:" + d); } }
-
运行结果
注意
-
在声明长整型 long 数据时,默认类型为 int,若数据过大编辑器可能报语法错误,如下图:
-
为解决这样的问题,建议声明长整形数时,在末尾加一个L,来表示长整型数。
浮点类型
float
- 占用存储空间:4 字节
- 表数范围:-3.403E38 ~ 3.403E38
double
- 占用存储空间:8 字节
- 表数范围:-1.798E308 ~ 1.798E308
表现形式
-
十进制:3.14、0.314
-
科学计数法:3.14E2、0.314E-2
-
代码
public class Index { public static void main(String[] args) { double a = 3.14; double b = 0.314E2; double c = 3.14E-2; System.out.println(a); System.out.println(b); System.out.println(c); } }
-
运行结果
数据不精确
-
浮点数不精确,尽量不要用于比较。具体看下面的例子
-
例 1
public class Index { public static void main(String[] args) { float a = 0.1F; double b = 1.0 / 10; System.out.println(b); System.out.println(a == b); } }
-
例 2
public class Index { public static void main(String[] args) { float a = 112312123F; float b = a + 1; System.out.println(a == b); } }
引入计算包
-
可以引用 java.math 包里的两个类:BigInteger 和 BigDecimal,这两个类可以处理任何长度的数值。
-
BigInteger:实现任意精度的整数运算。
-
BigDecimal:实现任意精度的浮点运算。
-
代码实现
import java.math.*; public class Index { public static void main(String[] args) { double a = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1; BigDecimal bd = BigDecimal.valueOf(1.0); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); System.out.println(a); System.out.println(bd); } }
-
代码的 7 ~ 12 行是借助 BigDecimal 类对一个数值进行减法,每次减 0.1。
字符型
char
- 占用存储空间:2 字节
- char 类型用来表示在 Unicode 编码表中的字符。
定义字符
char a = 'a';
char b = '中';
十六进制字符
-
在 Unicode 编码表中可以使用十六进制表示一个字符,例:
-
代码
public class Index { public static void main(String[] args) { char varName = '\u0070'; System.out.println(varName); } }
-
十六进制 0070 表示字母 p。\u 表示转义字符。
转义字符
-
转义字符表
转义符 含义 Unicode值 \b 退格 \u0008 \n 换行 \u000a \r 回车 \u000b \t 制表符 \u0009 \ " 双引号 \u0022 \ ’ 单引号 \u0027 \ \ 反斜线 \u005c -
代码实现
public class Index { public static void main(String[] args) { char a = '\u0061'; char b = '\u0062'; System.out.println("第一次输出\n" + a + '\b' + b); System.out.println("第二次输出\n" + a + '\n' + b); System.out.println("第三次输出\n" + a + '\r' + b); System.out.println("第四次输出\n" + a + '\t' + b); System.out.println("第五次输出\n" + a + '\"' + b); System.out.println("第六次输出\n" + a + '\'' + b); System.out.println("第七次输出\n" + a + '\\' + b); } }
布尔值
Boolean
- 占用存储空间:1 位(不是 1 个字节)
- 值:True-真,False-假
- Java 中布尔值与数字 1 0 无关
使用场景
-
一般用于条件判断,if 语句。
-
关系表达式、条件表达式及逻辑运算最终的运算结果是一个布尔值。
-
代码
public class Index { public static void main(String[] args) { if(true) System.out.println(true); if(10 > 1) System.out.println(true); if(10 > 1 && 1 > 0) System.out.println(true); } }