zoukankan      html  css  js  c++  java
  • short i =1; i=i+1与short i=1; i+=1的区别

    很典型的一到JAVA 基础面试题,上次面试遇到的,现在记录一下。

    short i =1; i=i+1;
    short i=1;i+=1;
    这两有什么区别呢 ?
    对两个容量不一样的数据类型的变量进行算术运算时,java会自动将小容量的变量进行精度提升,然后再进行运算,得到的结果类型是提升后的大容量的数据类型.如果将该结果赋值给小容量的数据类型的变量,则必须进行强制的类型转换,否则编译程序会报损失精度错.如楼主示例,用i来表示1:
    short s1 = 1;
    int i = 1;
    首先,因为short类型是16位的,而int类型是32位的,在进行
    (s1+i) 运算时,自动将s1提升到32位,然后与i相加,得到的结果是32位的,而此时
    s1=s1+i; 必然报错,因为如果赋值成功,只是把低16位赋给了s1,这个虽然正是楼主想要的结果,但是编译程序却不能判定你的意图是什么.
    执行强转:
    s1=(short)(s1+i); 就没问题了.
    s1+=i;能编译通过并得到正确结果,而 s1=s1+i; 却报错,是因为它们并不是等价的,s1+=i的方式java会对i进行窄化转换,由编译程序自动执行.

  • 相关阅读:
    flask_日期和时间
    使用SQLAlchemy对博客文章进行分页
    P2725 邮票 Stamps
    P2679 子串
    P3396 哈希冲突
    P1754 球迷购票问题
    P1504 积木城堡
    P1244 青蛙过河
    CSP-S 2019 考试分析
    2019.11.11 模拟赛 T2 乘积求和
  • 原文地址:https://www.cnblogs.com/tuanz/p/9023712.html
Copyright © 2011-2022 走看看