1.整数表示的前缀:基于X进制
二进制:0b
八进制:0
十六进制:0x
2.浮点数比较
float m = 0.1f;
double n = 1.0/10;
System.out.println(m==n);
经典面试题,逻辑上两个数是一样的,但是由于浮点数的存储方式,会引入舍入误差,此时代码会打印false。
所以不能使用==来严格判断两个浮点数是否相等。
一般有两种方法来判断两个浮点数是否相等:
- Math.abs(m-n) < threshhold(譬如0.000001) (这个方法用各种语言都通用)
- 使用BigDecimal 类,内置的compareTo() 方法对两个浮点数进行比较,会忽略小数点后的位数
3.字符编码
Unicode编码:16bit 字符表共2^16个字符 U0000 -- UFFFF
数字对应字符,例如 'a' = 97 = 0x61
char类型变量存储的时候是存储数字
eg: println('\u0061') 会输出 'a'
转义字符: "\t"会输出制表符 "\n"会输出换行符
4.类型转换
强制类型转换:(类型)变量名 高 --> 低 有可能出现内存溢出,或者精度降低的问题
自动类型转换:无需操作,直接转换 低 --> 高
不能对bolean类型进行转换
5.变量作用域
局部变量:作用域在method内,必须初始化后才可以使用
实例变量:作用域在class内,如不初始化,会被赋予类型的默认值(0, 0.0, false, null),从属于类,使用时:类名.变量名 eg: tigger.food
类变量:带有关键字static,可以直接使用(变量名),从属于类
6.常量
final 类型名 变量名(通常大写) = XX;
修饰符不区分先后顺序: public final static int a = 10;
类型名前的都是修饰符
7.变量的命名规范