零基础java-数据类型(理论)

数据类型
    
    1.1、数据类型有什么用?
        数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
        int i = 10;
        double d = 1.23;
        i变量和d变量类型不同,空间大小不同。
    
    1.2、数据类型在java语言中包括两种:

        第一种:基本数据类型
            基本数据类型又可以划分为4大类8小种:
                第一类:整数型
                    byte,short,int,long (没有小数的)
                第二类:浮点型 
                    float,double (带有小数的)
                第三类:布尔型
                    boolean:只有两个值true和false,true表示真,false表示假
                第四类:字符型
                    char:java中规定字符型字面量必须使用单引号括起来。属于文字。

            8小种:
                byte,short,int,long
                float,double
                boolean
                char

        第二种:引用数据类型
            字符串型String属于引用数据类型。
            String字符串不属于基本数据类型范畴。
            java中除了基本数据类型之外,剩下的都是引用数据类型。
            引用数据类型后期面向对象的时候才会接触。
    
    1.3、8种基本数据类型中
        整数型:byte short int long有什么区别?
        浮点型:float和double有什么区别?
        区别:占用的空间大小不同。

        关于计算机存储单位?
            计算机只能识别二进制。(1001101100...)
            1字节 = 8bit(8比特)--> 1byte = 8bit
            1bit就是一个1或0.
            1KB = 1024byte
            1MB = 1024KB
            1GB = 1024MB
            1TB = 1024GB

            byte b = 2; 在计算机中是这样表示的:00000010
            short s = 2; 在计算机中是这样表示的:00000000 00000010
            int i = 2;在计算机中是这样表示的:00000000 00000000 00000000 00000010
            ...

            类型            占用字节数量(byte)
            ------------------------------------
            byte                1
            short                2
            int                4
            long                8
            float                4
            double            8
            boolean            1  (1byte的1或0,00000001(true)或00000000(false))
            char                2
    
        关于二进制?
            二进制???
                1            2                3            4                5                6            7
                1            10                11            100            101            110        111  ....

            十进制转换成二进制
                125 转换成二进制???
                    办法:除以2,然后余数逆序输出。
                    1111101

            二进制转换成十进制
                2的2次方   2的1次方 2的0次方
                1                1            1
                4                2            1
                1*4 + 1*2 + 1*1 = 7

                2的2次方   2的1次方 2的0次方
                1                0            1
                4                2            1
                1*4 + 0*2 + 1*1 = 5

    1.4、byte类型的取值范围?        
        byte是 [-128 ~ 127] 共可以标识256个不同的数字。
        byte类型的最大值是怎么计算出来的?
            byte是1个字节,是8个比特位,所以byte可以存储的最大值是:
                01111111
        注意:在计算机当中,一个二进制位最左边的是符号位,当为0时表示正数,
        当为1时表示负数。所以byte类型最大值是:01111111
        那么是不是2的7次方-1呢?
            是不是:10000000(前边是一个二进制) - 1
        
        byte类型最大值是:2的7次方 - 1.

        有几个取值范围需要大家记住:
            (1个字节)byte: [-128 ~ 127]
            (2个字节)short:[-32768 ~ 32767] 可以表示65536个不同的数字
            (4个字节)int: [-2147483648 ~ 2147483647]
            (2个字节)char: [0~65535]  可以表示65536个不同的数字

            short和char实际上容量相同,不过char可以表示更大的数字。
            因为char表示的是文字,文件没有正负之分,所以char可以表示
            更大的数字。
    
    1.5、对于8种基本数据类型来说:
        其中byte,short,int,long,float,double,boolean,这7种类型计算机表示起来
        比较容易,因为他们都是数字。其中布尔类型只有两个值true和false,实际上
        true和false分别在C++中对应的是1和0,1为true,false为0。

        对于char类型来说计算机表示起来比较麻烦,因为char对应的是文字,每一个国家
        的文字不一样,文字不能直接通过“自然算法”转换成二进制。这个时候怎么办?
            字符编码诞生了。
        
        什么是字符编码?
            字符编码是人为的定义的一套转换表。
            在字符编码中规定了一系列的文字对应的二进制。
            字符编码其实本质上就是一本字典,该字段中描述了文字与二进制之间的对照关系。
            字符编码是人为规定的。(是某个计算机协会规定的。)
        
        字符编码涉及到编码和解码两个过程,编码和解码的时候必须采用同一套字符编码
        方式,不然就会出现乱码。

        关于字符编码的发展过程?
            起初的时候计算机是不支持文字的,只支持科学计算。实际上计算机起初是为了
            战争而开发的,计算导弹的轨道....

            后来随着计算机的发展,计算机开始支持文字,最先支持的文字是英文,英文
            对应的字符编码方式是:ASCII码。

            ASCII码采用1byte进行存储,因为英文字母是26个。(键盘上所有的键全部算上也
            超不过256个。1byte可以表示256种不同的情况。所以英文本身在计算机方面就占有
            优势。)
                'a' --(采用ASCII码进行编码)-> 01100001
                01100001 --(采用ASCII码进行解码)-> 'a'
                如果编码和解码采用的不是同一个编码方式,会出现乱码。
                'b' ---> 98
                'c' ---> 99...
                'a' ---> 97

                'A' ---> 65
                'B' ---> 66
                ...

                '0' ---> 48  (这个'0'不是那个0,是文字'0')
                '1' ---> 49
            
            随着计算机语言的发展,后来国际标准组织制定了ISO-8859-1编码方式,
            又称为latin-1编码方式,向上兼容ASCII码。但不支持中文。

            后来发展到亚洲,才支持中文,日文,韩文....
            中文这块的编码方式:GB2312<GBK<GB18030 (容量的关系)
            以上编码方式是简体中文。

            繁体中文:big5(台湾使用的是大五码。)

            在java中,java语言为了支持全球所有的文字,采用了一种字符编码方式
            叫做unicode编码。unicode编码统一了全球所有的文字,支持所有文字。
            具体的实现包括:UTF-8 UTF-16 UTF-32....
        
        需要记住:
            ASCII('a'是97 'A'是65 '0'是48...)
            ISO-8859-1(latin-1)
            GB2312
            GBK
            GB18030
            Big5
            unicode(utf8 utf16 utf32)

2、八种基本数据类型详解
    字符型 char
    整数型 byte short int long
    浮点型 float double
    布尔型 boolean

 

3、下表列出了 Java 各个类型的默认值:

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (or any object)null
booleanfalse
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值