Java基础04 数据类型扩展及面试题讲解

188 阅读2分钟
整数拓展:

  进制    二进制 0b  十进制  八进制0 十六进制0x

int i = 10;//十进制10

int i2=010;//八进制 8

int i3=0x10;//十六进制16   十六进制从  0-9  A-F  16

浮点数拓展 :

   最好完全避免使用浮点数进行比较,而要通过BigDecimal来比较

浮点数拓展,银行业务如何表示?

float  表示的数据有限  离散 舍入误差  大约 接近但不等于

BigDecimal 数学工具类

不要用float和double进行浮点数比较,而要同通过BigDecimal来比较

典型案例:

float f = 0.1f  //0.1

double d=1.0/10   //0.1

但是d != f 

float a1 = 2635565;

float a2 = a1+1;

但是a1 == a2 这就是浮点的bug

字符拓展:

所有字符本质还是数字,通过Unicode的编码方式,将字符编译为数字,每个字符都一一对应。

以'u0061','u0068',十六进制数,这种形式编码,编码范围U0000~UFFFF

Unicode编码方式 占2个字节,长度0~65523 即2的16次方

char b3=''u0061; //会输出a

因为 字符‘a’输出数字是97,97转换为十六进制为61,于是由编码u0061就可以输出字符‘a’

字符‘中’ 输出数字为20013,20013转化为十六进制数为4E2D,于是由编码u4E2D就可以输出字符‘中’

char b1= 'a';

char b2 ='中';

System.out.println(b1);  //a

System.out.println((int)b1); //输出97  强制转换,将char类型转换为int类型

System.out.println(b2);

System.out.println((int)b2);//输出 20013  强制转换,将char类型转换为int类型

转义字符:
转义字符意义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
空字符(NULL)000
ddd1到3位八进制数所代表的任意字符三位八进制
xhh1到2位十六进制所代表的任意字符二位十六进制

转义字符:System.out.println("Hello\nWorld");