Java表达式类型自动提升
2015-09-24 08:27
274 查看
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答案是:前者错,后者对。相信不管是否经历过java面试过,大家一定对这道题很熟悉。因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲。要说清这道题,首先看看java表达式类型转换规则。
【java表达式类型转换】
java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型。因此在不同类型之间进行赋值操作很容易遇到到类型转换的问题。
在JAVA表达式中,如果进行运算的几个变量类型不一致,JAVA表达式会采取类型自动提升的操作。Java定义如下的自动提升规则:
1. 所有byte型、short型和char型将被提升到int型。
2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级。以下是java表达式中类型提升等级。
【复合赋值运算符包含的隐式类型转换】
short s1 = 1; s1 = s1 + 1会引起编译错误,s1+1表达式类型会自动提升为int类型,而s1的声明类型为short类型,所以将一个int类型的值赋给short类型将引起编译错误。
转载于http://www.nowamagic.net/librarys/veda/detail/169
答案是:前者错,后者对。相信不管是否经历过java面试过,大家一定对这道题很熟悉。因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲。要说清这道题,首先看看java表达式类型转换规则。
【java表达式类型转换】
java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型。因此在不同类型之间进行赋值操作很容易遇到到类型转换的问题。
在JAVA表达式中,如果进行运算的几个变量类型不一致,JAVA表达式会采取类型自动提升的操作。Java定义如下的自动提升规则:
1. 所有byte型、short型和char型将被提升到int型。
2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级。以下是java表达式中类型提升等级。
【复合赋值运算符包含的隐式类型转换】
short s1 = 1; s1 = s1 + 1会引起编译错误,s1+1表达式类型会自动提升为int类型,而s1的声明类型为short类型,所以将一个int类型的值赋给short类型将引起编译错误。
转载于http://www.nowamagic.net/librarys/veda/detail/169
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统