我遇到一个参数类型为short
的方法调用,如
foo (short s){...}
当我这么说的时候,我想到了两个解决方案:
其中之一是:
foo((short) 1);
另一个:
short s = 1;
foo(s);
他们之间有什么区别,哪一个更好?
发布于 2015-07-27 05:24:21
默认情况下,在Java中,1将被视为int。
所以,当你做((短)1)的时候,你把1作为一个短参数通过函数传递。接收参数应该是短类型的。
然而,当短s=1时,它显然是一个short
整数。
请记住,在这两种情况下,在执行操作时,短裤都将转换为int(这称为类型提升)。如果使用双操作数操作,则这些int的操作将被提升为双操作数。
他们之间有什么区别,哪一个更好?
最后,这两个操作都在执行相同的操作(将一个短变量作为参数传递),它们都具有同样好的效果。但是,您应该防止使用short
整数,除非非常需要它,因为它有一些缺点(当您意外地试图存储int/long到空时会导致编译时错误)。
发布于 2015-07-27 05:25:36
short s = 1
将变量定义为short
,其值为1
。(short) 1
将int
值1
转换为原始数据类型short
。
没有什么不同。它们都创建了一个值为short
的1
。
不过,有关短期及其值范围的信息,请参见Java:原始数据类型,因为将空设置为高于或低于其规定范围的值将引发异常。
发布于 2015-07-27 05:28:07
这两种解决方案都会奏效,而且两种解决方案之间的性能差异很难被注意到。
(short) 1;
使用一个文字,它被抛到一个短文件中,作为函数foo
的一个参数传入。
在将值作为参数传递之前,short s = 1;
实际上在内存中创建了一个变量,以防您还想将该变量用于其他事情。
https://stackoverflow.com/questions/31645447
复制相似问题