处理短数据类型的变量

时间:2013-05-21 06:35:25

标签: java

我有一个方法,我收到的参数是“rowno”,类型为short。 代码如下所示。

private int abcd (int a , short rownum)
{
    // method body
}

现在我的查询就是这个。在方法内部我必须执行一些逻辑时的值 rownum是5,所以我正在尝试这样

if (rowno == 5)
{
     //perform some operation

}

请告诉我这是否是短型的正确方法。

4 个答案:

答案 0 :(得分:3)

这应该可以正常工作。

rownoshort时,表达式rowno == 5等同于((int) rowno) == 5,因为Java隐式提升了原始操作数。

Java Language Specification

  

5.6.2。二进制数字促销

     

当运算符将二进制数字提升应用于一对操作数时,每个操作数必须表示可转换为数字类型的值,以下规则适用:

     

2扩展原语转换(第5.1.2节)用于转换由以下规则指定的一个或两个操作数:

     
      
  • 如果任一操作数的类型为double,则另一个操作数将转换为double。
  •   
  • 否则,如果任一操作数的类型为float,则另一个操作数转换为float。
  •   
  • 否则,如果任一操作数的类型为long,则另一个操作数将转换为long。
  •   
  • 否则,两个操作数都将转换为int
  •   
     

对某些运算符的操作数执行二进制数字提升:

     

...

     
      
  • 数字相等运算符==!=
  •   
根据

这里发生的转换是安全的

  

5.1.2。扩大原始转换

     

对原始类型的19个特定转换称为扩展原语转换:

     
      
  • ...
  •   
  • 简称为int,long,float或double
  •   
  • ...
  •   
     

在strictfp表达式(第15.4节)中,从整数类型到另一个整数类型或从float到double的扩展原语转换根本不会丢失任何信息;数值完全保留。

答案 1 :(得分:2)

在Java中, 短数据类型是16位带符号的二进制补码整数。 和int数据类型为32位带符号的二进制补码整数。

因此,当您执行操作时,短数据将自动转换为int数据类型而不会出现问题。 (不需要扩展原始转换 - >没有信息丢失)

答案 2 :(得分:0)

不明白为什么那不起作用。如果你真的想确定你总能做到这一点:

short compareValue = 5;

if(rownum == compareValue) {
    //logic
}

答案 3 :(得分:0)

如果你的rownum参数与数据库行id有关,或任何可能超出short范围的数字,你可能会丢失整数信息。如果你有101%确定你的输入参数值永远不会溢出短距离你就可以了。