Day 05 Java数据类型拓展(部分)
Java基本数据类型的拓展
整型拓展
我们在日常生活中使用的整数大多数是十进制,计算机可以识别的数则是二进制,在学习Java和其他计算机语言时我们还接触到了八进制和十六进制,那么它们在Java中有什么区别呢?
public class Jz{
public static void main(String[]args){
// 二进制 0b;八进制 0;十进制 ;十六进制 0x
int i1=0b10;
int i2=010;
int i3=10;
int i4=0x10;
System.out.println("i1="+i1);
System.out.println("i2="+i2);
System.out.println("i3="+i3);
System.out.println("i4="+i4);
}
}
运行结果:
浮点型拓展
- Java中的浮点型是有限的,离散的,有舍入误差,大约,接近但不等于
- 所以最好完全使用浮点数进行比较
public class Demo02 {
public static void main(String[] args) {
float f1=0.1F;
double d1= 1.0/10;//根据数学常识来看f1=0.1=d1的
System.out.println("f1="+f1);
System.out.println("d1="+d1);
System.out.println(f1==d1);//如果f1和d1相等则输出true否则输出false
}
}
程序运行结果是
显然输出的结果是false,说明f1和d1不相等
还有一个有趣的例子
public class Demo02 {
public static void main(String[] args) {
float f1=31414926535897626L;
float f2=f1+1;
System.out.println(f1==f2);//显然f1是不等于f2的这里的结果应该输出false
}
}
程序运行结果:
字符拓展
- 所有的字符本质上都是数字
- 根据编码 Unicode表(a=97,A=65)
- 每个字符占两个字节
public class Demo02 {
public static void main(String[] args) {
char a1='a';
char a2='*';
char a3='安';
System.out.println("a1="+(int)a1+' '+a1);//(int)a1 强制类型转换
System.out.println("a2="+(int)a2+' '+a2);
System.out.println("a3="+(int)a3+' '+a3);
}
}
程序运行结果为