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

posted @ 2022-03-09 20:01  阿落小世界  阅读(45)  评论(0)    收藏  举报