使用 Char[] 数组有效地覆盖 toString
Override toString efficiently with Char[] Array
我正在创建一个 class,其中一个 char[]
数组作为唯一的实例变量。我必须使用构造函数和访问器方法等,但困难的部分是创建一个有效的 toString()
方法。
现在,我已将数组初始化为:
private char[] tune = new char[5];
我的 toString() 方法如下所示:
public String toString() {
return notes[0] + " " + notes[1] + " " + notes[2] + " " + notes[3] + " " + notes[4];
}
我的问题是:有没有更有效的打印方法。我想到了使用for循环,如下图:
for(int i = 0; i <= tune.length; i++) {
return tune[i] + " ";
}
但我认为这会 return 调整 [0] 并停止。
数组已经内置了打印整个数组的方法。 (ArrayLists 不是这种情况)。
如果您查看 documentation 中的数组,您可以看到有一个名为 Arrays.toString()
的函数
这是一个如何使用它的例子。
String[] array = new String[] {"a","b","c"};
// Print out the Array
System.out.println(Arrays.toString(array));
// Output
[a,b,c]
如果您想打印出从索引a到索引b的数组,那么使用for...
循环会更好。
如果要覆盖 toString()
方法,请使用在循环外初始化的 StringBuilder
。
public String toString() {
StringBuilder sb = new StringBuilder();
for (char ch : array) { // you used both notes and tune arrays in your examples,
// so I'm just going to use "array" as the variable name as an example
sb.append(ch);
sb.append(" ");
}
return sb.toString();
}
请注意,这会在最后导致额外的 space,如果不需要,请改用:
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length - 1; i++) { // adds a space after every element
// except for the last one, hence "i < array.length - 1"
sb.append(array[i] + " ");
}
sb.append(array[array.length - 1]); // adds only the last element and no space
// after
return sb.toString();
}
希望这很容易理解!
注意 - Java 已经可以将 char[]
转换为字符串,但我假设您想更改它的转换方式。
我正在创建一个 class,其中一个 char[]
数组作为唯一的实例变量。我必须使用构造函数和访问器方法等,但困难的部分是创建一个有效的 toString()
方法。
现在,我已将数组初始化为:
private char[] tune = new char[5];
我的 toString() 方法如下所示:
public String toString() {
return notes[0] + " " + notes[1] + " " + notes[2] + " " + notes[3] + " " + notes[4];
}
我的问题是:有没有更有效的打印方法。我想到了使用for循环,如下图:
for(int i = 0; i <= tune.length; i++) {
return tune[i] + " ";
}
但我认为这会 return 调整 [0] 并停止。
数组已经内置了打印整个数组的方法。 (ArrayLists 不是这种情况)。
如果您查看 documentation 中的数组,您可以看到有一个名为 Arrays.toString()
这是一个如何使用它的例子。 String[] array = new String[] {"a","b","c"};
// Print out the Array
System.out.println(Arrays.toString(array));
// Output
[a,b,c]
如果您想打印出从索引a到索引b的数组,那么使用for...
循环会更好。
如果要覆盖 toString()
方法,请使用在循环外初始化的 StringBuilder
。
public String toString() {
StringBuilder sb = new StringBuilder();
for (char ch : array) { // you used both notes and tune arrays in your examples,
// so I'm just going to use "array" as the variable name as an example
sb.append(ch);
sb.append(" ");
}
return sb.toString();
}
请注意,这会在最后导致额外的 space,如果不需要,请改用:
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length - 1; i++) { // adds a space after every element
// except for the last one, hence "i < array.length - 1"
sb.append(array[i] + " ");
}
sb.append(array[array.length - 1]); // adds only the last element and no space
// after
return sb.toString();
}
希望这很容易理解!
注意 - Java 已经可以将 char[]
转换为字符串,但我假设您想更改它的转换方式。