这个问题以前碰到过,也研究过,发表一下:
如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。这两个表达式都被称为赋值表达式。第二个表达式使用的是简单赋值操作符(=),而第一个表达式使用的是复合赋值操作符。Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),其中T是E1的类型,除非E1只被计算一次。
换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化原生类型转换。
因此,复合赋值表达式可能是危险的。为了避免这种令人不快的突袭,请不要将复合赋值操作符作用于byte、short或char类型的变量。
因为S1是short型的,占2个字节,而1是int型的,占4个字节。在两个类型的值相加的时候,会发生自动类型的提升。也就是说s1+1后,其结果是int型的,而不是short型的,所以可以想想看,把4个字节的东西放在两个字节的空间里,肯定编译不通过。
后面的那个不会发生类型的提升,JAVA规范上说 e1+=e2 实际上是 e1=(T1)(e1+e2),其中T1是e1的数据类型。 s1+=1等效于 s1=(short)(s1+1),所以是正确的。
short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确
转载于:https://www.cnblogs.com/toSeeMyDream/p/5537741.html
相关文章:

pom文件中引入常用的maven仓库
给大家分享几个maven仓库,如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个。可以直接拖放在pom.xml中使用。 阿里云仓库 <mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.ali…

ats新手学习参考
转载自https://blog.zymlinux.net/index.php/archives/129 首先申明本人是个实实在在的菜鸟,现在也只是搭建起来ats玩玩简单的,写本文只是为了给完全的小白一个参考而已。 本人刚开始接触ats的时候,从ats安装到配置也遇到了很多基本的问题&am…

[svc]磁盘接口与RAID
一 磁盘接口 IDE 传统家用: /dev/hda1 SISC 传统服务器: /dev/sdb1 SATA 现在家用 SAS 现在服务器用 FC(光纤通道) 高级服务器 注意: 分区编号,1-4只能给主分区或扩展分区使用,逻辑分区是基于扩展分区来搞的,编号从5开始. MBR分区参考 现在计算机性能瓶颈往往在硬盘: …

条形码?二维码?生成、解析都在这里!
二维码生成与解析 一、生成二维码 二、解析二维码 三、生成一维码 四、全部的代码 五、pom依赖 直接上代码: 一、生成二维码 public class demo {private static final String path1"D:\\code.jpg";private static void qr(String text,int width,int w…

异步预热在线视频实现
转载自https://blog.zymlinux.net/index.php/archives/100 毕业之际给学校搭建了基于ATS的正向代理缓存服务器,专门用来处理优酷土豆等在线视频流量。通过改写一个浏览器做成在线视频专用浏览器,内置了ATS的代理设置。 用php配合memcacheq和小脚本实现了…

文本输入框、密码输入框
当用户要在表单中键入字母、数字等内容时,就会用到文本输入框。文本框也可以转化为密码输入框。 语法: <form><input type"text/password" name"名称" value"文本" /> </form> 1、type: 当t…

Linux安装mysql,一步到位!
今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo apt-get install mysql-…

Ubuntu 12.04安装firefox 26中的flash plugin方法
Ubuntu 12.04 64bit中安装firefox 26中的flash player插件的方法昨天, 有最新的firefox 26更新了,可是我在软件更新中无法下载到ubuntu官方源中的flash plugin,详细的情况可以参见如下网页,这个问题我一年前也遇到过,特记录下来,以备后来查阅.http://blog.sina.com.cn/s/blog_9…

内联式css样式,直接写在现有的HTML标签中
CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式、嵌入式和外部式三种。这一小节先来讲解内联式。 内联式css样式表就是把css代码直接写在现有的HTML标签中,如下面代码: <p style"col…

Linux下安装Java8
Linux(ubuntu)下Java8安装 1.下载jdk8 这个看大家了,linux版本的就可以 2.创建jvm文件夹 在根目录下创建名为jvm的文件夹(在哪里创建看个人) $ sudo mkdir jvm3.将下载的包解压到jvm文件夹下 $ sudo tar zxvf 压缩包路径/名字 -C /jvm…

RTMFP协议
RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。用Adobe AIR框架开发的程序也可以用此协议来发布直播、实时信息。 通过使用RTMFP, 那些原来直播、实时通信的应用,比如社区、音视频聊天和多人…

CodeForces 595A
题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯亮就代表这户没有睡觉&#x…

将Eclipse中Web项目打成war包
将Eclipse中Web项目打成war包 请按如下操作即可:

测试代码发布到博客效果(Windows Live Writer发布)
测试代码发布到博客效果(Windows Live Writer发布) public class SwitchCase {/*** 1、switch后面的表达式为常量表达式,类型只能是可以转化为int、enum(1.6)、String(1.7)的类型* 2、可以转化为int类型的数据类型有:byte、short、int、char* 3、boolean类型的数据类…

设置腾讯云linux服务器中 MySQL 允许远程访问
申请了一台linux腾讯云服务器,想要把数据库搭建在上面,本地的Windows直接可以访问 以下就是具体的操作流程,首先你需要安装好一个mysql,安装方法–>mysql安装(Linux) 接着就开始操作咯: 一、开启 MySQL 远程访问权…

js 判断js,css是否引入,确保不重复引入
js 判断js,css是否引入,确保不重复引入 (2009-10-31 21:33:44) 转载▼标签: 杂谈 分类: js基本原理:function loadjscssfile(filename, filetype){if (filetype"js"){ //if filename is a external JavaScript filev…

Ubuntu18彻底删除MySQL5.7数据库
首先在终端中查看MySQL的依赖项:dpkg --list|grep mysql (有或者没有都可以继续执行) 移除所有mysql公共依赖:sudo apt-get remove mysql-common 卸载:sudo apt-get autoremove --purge mysql-server-5.7 清除残留数据:dpkg -…

软件缺陷处理流程
今天,我们的主任研究了一下我出的软件缺陷处理流程,觉得不严谨,他重新梳理了一个,偶还是觉得自己梳理的比较直接,没有那么复杂。 这里博客记录,用于纪念我的心血,因为说不定哪天偶的这点心血会被…

Linux下tomcat的安装与卸载以及配置(超简单)
无敌简单的几步 1、安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置2、卸载 rm -rf 你的tomcat目录3配置: 进入目录/tomcat/apache-tomcat-8.5.51/bin,编辑文件startup.sh,在…

《创业维艰分享之五》所有得,有所乐,日事日清,循序渐进。
这两个月公司连续做了两个大客户紧接着发布新版本再然后又是连续五个小版本迭代计划。 每天16小时的超强度工作,我已经看到兄弟的脸上都写着一个字:累! 我自己又何尝不是,既是客服,又是程序员,还必须是行政…

docker上你必须会的那些命令
一、基础类 查看docker信息 # 查看docker版本 docker version # 显示docker系统的信息 docker info # 日志信息 docker logs # 故障检查 service docker status # 启动关闭docker sudo service docker start|stop二、容器操作命令 1、创建删除容器 # 创建一个容器命名为 te…

iOS开发UI篇—transframe属性(形变)
iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基于控件初始位置”的形变 CGAffineTransf…

docker一步安装mysql,docker的魅力就在于此
正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过、没有端口占用等问题的话!!) $ docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORDroo…

python-day05正则表达式
相关参考文档地址:http://bbs.fishc.com/thread-57073-1-1.html(小甲鱼论坛) 摘录老师之精华 re模块用于对python的正则表达式的操作。 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \…

Vim编辑器的常用快捷键.
Linux中的文本操作离不开Vim编辑器的使用. Vim编辑器的使用相对门槛较高.需要挺长一段时间的适应. 总结一些Vim使用过程中常用的命令(这些命令基本上都是在vim的命令模式下使用) 1.跳转到文本的开头gg 2.跳转到文本的末尾G (shiftg) 3.查看文本的总共有多少行(:set nu) 关于这个…

在docker上安装部署tomcat项目 超简单,拿来主义
在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可。以下将详细讲解流程: 在windows中打好包以后用winSPC拖放到linux系统中,我的直接放在了/home/ub…

docker停止、删除容器、删除镜像 一看就理解
当你的容器中出现问题(比如我改坏了文件)需要重新部署一台的时候,就需要将这个容器实例删除 接着: #查看当前的容器ID $ docker ps这里你会看到有两列id,一列是镜像id,一列是容器id,我们要分清…

JavaScript对象掺杂点原型
我读完权威指南一部分的理解,对象和原型的关系:任何对象都可以充当原型 转载于:https://www.cnblogs.com/gaizaotuling/p/5553130.html

docker镜像的备份和恢复
在使用docker的时候总会出现这种情况:下载东西很慢很慢,下载完配置完以后,突然,一个地方配置出现了问题,无法恢复,需要重新装载,那么,之前的所有配置、安装、下载都没了,…

黑盒测试方法案例
1.根据下面给出的规格说明,利用等价类进行测试用例的设计。 一个程序读入3个正整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是普通的、是等腰的、还是等边的。 a.找出输入输出条件,列出…