在Java中,创建对象或获取对象值是否更昂贵?

K-R*_*RAN 4 java performance

所以说例如我正在经历一个'if'块并且在这个块中,我将某个数字的值与常量进行比较.像这样会更贵吗?

if( foo.getOb().getVal() == CONST_0 )
{
     ....
}
....
if( foo.getOb().getVal() == _CONST_N )
{
     ....
}
else
     ....
Run Code Online (Sandbox Code Playgroud)

要么:

int x = foo.getOb().getVal();
if( x == CONST_0 )
{
     ....
}
....
if( x == _CONST_N )
{
    ....
}
else
    ....
Run Code Online (Sandbox Code Playgroud)

我知道这似乎是一个愚蠢的问题.我认为第二个实现是快速/更有效但我很好奇为什么.我一直在努力想起最后几分钟的原因,因为我对Java的了解有点缺乏,所以无法提出任何建议.

非常感谢任何答案!

Pet*_*rey 7

在我看来你应该使用switch语句,在这种情况下,你不必担心它.

switch (foo.getOb().getVal()) {
    case CONST_0:
        .... 
        break;
    case CONST_N:
        .... 
        break;
    default:
        .... 
        break;
}
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 6

这不是对象创建.您正在创建对该对象的引用.

您正在保存一些方法调用(在Java中它们非常有效)

差异可以忽略不计.并且编译器不会优化这些东西.