gpt4 book ai didi

java - Java : 2 method calls or 1 object call 中有什么更好/更快

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:20 25 4
gpt4 key购买 nike

恐怕这是一个非常愚蠢的问题。但是,我找不到答案,因此需要一些帮助:)

让我们从简化我的实际问题开始:

假设我有几个盒子,每个盒子都装满了不同的 gem 。

我现在正在创建一个对象 gem,它具有属性 color 和一个方法 getColour 来获取 gem 的颜色。此外,我正在创建一个对象框,其中包含一个作为属性的 gem 列表和一个方法 getGem 以从该列表中获取 gem 。

我现在要做的是按颜色计算所有盒子中的所有 gem 。现在我可以做类似的事情

int sapphire = 0;
int ruby = 0;
int emerald = 0;

for(each box = i)
for(each gem = j)
if(i.getGem(j).getColour().equals(“blue”)) sapphire++;
else if(i.getGem(j).getColour().equals(“red”)) ruby++;
else if(i.getGem(j).getColour().equals(“green”)) emerald++;

或者我可以做

int sapphire = 0;
int ruby = 0;
int emerald = 0;
String colour;

for(each box = i)
for(each gem = j)
colour = i.getGem(j).getColour();
if(colour.equals(“blue”)) sapphire++;
else if(colour.equals(“red”)) ruby++;
else if(colour.equals(“green”)) emerald++;

我现在的问题是两者在本质上是相同的还是应该优先于另一个?我知道在第二种情况下会产生很多不必要的新字符串对象,但是我是否可以获得速度优势作为返回,因为颜色更“直接”可用?

最佳答案

我敢做第三次改进:

int sapphire = 0;
int ruby = 0;
int emerald = 0;

for(each box = i) {
for(each gem = j) {
String colour = i.getGem(j).getColour();
if(“blue”.equals(colour)) sapphire++;
else if(“red”.equals(colour)) ruby++;
else if(“green”.equals(colour)) emerald++;
}
}
  1. 我在 for 循环中使用了一个局部变量。为什么?因为您可能只在那里需要它。
  2. 通常最好输入 STATIC_STRING.equals(POSSIBLE_NULL_VALUE)。

这样做的好处是:更容易阅读并且应该没有性能问题。如果您遇到性能问题,那么您应该考虑查看代码中的其他地方。与此相关:this answer .

关于java - Java : 2 method calls or 1 object call 中有什么更好/更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com