java数据类型深入理解
Java数据类型拓展
整型拓展:二进制0b 八进制0 十六进制0x
public static void main(String[] args) {
// write your code here
//二进制0b 八进制0 十六进制0x
int i=010; //8
int j=0b10; //2
int k=0x10; //16
System.out.print(i+"\t"+j+"\t"+k);
}
浮点型:float,double他们的能存储的长度都有限
尽量不使用浮点数,容易产生输入误差。java为我们提供了BigDecimal类
float a=0.1f;
double b=1.0/10;
System.out.println(a+"\t"+b);
System.out.println(a==b);
float c=45678895f;
double d=45678895;
System.out.println(c+"\t"+d);
System.out.println(c==d);
运算结果:
0.1 0.1
false
4.5678896E7 4.5678895E7
false
我们会发现a和b明明显示的一样,为什么却不相等呢
c和d明明赋值是一样的,为什么显示出的结果却不一样呢
那是因为float是32位长的也就是4个字节,所以存储的数字是有限的,如果数字超出一定范围,它就会进行四舍五入,导致精度损失
而double是64位长就是8个字节,所以储存的小数中小数点后的位数更多,一般都不会精度损失,在上述结果中也可以看出d会更接近真实值。
字符型:所有的字符本质上还是数字
所以所有的字符都能强制转化为数字
char w='A';
char q='中';
System.out.println((int)w+"\t"+(int)q);
结果:
65 20013
编码:Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。
我们可以去查看ASCII码表,A就是用65表示,a用97,大小写字母之间相差32,以此类推,B就是66,b就是98

浙公网安备 33010602011771号