Java基本数据类型拓展知识&&类型转换
整数数据类型拓展
二进制:0b(零b开头)
八进制:0(零开头)
十进制:正常表示
十六进制:0x(零x开头)
例:
int i = 0b10;
//二进制,结果为:2
int i = 010;
//八进制,结果为:8
int i = 10
//十进制,结果为:10
int i = 0x10;
//十六进制,结果为:16
浮点数据类型拓展
浮点数的计算会出现问题,所以最好避免使用浮点数进行比较。
如果要使用,最好使用封装好的工具类(BigDeciamal)
//例一:
float f = 0.1F;
double d = 1/10;
System.out.println(f==d);
//结果输出为:false
//例二:
float f2 = 10F;
float f3 = 10F;
System.out.println(f2==f3);
//结果输出:true
//例三:
float f4 = 111111515151f;
float f5 = f4+1;
System.out.println(f4==f5);
//结果输出:true
为什么会出现错误呢?
这关乎到计算机底层原理中内存的部分,所以最好不要使用浮点类型进行比较。
字符拓展
所有的字符本质还是数字。
Java中使用的编码方案:
Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
//Unicode能表达65536个字符;长度从\U0000到\UFFFF;
char c = 'a';
char c1 = '中';
System.out.println((int)c);
System.out.println((int)c1);
//结果输出:97 20013
char c2 = '\u0061';
System.out.println(c2);
//结果输出:a
类型转换
遵循从低到高的顺序,不同类型的数据先转换为同一类型,然后再运算;
byte,short,char -> int -> long -> float -> double
强制转换:(类型)变量名:高 ->低
int i = 127;
byte b = (byte)i;
System.out.println(b);
//结果为:127
自动转换:自动转换:低->高
byte b = 10;
int i = b;
System.out.println(i);
//结果为:10
避免内存溢出:
//例:
int i = 128;
byte b = (byte)i;
System.out.println(b);
//结果为-128
/*因为byte数值类型最高取值为127
i=128,结果溢出导致数值不确定*/