2017-04-24 103 views
0

我有如下while循环:使用.equals()在while循环导致程序挂在执行

Vault vlt = mapper.readValue(currentLine, Vault.class); 
while(vlt.getvault_name() == vault)){ 
         byteCount += vlt.getBytes(); 
} 

vlt.getvault_name返回金库的字符串名字和跳马也是一个字符串。我的程序以此运行,但条件成立时,byteCount永远不会增加。然后我意识到,在比较字符串值时,我应该实际使用.equals(),因此如下更改了我的循环。

Vault vlt = mapper.readValue(currentLine, Vault.class); 
while(vlt.getvault_name().equals(vault)){ 
         byteCount += vlt.getBytes(); 
} 

现在我想囤我的程序,但它似乎被挂起。它一直坐着,就好像现在试图运行45分钟,通常需要大约30秒。虽然没有错误。

由于这是唯一改变了我的问题是使用.equals()有什么性能影响?

回答

1

我相信会发生这种情况,因为while循环已经转化为无限循环。在每次迭代期间,while循环都用一个字符串检查同一对象的值。看起来你需要一个if条件,而这个case与while循环相比。