八大基本数据类型&类型转换

基本上是学习java过程中的存档


八大数据类型
四种整型
        1.byte(8bits)表示范围:-2^7~2^7,-128~127
        2.short(16bits)表示范围:-2^15~2^15
        3.int(32bits)表示范围:-2^31~2^31(最常用,java中整型字面量默认是int类型大概是21亿左右)
        4.long(64bits)表示范围:-2^63~2^63

        补充:
                1.byte和short都没有专门的字面量表示方法,所以允许使用一个int类型字面量为byte和short赋值
                2.long的字面量表示方法是在数值后加字母“l或L”
                3.因为最左边那位是符号位负责表示正负号,实际上只有七位在表示数据,所以表示范围都要少一个次方

两种浮点数
        1.float(4byte)单精度浮点型
        2.double(8byte)双精度浮点型:精度比float更高(默认型)

一种字符型
char(2byte)

        补充:
                1.char的字面量表示方法:单引号包围一个单个字符
                2.char是Java中唯一的一个无符号数类型
                3.char的本质是2字节构成的Unicode编码码值的数值
                        1)Unicode俗称万国码:用在程序运行期间,对任何字符都有兼容
                        2)无论字符数据传输和存储时用的是什么编码,只要进入Java内存中所有字符都已Unicode形式存在

一种布尔类型
        boolean(1位),在java中表示一种逻辑真或逻辑假,值只有两种:true,false

类型赋值情况
1、byte类型和short类型
        ①使用int字面量为byte赋值(因为byte和short都没有专门的字面量表示方法)
        byte b1 = 10;    //左边byte,右边int
        ②byte可以为byte赋值
        byte b2 = b1;
        ③不能使用int变量为byte赋值,尽管int值在byte数值范围内
        int i1 = 10;
        byte i2 = i1;    (程序报错)

2、int类型
        ①直接使用int自变量赋值
        int b3 = 10;    //左边int,右边int
        ②使用用int表示的变量赋值
        int b4 = b3;
        ③使用能够被int兼容的变量或字面量类型赋值(通常是左大右小就可以兼容)
        int b5 = b1;    //左边int,右边byte

3、long类型
        ①直接使用long自变量赋值
        long l1 = 100L;
        long l2 = 100;
        ②使用用long表示的变量赋值
        long l3 = l1;
        ③使用能够被long兼容的变量或字面量类型赋值
        long l4 = l2;

4、float类型
        ①直接使用long自变量赋值
        float f1 = 100.0f;
        float f2 = 100.0;//左边是float,右边是double(默认型)
        ②使用用long表示的变量赋值
        float f3 = f1;
        ③使用能够被long兼容的变量或字面量类型赋值(即便float有4byte,int有8byte,浮点总是比整型要大的)
        float f4 = b1;

5、double
        除了boolean其他都能兼容

6、boolean
        字面量只有两种
        boolean bl1= true;
        boolean bl2= false;

7、char
    ①使用字符型字面量
        char c1 = 'a';
        ②使用int字面量来赋值
        char c2 = 97;//char有16bits,int有32bits,数值在char可表示范围以内就可以
        ③单引号内书写unicode编码形式
        char c3 = '\u0061';
 

类型转换
场景:使用等号进行赋值,但是等号左右两边的类型不一致,此时我们需要类型转换


1、隐式类型转换(自动类型转换)
如果左边的类型可以兼容右边的类型,那么系统会自动进行隐式转换
通俗的来说就是“左边大右边小”,数值能放进去
    1)如果左右都是整型数,长度越大,单位就越大,long>int>short>byte
    2)如果两边都是浮点数,左边是double,右边是float可以隐式转换
    3)如果两边一边是整型一边是浮点型,左边是浮点型右边是整型才可以进行隐式转换(浮点型总是要大于整型)
    4)涉及到char类型的转换
    char是一个无符号数,所以他在和有符号数进行相互转换时,不能单纯的看字节长度
        4.1)左边char,右边byte,即便左大右小,但是也不能进行隐式转换
        因为byte中存在char类型无法表示出的数值
        4.2)一边char,一边short,即使等长但范围不一致,一个是0~65536,一个是32768~32768,
        char和(byte和short)都不能相互进行转换
        4.3)右边是char,左边是int或long,范围被完全包含所以可以进行隐式转换


2、显示类型转换(强制类型转换)
强转的本质就是舍弃掉多余的、小单位表示不出来的二进制位,有可能会发生精度丢失问题
原则:舍弃高位,保留低位
    1)舍弃掉的高位中一定包含原本的符号位,剩余低位中的首位,会变成新的符号位,有可能对数值的正负产生影响
    2)不是所有的强转都一定会发生精度丢失,要看这个数值在目标类型中原本是否可以表示出来,,如果数值本身就可以在范围较小类型中表示出来,那么强转制后数值大小不变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值