类型 | 占用空间 | 表数范围 |
---|---|---|
byte | 1字节 | -27 ~ 27-1(=127) |
short | 2字节 | -215 ~ 215-1(=32767) |
int | 4字节 | -231 ~ 231-1(=大约21亿) |
long | 8字节 | -263 ~ 263-1 |
long a = 12345678;
long b = 1234567890123L;
L
,大写或小写都可以。类型 | 占用空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
double a = 314e-2;
float b = 3.14f;
double c = 3.14;
浮点型常量的默认类型是double。float类型的数值有一个后缀F或者f,也可以在浮点数值后添加后缀D或者d,以明确其为double类型。
浮点数存在舍入误差,不适合用于不允许误差出现的金融计算领域。浮点数字不能精确表示,因此要避免在比较中使用浮点数。
java.math包下面的两个类:BigInteger和BigDecimal,可以处理任意长度的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
// 利用BigDecimal计算 1.0-0.1-0.1-0.1-0.1-0.1
BigDecimal a = BigDecimal.valueOf(1.0);
a = a.subtract(BigDecimal.valueOf(0.1));
a = a.subtract(BigDecimal.valueOf(0.1));
a = a.subtract(BigDecimal.valueOf(0.1));
a = a.subtract(BigDecimal.valueOf(0.1));
a = a.subtract(BigDecimal.valueOf(0.1));
System.out.println(a);
//得到0.5
// 直接计算1.0-0.1-0.1-0.1-0.1-0.1
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
// 得到0.5000000000000001
}
}
char a = 'A'; // 英文字母
char b = '汉'; // 中文汉字
char c = '\u0061'; // Unicode编码
char d = '\n'; // 转义字符
String s = "ABCDEFG"; // String类其实就是一个字符序列
转义符 | 表示的内容 | Unicode编码值 |
---|---|---|
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\\ | 反斜杠 | \u005c |
\” | 双引号 | \u0022 |
\’ | 单引号 | \u0027 |
boolean t = true;
if (t) {
// true
} else {
// false
}
char
↓
byte → short → int → long
↓
float → double
// 值得注意的是,下面这些数据类型的自动转换发生的时候,是会有精度损失的!
int/long → float
long → double
short a = 88; // 合法
short b = 88888888; // 非法,超出表数范围了!
(tape)var
double pi = 3.1415926;
int a = (int)pi; // 这里会直接舍弃小数部分
int x = 120;
System.out.println((char)x); // 这里输出的是字母 x 哦~
苏轻笔记!
不要拿boolean类型和任何类型做强制类型转换!会出事情!