数据类型相关知识补充
整数拓展
int i = 10; //十进制
int i = 010; //八进制0
int i = 0x10; //十六进制0x 0~9 A~F
浮点数拓展
//float 有限,离散,舍入误差,大约,接近但不等于
最好完全使用浮点数进行比较,银行使用BigDecimal
-
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println( f==d); //false -
float d1 = 231313f;
float d2 =d1 +1;
System.out.println(d1 == d2 ); //true
字符拓展
所有的字符本质都是数字!
Unicode 2字节 65536 = 2的16次方 个字符
例:char c3 = ‘\u0061’; //c3 = ‘a’;
布尔值扩展
Boolean flag = true;
if (flag) {
}
转义字符
\t TAB制表符
\n 换行符
特殊的判断
从对象、内存分析
目前本人所知,
3. 第一种是2个引用,new相当于新建地址空间,比较 == 是完全比较,但是2个引用的指针所指向的地址空间不一样,即使他的值一样,结果还是false;
4. 第二种也是2个引用,但是使用的是内存中的常量区块,所以指针指向同一个地址,所以 == 的结果是true!
类型转换
byte,short,char ->int -> long -> float -> double
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题