Java基础随笔
进制
-
二进制 0b开头
-
十进制
-
八进制 0开头
-
十六进制 0x开头
int i = 10;//十进制
int i2 = 010;//八进制
int i3 = 0x10;//十六进制 0~9 A~F
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false
float f1 = 1234567889909;
float f2 = f1+1;
System.out.println(f1==f2);//true
出现以上结果为什么呢?
原来,浮点数能表现的字长是有限的,但是他也是离散的,浮点数一般存在一种叫舍入误差的东西,很多数没有办法精确的表示,只能表示一个大约数,只是接近但不等于,这一系列属性表现出浮点数不适用于作比较,所以我们应该完全避免使用浮点数进行比较。那银行业务怎么表示呢?这里提供了一个BigDecimal这样的数学工具类,银行业务用BigDecimal就OK啦。
字符拓展
char c1 = 'a';//a
char c2 = '中';//中
//强制转换
System.out.println((int)c1);//97
System.out.println((int)c2);//20013
char c3 = '\u0061';
//转义
System.out.print(c3);//a
//转义字符
\t 制表符
\n 换行
强制转换可以把字符变为数字:
所有的字符本质还是数字,char类型涉及Unicode编码问题,Unicode编码(占2个字节)可以处理各种语言的文字。
String s1 = new String(original:"Study God");
String s2 = new String(original:"Study God");
System.out.print(s1==s2);//false 比较的是对象
String s3 = "Study God";
String s4 = "Study God";
System.out.print(s3==s4);//true 比较的是值