更改先前声明的变量的值,该变量也是数组的元素?

时间:2012-11-04 10:17:12

标签: java

所以我试着寻找这个问题的答案,但我真的不知道如何找到答案。我试图将值插入一个数组,其元素我先前在同一个类中声明。据我所知,它无法正常工作。元素将更改,但不会更改元素表示的原始变量。这是因为它们不是同一个变量(数组是副本还是什么?我希望这是有意义的,但如果不是这里是一些示例代码:

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

很明显,一天不会改变。虽然我希望如此,并想知道如何才能使这项工作。

不幸的是,现在已经很晚了。我已经在这工作了几个小时。我累了。而且我很确定时钟只是在我身上花了一个小时......知道为什么这不起作用的答案会让一切都值得。干杯!

4 个答案:

答案 0 :(得分:1)

intvalue type,而非reference type,因此daydateArray不存储对值的引用,而是存储实际值。

如果您想将新值分配给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

每次更新日期值。

相关问题