`
java-mans
  • 浏览: 11439312 次
文章分类
社区版块
存档分类
最新评论

short类型的+操作和++操作的区别,竟然没有一个正确答案.

 
阅读更多

今天再次在卫琴的论坛上看到有人问这样的问题:

short tmp = 0;

为什么tmp = tmp +1;错误但tmp ++;却正确.

用google和yahoo竟然搜索不到一个正确的答案.都说java程序员不需要关心底层,真的吗?

s+1中,+操作有两个操作数,JVM指令中+操作最小类型是int,其它的byte、short、char都以iload,iadd来操作,

然后用i2b,i2s,i2c来转换回去,因为+操作在两个数中间,所以如果不手动转换,编译器根本不知道你要

转换成第一个操作数类型还是第二个操作数类型.

s++中,相当于s上的increment操作,目的操作数是s,它的类型确定是short,所以在iadd后,编译器会自动

调用i2s将int转换为short.

你不要以为1默认是int,所以tmp+1默认以最大类型来运算.试一下下面的运算就知道了:

short a = 0;

short b = 0;

short c = a +b;两个short不存在以最大类型运算被转换为int运算了吧?

事实上它还是不行,因为short也只能用iload,iadd指令运算,所以short c = a+b也一定要手工转换.

分享到:
评论

相关推荐

    Java语言程序设计(一)真题及答案.doc

    A.Java是一个纯面向对象的语言 B.Java语言中有指针、结构和类型定义的概念 C.Java语言是与平台无关的,可以在不同的操作系统下运行 D.Java语言具有自动无用内存回收机制 正确答案:B 您的答案: 本题解析: 暂无解析...

    java程序设计选择题题库182道

    [解析] 字符常量是用单引号括起来的一个字符,如‘a’。用双引号括起来的是字符串,如“Shanghua”。字符型数据类型能向int数据类型自动转换,而字符串不可以。选项A、B、D都含有字符串。因此,本题的正确答案是C。 ...

    JAVA面试题最全集

    一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握内部类和接口的概念 54.StringTokenizer类的使用 55.数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? ...

    你必须知道的495个C语言问题.pdf

    1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef 和#define有...

    java 面试题 总结

    然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中...

    java面试宝典

    56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和javasciprt 的区别。 15 61、什么时候用assert? 16 62、error和exception有什么...

    《你必须知道的495个C语言问题》

    1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 6 1.11 extern在函数声明中是什么意思? 6 1.12 关键字auto到底有什么用途? 7 类型定义(typedef) 7 1.13 对于用户定义类型,...

    你必须知道的495个C语言问题

    6.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存...

    java面试800题

    外键是从某个表的一个字段指向另外一个表的主健字段,两个字段的类型和精度应该一致,外键的值必须在主键中存在 Q0030 在数据库中什么代表一条记录? 主健 Q0031 如何编写效率高的SQL语句? "1.根据查询条件建立...

    java面试题

    答:swtich()传递的应该是一个整数表达式,所以它的值只能是:int、short、char、byte所以long和String都不能作用在swtich()上。 jsp和servlet之间的联系? 答:jsp前段动态页面,servlet是纯java类 jsp被编译之后...

    .htaccess

    真正困难的可能是文件的保存,因为.htaccess是一个古怪的文件名(它事实上没有文件名,只有一个由8个字母组成的扩展名),而在一些系统(如windows 3.1)中无法接受这样的文件名。在大多数的操作系统中,你需要做的...

Global site tag (gtag.js) - Google Analytics