Java中隐式转换和强制转换区别、赋值运算符

目录

类型转换-隐式转换

类型转换-强制转换

赋值运算符


先搞清楚基本数据类型的范围比较

byte(小) ----  short  ----  int  ----  long  ----   float   ----   double(大)


类型转换-隐式转换

  • 将取值范围小的数据或变量, 给取值范围大的变量赋值, 可以直接赋值

    • 简单记 : 小范围的给大范围的, 可以直接给

  • 这里的小和大 , 指的是取值范围

  • 在运算过程中的隐式转换

  • ==思路 : 数据类型不统一, 是没办法 (直接) 运算==

  • 当取值范围小的数据, 和取值范围大的数据在一起运算, 小的会先提升为大的

  • 整数类型默认int,小数类型默认double

  • byte   short   char 三个类型在运算的时候, 直接提升为 int类型

byte  a  =  1 ,b  =  2;

byte  c  =  a+b;  //报错,a和b是byte类型,在运算时提升int类型,(a+b)是int类型的值3。

byte  c  =  1+2 //不会报错,Java有常量优化机制,编译阶段会把右边的结果3赋值给左边的变量c


类型转换-强制转换

将取值范围大的数据或变量, 给取值范围小的变量赋值, 不能直接赋值, 需要强转

  • 简单记 : 大的给小的, 不能直接给

强转格式:变量名1=(变量名1的数据类型)(变量运算)

int a = (int)1.2

注意:强转[有可能]会出现精度损失


赋值运算符

赋值运算符 :

    1. 基本赋值运算符

            = : 将等号右边的数据, 赋值给左边的变量

    2. 扩展赋值运算符

            += : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边的变量.

                    int a = 10;
                    a += 20;            //a=a+20
                    System.out.println(a);        // 30


            -= :               a-=20;    //a=a-20
            *=                 a*=20;    //a=a*10
            /=                 a/=20;    //a=a/10
            %=               a%=20;    //a=a%10

注意: 扩展赋值运算符, 底层自带强转效果.

short s = 1;

s = s + 1;            //报错,short类型在运算时会变为int,所以需要强制转换

s += 1;                  //这句代码没有问题, 底层自带强转

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值