这段代码并不难,但我对它的含义有点困惑。它的目标是返回一个由第一个字符开头的新字符串。
我没有得到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;
}
任何帮助将不胜感激。感谢
答案 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
。您可以在这两个引号之间放置任何文本。