java数据类型拓展
1.整数拓展(进制)
-
二进制:(以0b开头)例如:
int i = 0b10;//b为小写
-
八进制:(0开头)例如:
int i = 010;
-
十进制:例如:
int i = 10;
-
十六进制:(0x开头 )例如:
int i = 0x10;//x为小写(使用0-9来表示十进制中的十个数字,同时使用字母A-F(不区分大小写)来表示十进制中的10-15)
输出时会将所有进制转换成10进制。
2.浮点数拓展
问题1:在银行中该使用什么字符类型进行银行业务处理?
通常我们新手可能会使用float,或者double,但是有问题的。
举例1:
代码:
float f=0.1f; double d = 1.0/10; System.out.println(f==d);
注:f==d这种方式可以判断f是否等于d,正确输出ture,错误输出false
输出:false(不同),但我们都感觉f和d是相同的,但运行结果却显示false。
举例2:
代码:
float f1 = 242342424234234f; float f2 = f1+1; System.out.println(f==d);
输出:ture。但我们都感觉f1和f2是不相同的,但运行结果却显示ture。
原因:浮点数是有限的,离散的,具有舍入误差,是大约的,接近但不等于的,因此我们最好避免使用浮点数进行比较。
所以:对应银行业务处理我们应该使用一种类:BigDecimal
字符类拓展
举例1:
-
代码:
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println(c2); System.out.println((int)c1); System.out.println((int)c2); //其中System.out.println((int)c1);为强制转换,可以将字符转换成数字; //输出:a,中,97,20013;
从上面我们可以看出字符能转换成数字,因此我们可以知道:
-
所有的字符本质还是数字
-
char类型涉及到编码(Unicode)问题,该编码占2个字节,并可以从0写到65536个及以上
举例2:
-
代码:char c3 = '\u0061';System.out.println(c3);其中\u代表给0061转义
-
输出:a
转义字符
-
\t(制表符)类似tab键的长度空格
-
\n(换行)
问题:当我们代码输入以下图片内容时
编辑
结果:
这是为什么?(涉及到对象和内存来分析)
布尔值拓展
(less is more 代码要精简易读)
代码:
boolean flat = ture; if(flag=ture){} if(flag){} //其中if(flag=ture){}和if(flag){}所表示的意思是一样的因此我们可以将前者简化成后者。