package common;

public class ShortTypeTest {

/*

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

short s1 = 1; s1 = (short) (s1 + 1);//简单类型

short s2=1; s2 +=1;//复合类型,复合赋值操作符+=,

System.out.println(s1+";"+s2);

//运行时Console输出什么,你知道吗?

}

}

题目:

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

解答:

Java规范有这样的规则

[

1.高位转低位需要强制转换

2.低位转高位自动转.

]

short s1 = 1; s1 = s1 + 1;有什么错?

答: i 是int 型   s1 short型 通过 + 运算后s1 自动转为int 型   所以错!

short s1 = 1; s1 += 1;有什么错?

答: 如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。

这两个表达式都被称为赋值表达式。(x = x + i)表达式使用的是简单赋值操作符(=),而(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),所以是正确的

原博文地址:http://blog.csdn.net/hurryjiang/article/details/9256959

java s1_转!!Java 基础面试题的剖析: short s1=1;s1 = s1 +1 报错? s1+=1 呢相关推荐

  1. Java的五个基础面试题

    还在找java的面试题目吗,下面小编为大家搜集的一篇"java的五个基础面试题",供大家参考借鉴,希望可以帮助到有需要的朋友! 1.将一个float或double类型转换为整型时, ...

  2. java super用法_Java基础面试题汇总

    blog.csdn.net/ThinkWon/article/details/104390612 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结 ...

  3. 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?

    [java] view plain copy package common; public class ShortTypeTest { /* * @param args */ public stati ...

  4. Java程序员必备基础面试题

    java技术再高而羞于展示无疑是浪费了满身的才华.学会沟通, 学会推荐自己,将是对工作最有力的助益.学会以简练扼要的语言,清晰明确的沟通方式,将复杂的问题简单化,并进一步提出精准到位的解决方案.以此行 ...

  5. java 播放swf_我用java写了一个播放swf动画的类运行时报错了,代码和报错如下…...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 哪位高手帮小妹看看哈:谢谢啦,代码如下 import java.awt.BorderLayout; import javax.swing.JFrame; ...

  6. eclipse启动mysql报错_Eclipse+mysql+java Eclipse中运行没有问题,但打包后运行不了,也不报错,求高手指点...

    这几天用Eclipse+mysql+java编写了一个班级信息管理的软件.在Eclipse里运行没有问题所有功能都没有问题,但无论用Eclipse中自带的export生成可执行的jar包,还是用fat ...

  7. java文件名 目录名或卷标语法不正确_大神求解,IO报错文件名、目录名或卷标语法不正确...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 哪位大神帮忙解决下,谢谢了!!! 书上的例题,要求吧之前压缩的文件解压出来.我按源码敲下来了,把之前压缩中F盘的hmhTest.zip解压出来,结果报错了 ...

  8. Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...

  9. java request上传文件_java使用ServletFileUpload上传文件,ServletFileUpload.parseRequest(request)报错。...

    java使用ServletFileUpload上传文件,ServletFileUpload.parseRequest(request)报错.在我本地是好的,linux服务器上就报错.错误信息:org. ...

最新文章

  1. “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  2. GIT之git常用配置和操作
  3. 成为年薪50W+的NLP工程师,需要哪些技能?
  4. Abiword页面布局
  5. 元气森林高管柳甄离职 回应:因个人原因选择离职 表示理解和尊重
  6. C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  7. Java适合初学者的编写软件分享
  8. 使用C语言快速统计fastq文件q20、q30、GC含量
  9. Android Studio 自带 模拟器无声音 解决方法
  10. newton插值公式
  11. 智能家居监控移动手机组态现实生活中的应用
  12. WPF——鼠标悬停在按钮时,只显示文字并高亮
  13. 灵飞经 ①洪武年间 第一章金陵歌舞
  14. CityEngine 免费试用申请、下载与配置(2018)
  15. 前端样式--------页码中间两个省略号
  16. dperf: 一款基于DPDK的千万级HTTP CPS的开源网络压力测试仪
  17. 在kali使用DDos-Attack 进行DDos攻击
  18. Err: HLS C Simulation Run 按钮变为灰色
  19. Python 、Sqlite3数据库、单片机 、RC522 -公交卡管理系统(含部分源码)#可刷卡登陆
  20. v-show和v-if

热门文章

  1. linux下oracle开机自启动,Linux下开机自动启动Oracle的设置
  2. python自动答题免费_直播答题?Python助你自动搜题之新手篇!
  3. 深度学习之基于GAN实现手写数字生成
  4. [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)
  5. Pots POJ - 3414(bfs)
  6. Diversity HDU - 6725
  7. 你真的懂点击率(CTR)建模吗?
  8. java 并发demo_《Java并发编程实践》中4.3.5章demo的一个疑问?
  9. 长隆大马戏机器人_惊艳亮相广州长隆,智伴儿童机器人1X成行业焦点
  10. 高亮显示 html_友达10.1寸超低温高亮工业液晶屏G101STN01.C