数据类型及其拓展

Posted "ⁿᵃⁿᵒ"

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型及其拓展相关的知识,希望对你有一定的参考价值。

数据类型

整型的区分

区别long类型可以在定义的整数后面加上L

int num1 = 100;
short num2 = 100;
long num3 = 100L;

浮点数的区分

float类型后面可加上F

float num4 = 3.14F;
double num5 = 3.14;

拓展

整数拓展

二进制开头:0b
八进制开头:0
十六进制开头:0x(x为小写)

public class Demo1 {
    public static void main(String[] args) {

        int num1 = 10;//十进制

        int num2 = 0b10;//二进制

        int num3 = 010;//八进制

        int num4 = 0x10;//十六进制

        System.out.println(num1);//输出为10

        System.out.println(num2);//输出为2
        
        System.out.println(num3);//输出为8

        System.out.println(num4);//输出为16

    }
}

浮点数拓展

银行业务(钱)不要用float和double

public class Demo1 {
    public static void main(String[] args) {

        float f = 0.1f;//0.1

        double d = 1.0/10;//0.1

        System.out.println(f);//输出为0.1

        System.out.println(d);//输出为0.1

        System.out.println(f == d);//判断f与d是否相等(结果输出为false)

    }
}


以上虽然都为0.1,但是输出不相等

还有更容易出错的如下

public class Demo1 {
    public static void main(String[] args) {

        float f1 = 123f;

        float f2 = f1 + 1;

        System.out.println(f1 == f2);//判断f1与f2是否相等(结果输出不等)

        float f3 = 123456789f;

        float f4 = f3 + 1;

        System.out.println(f3 == f4);//判断f3与f4是否相等(结果输出相等)

    }
}


当数字比较长时,发现计算会出现问题,所以处理银行业务时不使用float和double

出现以上问题的原因:浮点数是有限的,离散的,存在舍入误差,无法表示一个精确的数(可以大概理解为约数),接近,但不等于。所以避免使用浮点数进行比较。当我们需要比较时,可以用一个类:BigDecimal,数学工具类。

字符拓展

public class Demo1 {
    public static void main(String[] args) {

        char c1 = \'A\';
        char c2 = \'中\';
        System.out.println(c1);//强制转换,输出A
        System.out.println((int)c1);//强制转换,输出65
        System.out.println(c2);//强制转换,输出中
        System.out.println((int)c2);//强制转换,输出20013

    }
}

字符的本质还是数字(通过编码实现)

比如我们通过转义字符,写出以下代码,会输出a

public class Demo1 {
    public static void main(String[] args) {
        char c3 = \'\\u0061\';
        System.out.println(c3);//a
    }
}

转义字符

如\\t代表制表符,\\n换行等

涉及到对象,内存的

public class Demo1 {
    public static void main(String[] args) {
        
        String s1 = new String("abc");
        String s2 = new String("abc");

        System.out.println(s1==s2);//输出false

        String s3 = "abc";
        String s4 = "abc";

        System.out.println(s3==s4);//输出true
    }
}

布尔值拓展

以下代码的两条if语句,表示的含义相同

less is more!

 boolean flag = true;
        if (flag) {}
        if (flag == true) {}

以上是关于数据类型及其拓展的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记之八java二维数组及其多维数组的内存应用拓展延伸

freopen及其拓展函数,大数据调试so easy (? ?_?)?

代码注入及其拓展--逆向开发

左神讲算法——二分法及其拓展

左神讲算法——二分法及其拓展

算法问题拓展——kadane算法及其二维数组的扩展