为什么以下代码提取字符而不是空格?

时间:2018-03-21 23:47:54

标签: java

我看到了如下代码段:

public class Practice
{
    public static void main( String[] args )
    {
        String i = new String("I love you");
        System.out.println(doSomething(i));
    }
    public static String doSomething( String s )
    {
        final String BLANK = " ";
        String str = "";
        String temp;
        for ( int i = 0; i < s.length(); i++)
        {
            temp = s.substring(i, i + 1);
            if (!(temp.equals(BLANK)))
            {
                str += temp;
            }

        }
        return str;
    }
}

我对这里的代码非常困惑。我相信每当for循环运行时,String中的一个字符将被提取出来。例如,当i = 0时,temp应为“I”,i = 1,“”,i = 2,“l”等。当temp =“”时,if语句指出空白将添加到String str。因此,每当运行for循环时,temp将相应地改变,因此除非其值为“”,否则不能存储该值。

输出是Iloveyou。

1 个答案:

答案 0 :(得分:2)

问题在于:

   if (!(temp.equals(BLANK)))
        {
            str += temp;
        }

IF temp 不是(!表示不是) BLANK

然后执行:str += temp;