Java 为什么盗窃.getTime()[0]=“0”;aaa“+;thift.getTimie()[0]don';你不能改变这个值吗?
跑步时Java 为什么盗窃.getTime()[0]=“0”;aaa“+;thift.getTimie()[0]don';你不能改变这个值吗?,java,Java,跑步时 public class Theft{ private String[] time =new String[4]; public String[] getTime() { return time = Arrays.copyOf(time, 4); } public void setTime(String[] time) { this.time = time; } } 为什么打印“sss”而不是“aaasss”?该值似乎没有更改。因为您每次都要创建它
public class Theft{
private String[] time =new String[4];
public String[] getTime() {
return time = Arrays.copyOf(time, 4);
}
public void setTime(String[] time) {
this.time = time;
}
}
为什么打印“sss”而不是“aaasss”?该值似乎没有更改。因为您每次都要创建它的副本
Theft theft =new Theft();
theft.getTime()[0]="sss";
theft.getTime()[0]="aaa"+theft.getTime()[0];
System.out.println(theft.getTime()[0]);
输出:aaasss
此行
public class Theft {
private String[] time = new String[4];
public String[] getTime() {
return time; // Return the time itself, not a copy
}
public void setTime(String[] time) {
this.time = time;
}
}
一次发生几件事。让我们将其分解为单独的说明,以便更易于遵循:
theft.getTime()[0]="aaa"+theft.getTime()[0];
如您所见,更新的数组是已被其副本替换的time1
。因此,更新被有效地丢弃
String[] time1 = theft.getTime();
String[] time2 = theft.getTime();
String newValue = "aaa"+time2[0];
time1[0] = newValue;