Java的数据类型以及数据类型的拓展和一些面试问题的解决思路

数据类型

Java是强类型语言

要求变量的使用严格规定所有变量必须先定义才能使用

好处:严禁,安全性高

缺点:速度慢

Java的数据类型分为两大类

  • 基本类型(primitive type)
  • 引用类型(reference type)

变量

变量是可以变化的量

type varName [=value] [{,varName[=value]}]

//数据类型 变量名 = 值;可以使用都好隔来声明多个同类型变量。

八大数据类型

整数

  • int
  • byte
  • short
  • long 在用long时末尾要加F

小数

  • float 在用float时末尾也要加F
  • double

字符

  • char

字符串

  • String 注意String是一个类,不是关键词

布尔值

  • boolean (flag)只代表是和否 true/false




数据类型扩展以及面试题

整数拓展

首先要了解数位进制,一般分为二进制 十进制(0b) 八进制(0) 十六进制(0x)

范例

        int i = 10; 
        int i1 = 010; //八进制0
        int i2 = 0x10;  //十六进制0x   0-9  A-F 16

浮点拓展及银行业务怎么表示

首先我们用float进行比较

        float f = 0.1f;
        double f1 = 1.0/10;
        System.out.println(f==f1); //false 结论是不等于

那么他输出的结果是false,结论是二者并不等于,于是我们换一个比较方式。

        float d = 2222354515f;
        float d1 =d+1;
        System.out.println(d==d1);//ture

而这次输出则为ture,二者相等。

由此我们可以得到

浮点数是有限的,有离散性,存在摄入误差,只是大约但接近不等于

所以最好完全避免使用浮点数进行比较

所以最好完全避免使用浮点数进行比较

所以最好完全避免使用浮点数进行比较

而阴阳业务我们则用专门的BigDecimal 这是专门的数学工具

字符拓展

字符拓展首先我们用char来进行一段命令的执行

        char c1 ='a';
        char c2 = '中';
        System.out.println(c1);

        System.out.println((int)c1);//强制转换

        System.out.println(c2);

        System.out.println((int)c2);//强制转换

在这段命令里,我们可以看到,原本是字符类型的char被强制转为了int类型,而输出后'a'被强制转换输出为数字97,而''中''被强制转换输出为数字20013。

所有的字符本质是数字

而强制转换涉及到编码,是由unicode进行编码,而unicode有一张表例如(97 ==a 65 == A)。unicode可以处理任何文字语言,占用两个字节,最多可以表示65536个字符(其实不止)

unicode编码表示:U0000 UFFFF

unicode编码示例:

        char c3 = '\u0061';//unicode的正常表示
        System.out.println(c3);//输出为a

转义字符拓展

        System.out.println("hello\tworld");
        System.out.println("hello\nworld");

与正常输出的helloworld不同的是,分别在两个的中间加入了\t和\t

\t是制表符

\n则是换行符

转义字符还有很多

额外拓展

        String sa = new String("helle world");
        String sb = new String("helle world");
        System.out.println(sa==sb);//flase

        String sc = "helle world";
        String sd = "helle world";
        System.out.println(sc==sd);//ture

这是一点额外拓展,关于为什么new一个新的对象他俩不相等,而下面则相等,自我目前猜想的是因为是new的对象,所以即使内容相同他们也不可能相等

而这里所额外拓展的具体如何分析,得在后面学习以后,从对象以及内存里进行分析

布尔值扩展

        boolean flag = true;
        if (flag==true){}//新手书写
        if (flag){}//老手书写

这两行代码所表达的是一个意思,如果flag等于ture,那么则输出什么什么,而区别在于下面简化了,新手期间还是用新手书写比较好,后面很多框架源码都是那种老手的简易书写,意思都是一个意思,也没有错误。

代码必须要精简易读

posted @ 2022-07-22 18:38  奈叶叶叶  阅读(54)  评论(0)    收藏  举报