进制
int i=0b10 // 二进制 0b
int i0=010 //八进制 0
int i1=10 //十进制
int i2=0x10 //十六进制 0x
银行业务用什么表示?有关于钱的问题
//采用BIgDecimal类,(数学工具类)
float //有限 离散 舍入误差 大约 接近但不等于
double //最好完全使用浮点数进行比较
public class Q { public static void main(String arg[]){ float i1=0.1f; double i2=1.0/10; System.out.println(i1==i2);//false } }
通过上面的小测试显示结果是false。
public class Q { public static void main(String arg[]){ float i1=0.1f; double i2=1.0/10; System.out.println(i1==i2);//false float i3=1234549674865341f; float i4=i3+1; System.out.println(i3==i4);//ture } }
加入另一个小测试结果页同样令人出乎意料,两个明明看似相等的数,在电脑上运行得到的结果确是不相等,而两个明显不相等的数在电脑上运行结果确是相等的。其原因就是float的数据大小有限,且运算带有舍入误差和接近但不等于。
字符拓展:package Text; public class Q { public static void main(String arg[]){ float i1=0.1f; double i2=1.0/10; System.out.println(i1==i2);//false float i3=1234549674865341f; float i4=i3+1; System.out.println(i3==i4);//ture char s1='A'; char s2='加'; System.out.println(s1); System.out.println((int)s1);//强制转换 输出结果为65 System.out.println(s2); System.out.println((int)s2);//强制转换 输出结果为21152 } }
//所以字符的本质还是数字。编码 Unicode表(A=65,a=97) 2 字节 0~2的16次方=65536。
char s3 = 'u0067';
试试看此条代码所输出的是哪个字符。
转义字符u 4位十六进制数据所表示的字符,如u0014
t 水平制表符
v 垂直制表符
r 回车
n 换行
…
public class Q { public static void main(String arg[]){ float i1=0.1f; double i2=1.0/10; System.out.println(i1==i2);//false float i3=1234549674865341f; float i4=i3+1; System.out.println(i3==i4);//ture char s1='A'; char s2='加'; System.out.println(s1); System.out.println((int)s1);//强制转换 输出结果为65 System.out.println(s2); System.out.println((int)s2);//强制转换 输出结果为21152 char s3 = 'u0067'; System.out.println(s3); System.out.println("=============================="); String ra = new String("Hello word"); String rb = new String("Hello word"); System.out.println(ra == rb);//false } }
这里的ra rb内容明明是同样的,但为什么不相等呢?
String类型new的是一个新的对象,在面向对象的过程中,sa和sb是两个不同的对象,储存地址不同,所以不等。
boolean flag = true; if(flag==ture){} //新手 if(flag){} //老手
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)