你能帮我解释一下这段代码吗?

时间:2016-01-03 23:28:37

标签: java string character

这段代码并不难,但我对它的含义有点困惑。它的目标是返回一个由第一个字符开头的新字符串。

我没有得到String result = "";的含义。那是null吗?

public String stringBits(String str)   
{  
    String result = "";  
    int i = str.length();  
    for(int j = 0; j<i; j+=2)  
    {  
        result = result + str.substring(j, j+1);  
    }  
    return result;  
}  

任何帮助将不胜感激。感谢

4 个答案:

答案 0 :(得分:4)

这是一个非常低效的代码,通过在result中添加一个字符的字符串,在循环中使用字符串连接。它以空字符串开始result关闭,然后从偶数位置开始从原始字符串中删除一个字符的块。

更好的方法是使用StringBuilder,并将单个字符而不是子字符串附加到结果中:

StringBuilder result = new StringBuilder();
for(int j = 0; j < i; j += 2) {
    // Append character at j to result
    result.append(str.charAt(j));
}
return result.toString();

答案 1 :(得分:1)

以下是您发布的代码的注释版本:

// Declare a public method stringBits that accepts a String str
public String stringBits(String str) 
{
    // Declare a String literal named result containing an empty string ("")
    String result = "";

    // Store the length of the passed String str in integer i
    int i = str.length();

    // Loop while j (loop index) is less than the length of str (j < i)
    // j starts at 0 (int j = 0)
    // Increase j by 2 each iteration (j += 2)
    for(int j = 0; j < i; j += 2)
    {
        // Extract the character between index j and j+1, append to result
        result = result + str.substring(j, j+1);
    }

    // Once the loop has finished, return the result string to the calling method
    return result;
}

正如其他人所提到的,String result = ""只是意味着定义了一个String并将值设置为“”。字符串可以包含零个字符,但仍然有效,而不是空。

祝你好运!这种东西很快就会自然而然。

答案 2 :(得分:1)

代码接收String str作为参数,取出String str的偶数索引上的字符,并将它们附加到结果String。例如,如果String str等于“abcdef”,则String结果的值将为“ace”。

答案 3 :(得分:0)

String result = ""只表示String为空。但它不是null。您可以在这两个引号之间放置任何文本。