博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
short i =1; i=i+1与short i=1; i+=1的区别
阅读量:4360 次
发布时间:2019-06-07

本文共 547 字,大约阅读时间需要 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进行窄化转换,由编译程序自动执行.

转载于:https://www.cnblogs.com/tuanz/p/9023712.html

你可能感兴趣的文章
sql: left join vs. not in
查看>>
Jasper之table报表
查看>>
基于visual Studio2013解决C语言竞赛题之1061最大值和次最大值
查看>>
惊艳!9个不可思议的 HTML5 Canvas 应用试验
查看>>
12款很酷的使用大头照的国外名片设计作品
查看>>
Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】
查看>>
数据分析的一些误区
查看>>
C语言函数及变量的声明与定义的区别
查看>>
css 把图片变成灰色
查看>>
mongoDB安装与添加服务
查看>>
给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数。 (即,使用函数rand5()来实现函数rand7())...
查看>>
TOJ 2732存钱计划(三)(单源最短路)
查看>>
转-spring boot web相关配置
查看>>
语言基础(1):C++发展历史
查看>>
鼠标滚轮事件
查看>>
Python中type和object
查看>>
Java_部门操作实现
查看>>
linux-nohup命令
查看>>
FetchAPI 的使用
查看>>
WPF框架MVVM简单例子
查看>>