数据类型扩展及面试题讲解
一、整数拓展
-
整数的进制
- 二进制:0b开头
- 八进制:0开头
- 十进制
- 十六进制:0x开头
int i = 10; int i1 = 010; //八进制0 int i2 = 0x10; //十六进制0x
二、浮点数拓展,银行业务怎么表示?
-
float :是有限、离散的,会舍入误差 得到一个大约接近但不等于的值。
-
double
float f = 0.1F; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d); //false System.out.println(f); System.out.println(d); float f1 = 2131412441234F; double d2 = f1+1; System.out.println(f1==d2);//true
-
最好完全避免使用浮点数进行比较
-
一般使用 BigDecimal 数学工具类
三、字符拓展
-
所有字符本质还是数字
char c1 = 'A'; char c2 = '中'; System.out.println(c1); System.out.println((int) c1); //强制转换 System.out.println(c2); System.out.println((int) c2);//强制转换
-
编码 Unicode 表:65=A,10013=中 2字节 0-65536 Excel 2到16次方=65536
//U0000 UFFFF
char c3 = '\u0041'; System.out.println(c3);
四、转义字符
-
所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
-
列:\n换行
System.out.println("Hello\nworld");
-
所有的转义字符和所对应的意义:
转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \ 代表一个反斜线字符’’’ 092 ’ 代表一个单引号(撇号)字符 039 " 代表一个双引号字符 034 ? 代表一个问号 063 \0 空字符(NUL) 000 \ddd 1到3位八进制数所代表的任意字符 三位八进制 \xhh 十六进制所代表的任意字符 十六进制 注意:
1. 区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换
2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == ‘\xF’
五、布尔值扩展
-
Less is more ! 代码要精简易读。
boolean flag = true; if (flag==true){}//新手 if (flag){}//老手