Java中的字符串比较很奇怪

时间:2014-05-15 07:17:17

标签: java string compare

嗨我的代码有一个奇怪的问题,我无法弄清楚什么是错的。

我有:

ArrayList称为玩家

类:播放器

班级:姓名

Player类包含Name类,其中包含3个字符串FirstName MiddleName LastName

问题在于我试图做什么

For( int i = 0; i < players.size(); i++)
{
    if( players.get(i).getName().getFirst() == "First1")
    {
         // Some Code 
    }

    System.out.printf(players.get(i).getName().getFirst());
}

如果陈述永远不是真的,那么奇怪的是当我使用system.out进行检查时如下

System.out.printf(players.get(i).getName().getFirst());

它返回:

First1 First2 First3

getName()方法返回对象名称,getFirst()返回String FirstName

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

永远不要将字符串与==进行比较。请改用.equals()。 “==”比较字符串的引用。 .equals()比较实际值。

答案 1 :(得分:3)

要比较java中的String对象,请使用.equals()方法而不是"=="运算符。如果您想忽略该案例,请使用.equalsIgnoreCase()方法。

对于字符串比较,您应该像这样使用

if( "First1".equals(players.get(i).getName().getFirst()))