数据类型拓展
整数拓展
进制:
- 二进制0b
- 十进制
- 八进制0
- 十六进制0x
浮点数拓展:
float f = 0.f;
double d = 1.0/10;
sout(f==d); // false
===========================================
float d1 = 2312151645645123f;
float d2 = d1 + 1;
sout(d1==d2); //true
float 与 double 是有限离散舍入误差
那么银行业务怎么表示:BigDecimal 数学工具类
字符拓展:
// 所有字符本质上还是数字
char c1 = 'A';
sout((int)c1); //97(ASSIC码)
转义字符:
\t 制表符
\n 换行
布尔值拓展:
boolean flat = true;
if (flag){} == if (flag==true)
类型转换
运算中,不同类型的数据先转换成同一类数据再进行计算
低————————————————————>高
byte,short,char–>int–>long–>float–>double
**强制转换 **: (类型)变量名(高到低)
自动转换: 低到高
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
// JDK7 新特性, 数字之间可以用下划线(_)分割 1_0000_0000
int monet = 10_0000_0000;
int years = 20;
int total = monet*years;//-1474836480
long total = monet*years;//默认是int,转换之前已经存在问题
long total3 = money*(long)years;//20_0000_0000
常用大写 L ,少用小写 l