Java中short和int的转换
例子[1]:
第一种情况:
short a = 1;
a = a + 1; // 这一步会报错
System.out.print(a);
编译器会报错,原因如下:

第二种情况:
short a = 1;
a += 1;
System.out.print(a);
这种情况不会报错。
java语言规范中关于复合赋值的解释是这样的:E1 op= E2等价于
E1=(T)(E1 op E2),这里的T是E1的数据类型,即复合赋值是自带了隐式的强制类型转换的。
第三种情况:
short a = 1;
short b = 1;
short c = a + b;
这种情况依然会编译出错,因为Java中存在的类型升级,导致两个short类型的运算也会转换成int进行。
类型升级
在Java中,对基本数据类型做比较或者运算时,如果两边的数据类型不同,在可以比较的前提下会首先进行类型升级:
- 如果任一方为
double,则另一方转换为double- 否则如果任一方为
float,则另一方转换为float- 否则如果任一方为
long,则另一方转换为long- 否则两边都会转换为
int
- 否则两边都会转换为
- 否则如果任一方为
- 否则如果任一方为
即从高到低分别为double, float, long, int
即使是两个short类型运算,也会转换成int进行,这就是前面第三种情况出现错误的原因。
参考https://blog.csdn.net/allenjay11/article/details/78613862 ︎
Java中short和int的转换的更多相关文章
- 一段代码了解Java中char和int的转换
题目要求: 将输入的大写字母转成对应小写的后5个,如A转换后为f:如果转换后大于z则从a重新计,即多出1就转成a,多出2就转成b以此类推. Java代码: ```java private static ...
- java中short、int、long、float、double取值范围
一.分析基本数据类型的特点,最大值和最小值.1.基本类型:int 二进制位数:32包装类:java.lang.Integer最小值:Integer.MIN_VALUE= -2147483648 (-2 ...
- Java中short、int、long、float、double的取值范围
一.基本数据类型的特点,位数,最大值和最小值.1.基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15此方 ...
- Java中数据类型及其之间的转换
Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...
- Java中数据类型及其之间的转换(转)
Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30; int y=30; x==y; //true 基本数据类型 简单类型(基本类型) bo ...
- java中string和int互相转化
1 怎样将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- Java中字符转int
Java中字符转int 方法一代码: //直接使用静态方法,不会产生多余的对象,但会抛出异常 //parseInt 方法都有两个参数, 第一个参数就是要转换的对象, 第二个参数是进制基数, 可以是 2 ...
- java中string和int互相转化 (转)
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
随机推荐
- 跟我一起写 Makefile(五)
六.多目标 Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似.于是我们就能把其合并起来.当然,多个目标的生成规则的执行命令是同 ...
- MIT Scheme Development on Ubuntu
sudo apt-get mit-scheme; run "scheme" then you enter the command line scheme repl; sudo ap ...
- 一台服务器上部署多个Terracotta的方法
在window server 2003 下,利用apache2.2.11+tomcat6+terracotta 群集不能复制session(http://forums.terracotta.org/f ...
- 「移动端」Web页面适配
一.什么是移动端适配 移动端 Web 页面,就是常说的手机 h5页面.webview页面.公众号开发的网页等. 由于手机机型较多,各个手机的屏幕尺寸不一样,所以做移动端页面,需要考虑在安卓和ios的各 ...
- xv6学习笔记(4) : 进程调度
xv6学习笔记(4) : 进程 xv6所有程序都是单进程.单线程程序.要明白这个概念才好继续往下看 1. XV6中进程相关的数据结构 在XV6中,与进程有关的数据结构如下 // Per-process ...
- 关于 go-fastdfs-web 的SpringBoot 后台管理
1.问题的产生: 1.公司需要存储图片数据,采用Go语言的fastdfs,实现存储,我的职责就是部署,SpringBoot版本的管理平台. 2.当我看见代码之后我的内心是拒绝的,没有注释....... ...
- 12.SpringMVC之拦截器
1.拦截器概述 1.1 什么是拦截器? Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以 ...
- CentOS 6.x 系统中安装原生 Hadoop 2
2020年整理博客发现原文地址已经失效,推荐学习地址厦门大学数据库实验室 本教程适合于在 CentOS 6.x 系统中安装原生 Hadoop 2,适用于Hadoop 2.7.1, Hadoop 2.6 ...
- JDBC中的元数据——2.参数元数据
package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...
- 正整数a、b、c、d满足ab=cd,则a+b+c+d必定为合数。
正整数a.b.c.d满足ab=cd,则a+b+c+d必定为合数. 证法一:记s=a+b+c+d.如果四个数全为1,s=4,显然是合数.考虑四个数非全1的情形,由对称性,不妨令a>1. 设p是a的 ...