变量内容补充:赋值

赋值
1、等号左边一般为以变量为代表的内存空间
2、等号右边一般为(字面量,变量,表达式)
3、类型一致;类型不一致(类型转换、类型提升)
(1)类型转换 :Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验. 当参与运算数据类型不一致时,就会进行类型转换。(不能与Boolean类型进行转换)
A、自动类型转换(隐式)代码不需要任何处理,在代码编译时,编译器会自动进行处理。 特点:数据范围小的转为数据范围大的时会自动进行。
long a = 10 ; int --> long 天生成立
B、强制类型转换(显式)当进行操作时,代码需要经过一定的格式处理,不能自动完成。 特点:数据范围大的到数据范围小的。可能会有精度损失
int a = 10 L ; long --> int × 默认不成立,需要强制类型转换
int a = ( int ) 10 L; √
C、类型转换具体的情况
Double > float > long > int > (char) > short > byte
注意:将一个将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
(字面量默认为int型,有特殊处理)

(2)类型提升 :不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
A、一般的类型提升,对于不同类型的数据混合运算,范围小的会提升为范围大的

       int a = 10; 
       long b = 20; 
       int  c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据 
       long  d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long 

B、由于字节的提升,计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte(1字节) 和 short(2字节) 这种低于 4 个字节的类型,会先提升成4个字节的int, 再参与计算.

    byte a = 10; 
    byte b = 20; 
    byte c = a + b; 
    System.out.println(c);   // 编译报错 错误: 不兼容的类型: 从int转换到byte可能会有损失    ×

  byte a = 10; 
  byte b = 20; 
  byte c = (byte)(a + b); 
  System.out.println(c);       // 编译成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值