(JAVA学习笔记) 关于数据类型的一些扩展-面试时经常问到的问题

JAVA数据类型的一些扩展

一.整数类型扩展

整数各种进制表示方法:

//整数扩展 十进制 二进制0b  八进制0 十六进制0x
        int i = 1;
        int i1 = 0b10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println(i);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);

在这里插入图片描述

二.浮点类型扩展

我们通常用float或者double来进行浮点类型的定义,但其中也有一些问题要注意。
我们来看下面这部分代码:

float i1 = 0.1f;
        double i2 = 1.0/10;
        System.out.println(i1==i2);
        float i3 = 12345465564645f;
        float i4 = i3+1;
        System.out.println(i3==i4);

输出结果:在这里插入图片描述
在这里我们可以看到,i1和i2明明同样是0.1的数据对比却是false;
i3,i4明明不等,输出却是true;这是为什么呢?
浮点类型大概可以概括为以下几个特征:有限,离散,舍入误差,大约,接近但不等于。
所以程序中应尽量避免浮点数的比较,并且一些要求精确度较高的数字不要用浮点类型表示。
因此在需要表示一些要求精度较高的业务的时候,例如银行业务的钱。
通常用BigDecima提供的方法进行一些比较和运算。

三.字符类型的扩展

先看下面一组代码:

 char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//将c1强制转换为int类型
        System.out.println(c2);
        System.out.println((int)c2);//将c2强制转换为int类型

        char c3 = '\u0061';
        System.out.println(c3);

输出结果:
在这里插入图片描述
可以看到字符’a’和字符’中’在被强制转换为int类型之后变成了对应的数字,由此可以看出字符从本质上来说就是数字
所有字符都能在Unicode编码表上找到对应的数字表示,范围为U0000 - UFFFF;所以c3的输出结果就是’a’。

原创文章 18 获赞 3 访问量 394

猜你喜欢

转载自blog.csdn.net/qq_43601784/article/details/105822817