Java中“short s = 1”和“(short)1”之间有什么区别?

时间:2015-07-27 05:21:37

标签: java

我遇到参数类型为short的方法调用,例如

foo (short s){...}

当我打电话时,我想到了两个解决方案:

一个是:

foo((short) 1);

和另一个:

short s = 1;
foo(s);

它们之间有什么区别,哪个更好?

4 个答案:

答案 0 :(得分:1)

默认情况下,

1将被视为Java中的int。

所以,当你做((短)1)时,你通过该函数传递1作为一个短参数。接收参数应该是短类型。

然而,当你有短s = 1时,它显然是short整数。

请记住,在这两种情况下,执行操作时,short都将转换为int(这称为类型提升)。而且,如果使用 double 操作数进行操作,那些int将被提升为double。

  

它们之间有什么区别,哪个更好?

两者最终都做了相同的操作(传递一个短变量作为参数),并且它们都同样更好。但是,你应该防止使用short整数,除非极其必要,因为它有一些缺点(当你不小心尝试将int / long存储到短时,导致编译时错误)。 / p>

答案 1 :(得分:1)

short s = 1将变量定义为short,其值为1(short) 1正在将int1转换为原始数据类型short

没有区别。他们都创建了short,其值为1

有关短路及其值范围的信息,请参阅Java: Primitive Data Types,因为将短路设置为高于或低于其规定范围的值将引发异常。

答案 2 :(得分:1)

两种解决方案都有效,两者之间的性能差异难以察觉。

(short) 1;使用一个文字,它被转换为一个短片,作为函数foo的参数传入。

short s = 1;实际上在将值作为参数传递之前在内存中创建了一个变量,以防你想将变量用于其他事情。

答案 3 :(得分:1)

up castshort的java int会自动发生。 但对于down casting,你必须手动施放它。

short(integer_value)
(short) 1

如果使用强制转换调用,也可以发送整数参数。