所以我试着寻找这个问题的答案,但我真的不知道如何找到答案。我试图将值插入一个数组,其元素我先前在同一个类中声明。据我所知,它无法正常工作。元素将更改,但不会更改元素表示的原始变量。这是因为它们不是同一个变量(数组是副本还是什么?我希望这是有意义的,但如果不是这里是一些示例代码:
public class bucky {
public static void main(String args[]) {
tuna tunaObject = new tuna();
tunaObject.assignArray(25);
}
}
public class tuna {
int day;
int month;
int year;
int dateArray[] = {day, month, year};
void assignArray(int dayInput){
dateArray[0] = dayInput;
System.out.println(dateArray[0]);
System.out.println(day);
}
}
输出是: 25 0
很明显,一天不会改变。虽然我希望如此,并想知道如何才能使这项工作。
不幸的是,现在已经很晚了。我已经在这工作了几个小时。我累了。而且我很确定时钟只是在我身上花了一个小时......知道为什么这不起作用的答案会让一切都值得。干杯!
答案 0 :(得分:1)
int
是value type,而非reference type,因此day
和dateArray
不存储对值的引用,而是存储实际值。
如果您想将新值分配给day
,则必须明确地执行此操作:
void assignArray(int dayInput){
dateArray[0] = dayInput;
day = dayInput;
}
答案 1 :(得分:0)
day
是类Tuna
的实例变量,并且您的数组是int类型,它只在第一个索引处使用date(一个int变量)。所以,dateArray只是使用该值在第一个指数的一天。
int day=12;
int dateArray[] = {day};
现在dateArray的第一个索引值为12。
答案 2 :(得分:0)
创建dateArray时,您可以通过复制日期,月份和年份的值来影响值。那些不是参考。 因此,不要期望通过修改数组值来更改属性。
答案 3 :(得分:0)
你显然是Java的新手(正如我可以从你没有使用Java约定中看出来的那样),你应该知道这个指针的东西在Java中不会发生在你的特定情况下。
原始类型(在您的情况下为整数)不通过引用传递,它们按值传递。
问题的解决方案是只添加另一行
day = dateInput
dateArray[0] = day
每次更新日期值。