首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中,'short s= 1‘和'(short) 1’有什么区别?

在Java中,'short s= 1‘和'(short) 1’有什么区别?
EN

Stack Overflow用户
提问于 2015-07-27 05:21:36
回答 4查看 1.5K关注 0票数 4

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

代码语言:javascript
运行
复制
foo (short s){...}

当我这么说的时候,我想到了两个解决方案:

其中之一是:

代码语言:javascript
运行
复制
foo((short) 1);

另一个:

代码语言:javascript
运行
复制
short s = 1;
foo(s);

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-27 05:24:21

默认情况下,在Java中,1将被视为int。

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

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

请记住,在这两种情况下,在执行操作时,短裤都将转换为int(这称为类型提升)。如果使用双操作数操作,则这些int的操作将被提升为双操作数。

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

最后,这两个操作都在执行相同的操作(将一个短变量作为参数传递),它们都具有同样好的效果。但是,您应该防止使用short整数,除非非常需要它,因为它有一些缺点(当您意外地试图存储int/long到空时会导致编译时错误)。

票数 1
EN

Stack Overflow用户

发布于 2015-07-27 05:25:36

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

没有什么不同。它们都创建了一个值为short1

不过,有关短期及其值范围的信息,请参见Java:原始数据类型,因为将空设置为高于或低于其规定范围的值将引发异常。

票数 1
EN

Stack Overflow用户

发布于 2015-07-27 05:28:07

这两种解决方案都会奏效,而且两种解决方案之间的性能差异很难被注意到。

(short) 1;使用一个文字,它被抛到一个短文件中,作为函数foo的一个参数传入。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31645447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档