数据类型扩展及面试题讲解
/*整数拓展,关于进制
二进制(以0b开头) ;十进制;八进制(以0开头);十六进制(以0x开头)
/
int i1 = 10;//十进制,输出结果就是10;
int i2 = 010;//八进制,满8进1,输出结果是8;
int i3 = 0b10;//二进制,满2进1,输出结果是2;
int i4 = 0x10;//十六进制,满16进1,输出结果是16;
int i5 = 0x11;//十六进制,满16进1,输出结果是17;
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out*.println(i5);
//浮点数扩展:银行业务如果用float和double计算是有问题的,下面举例说明
float f = 0.1f;
double d = 1.0/10;//理论上f=d=0.1
System.out.println(fd);//表示判断f和d是否相等,输出是true或者false
//输出结果是false
float d1 = 232323232323f;
float d2 = d1+1;
System.out.println(d1==d2);
//输出结果是true,因为float是存在舍入误差的,处理位数有限
//如果想要计算没有误差,要使用Bigdecimal
//字符扩展:把字符强制转换成数字类型
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//把c1字符转换成整数输出
System.out.println(c2);
System.out.println((int)c2);//把c2字符转换成整数输出
//所有字符本质上还是数字
//原因是:用的unicode编码,有一个表范围是从0-2(16次方),即0-65536,97=a,65=A
//转义字符
// 制表符\t(即输出一个空格)
// 换行\n
System.out.println("Hello\tworld");//即输出Hello world
//对象,从内存分析下面为啥不相等
String sa = new String("Hello,world");
String sb = new String("Hello,world");
System.out.println(sasb);//输出为flase
String sc = "Hello,world";
String sd = "Hello,world";
System.out.println(scsd);//输出为true
// 布尔值扩展
boolean flag = true;
if(flag==true){}
if(flag){}//这两行代码意思是相同的,只不过下面省略简写了,代码要精简易读

浙公网安备 33010602011771号