我有三个简短的变量。当我将两个加在一起并将结果分配给第三个时,eclipse告诉我需要将其强制转换为short!
short sFirst, sSecond, sThird;
sFirst = 10;
sSecond = 20;
sThird = sFirst + sSecond;
但是,当我先进行简单分配,然后进行增量分配时,一切都很好。
short sFirst, sSecond, sThird;
sFirst = 10;
sSecond = 20;
sThird = sFirst;
sThird += sSecond;
为什么是这样 ?
JLS(第15.8.2节)说:
“将二进制+运算符应用于两个数字类型的操作数时,将执行加法运算,从而得出这些操作数之和。”
“对操作数执行二进制数值提升(第
5.6.2节
)。”
这意味着表达式的操作数将转换为int
。因此,除了将添加int
到int
。
“数字操作数上加法表达式的类型是其操作数的提升类型。”
就您而言,int
。
我不会猜测为什么这样做。但是,这绝非偶然。如果你看一下如JVM规范中定义的字节码指令集,你会看到有算术指令int
,long
,float
和double
…但不使用较小的整数类型。
short 是一个开源的短域名服务,使用 Node.js 与 MongoDB 搭建,可以直接在你的 Server 程序中调用,也可以通过 Node.js 的 http server 模块以一个服务启动。 可以直接通过 Node.js 的 npm 进行安装: $ npm install short 可以直接在你的 Node.js 项目中这样调用,生成长域名对应的短链接: var mongoose =
主要内容:1 Java.lang Short介绍,2 Java.lang Short声明,3 Java.lang Short方法,4 Java.lang Short案例1 Java.lang Short介绍 Short类将原始的short类型值包装在对象中。它的对象仅包含一个short类型的字段。 2 Java.lang Short声明 3 Java.lang Short方法 方法 描述 byte byteValue() 此方法返回这个Short为一个字节的值。 int compareTo(Sh
描述 (Description) java.math.BigDecimal.shortValueExact()将此BigDecimal转换为short,检查丢失的信息。 如果此BigDecimal具有非零小数部分或超出短结果的可能范围,则抛出ArithmeticException。 声明 (Declaration) 以下是java.math.BigDecimal.shortValueExact()
问题内容: 我的一位同事向我问了这个问题,我有些困惑。 该声明 编译很好但是 不 Java在这里做什么? 问题答案: int i = 123456; short x = 12; x += i; 实际上是 而仅仅是。它不会自动转换为a ,因此会导致错误(类型为)。 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 - JLS§15.26.2
描述 (Description) java.lang.reflect.Field.getShort(Object obj)方法获取静态或实例短字段的值。 声明 (Declaration) 以下是java.lang.reflect.Field.getShort(Object obj)方法的声明。 public short getShort(Object obj) throws IllegalA
当使用if, elsif, until或者使用and或or运算符测试条件while使用短路评估。 例如 - if a < 0 and b > 0 then -- block of code end if 如果<0为假,那么Euphoria并不打算测试b是否大于0.它知道总体结果是假的,无论如何。 同样 - if a < 0 or b > 0 then -- block of code