数据类型

关于java中的数据类型:

1、数据类型的作用是什么?
    程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
    数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间

2、java中的数据类型包括两种:
    *基本数据类型

    *引用数据类型【后面讲】
        -类
        -接口
        -数组
        .......

3、关于基本数据类型:
    *基本数据类型包括四大类八小种:
        第一类:
            整数型:
            byte、short、int、long
        第二类:
            浮点型:
            float、double
        第三类:
            布尔型:
            boolean
        第四类:
            字符型:
            char

4、字符串"abc"不属于基本数据类型,属于“引用数据类型”,字符属于基本数据类型
    *字符串使用双引号:"abc"
    *字符使用单引号:  'a'

5、八种基本数据类型各自占用空间大小是多少?
    基本数据类型                占用空间大小【单位:字节】
    byte                            1    
    short                           2
    int                             4
    long                            8
    float                           4
    double                          8
    boolean                         1
    char                            2

6、计算机在任何情况下都只能识别二进制,例如:只认识101010101010101010101............
【现代的计算机底层采用交流电的方式,接通和断开这两种状态,计算机只认识1或0,其它不认识】

7、什么是二进制?
    *数据的一中表示形式,十进制是满十进一原则,二进制是满二进一原则
    例如:十进制
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    例如:二进制
    0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 ........
    0 1  2  3  4   5   6   7    8    9   10   11   12

8、字节(byte):
    1 Byte = 8 bit【1个字节 = 8个比特位】1个比特位表示一个二进制位:1/0
    1 KB = 1024 Byte
    1 MB = 1024 KB
    1 GB = 1024 MB
    1 TB = 1024 GB
    ...........
    1 TB = 1024 * 1024 * 1024 * 1024 * 8 = 8,796,093,022,208 bit

9、整数型当中的byte类型,占用1个字节,所以byte类型的数据占用8个比特位。
那么byte类型的取值范围是什么?
    *关于java中的数字类型,数字都是有正负之分的,所以在数字的二进制当中有一个二进制位被称为“符号位”,并且这个“符号位”在所有二进制的最左边,0表示正数,1表示负数
    *byte类型最大值:    01111111
    【    00000000    00000000    00000000    1000000(二进制)
    减去1的结果是:
         00000000     00000000     00000000     01111111(二进制)】
    *byte类型最大值:    2的7次方   -1,结果是:127
    *short类型最大值:   2的15次方  -1,结果是:32767
    *int类型最大值:     2的31次方  -1,结果是:2147483647
    *long类型最大值:    2的63次方  -1,结果是:9223372036854775807
    *char类型最大值:    2的16次方  -1,结果是:65535

    *byte类型最小值: -128【具体的怎么用二进制表示,这个和原码、反码、补码有关】
    *short类型最小值:-32768
    *int类型最小值:  -2147483648
    *long类型最小值: -9223372036854775808
    *char类型最小值: -65536

    *byte类型取值范围:  【-128 ~ 127】
    *short类型取值范围: 【-32768 ~ 32767】
    *int类型取值范围:   【-2147483648 ~ 2147483647】
    *long类型取值范围:  【-9223372036854775808 ~ 9223372036854775807】
    *float类型取值范围: 【大约正负3.40282347E+38F(有效位数6~7位)】
    *double类型取值范围:【大约正负1.79769313486231570E+308(有效位数15位)】
    *char类型取值范围:  【0~65535】
    *blooean类型只有:   【true/false】

    *byte类型可以表示256个不同的数字【256个不同的二进制】

10、二进制和十进制之间的转换规则:
    *二进制转换成十进制
    *十进制转换成二进制

11、计算机只认识二进制,那么计算机是怎么表示现实世界当中的文字的呢?
    *八种基本数据类型当中,byte、short、int、long、float、double、boolean这7种数据类型计算机在表示的时候比较容易,因为底层都是数字,十进制的数字和二进制之间存在一种固定的转换规则
    *但是八种基本数据类型当中char类型表示的是现在中的文字,文章和计算机二进制之间“默认”情况下是不存在任何转换关系的
    *为了让计算机可以表示现实世界当中的文字,我们需要进行人为的干涉,需要人负责提前制定好“文字”和“二进制”之间的对照关系,这种对照转换关系被称为:字符编码
    *计算机最初只支持英文,最先出现的字符编码是:ASCII码
        'a'--> 97【01100001】
        'A'--> 65
        '0'--> 48

        'a'--(按照ASCII解码)--> 01100001
        01100001 ---按照ASCII编码-->'a'

        编码和解码的时候采用同一套字典/对照表,不会出现乱码
        当解码和编码的时候采用的不是同一套对照表,会出现乱码问题

总结:
    *classpath
    *注释
    *public class 和 class区别
    *标识符
    *关键字
    *字面值
    *变量
    *数据类型(提醒:只是开头!!!)