2012-11-04 23 views
0

所以我试图寻找这个问题的答案,但真的不知道如何找到我的答案。我试图插入一个数组,其元素我以前在同一个类中声明。据我所知,它不工作。元素将会改变,但不是元素所代表的原始变量。这是因为它们不是同一个变量(数组进行复印或东西,我希望这是有道理的,但如果不是在这里是一些示例代码:?更改之前声明的也是数组元素的变量的值?

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); 
} 
} 

输出是:

所以很明显今天没有得到改变,虽然我希望它会,而且不知道如何可以使这项工作

。 210不幸的是很晚了。我一直在这工作几个小时。我累了。而且我非常确定时钟在我身上回滚了一个小时....知道为什么这种方式不起作用的答案会让这一切都值得。干杯!

回答

0

day是类Tuna的实例变量,并且您的数组的类型为int,它只是在其第一个索引处使用date(一个int变量)。因此,您的dateArray仅在第一个索引处使用day值。

int day=12; 

    int dateArray[] = {day}; 

现在dateArray的第一指标值是12.

1

intvalue type,而不是一个reference type,所以daydateArray不存储到值,但实际值的引用。

如果要分配新的价值day还有,你必须做明确:

void assignArray(int dayInput){ 
    dateArray[0] = dayInput; 
    day = dayInput; 
} 
0

当您创建dateArray通过复制日期,月,年的值将影响值。那些不是参考。 所以不要指望通过修改数组值来改变你的属性。

0

对于Java来说,你显然是新手(正如我可以从你不使用Java约定中所知道的那样),并且你应该知道这个指针在Java的这个特定情况下不会发生。

原始类型(您的案例中的整数)不是通过引用传递的,它们是按值传递的。

的解决问题的方法是只需添加另一行

day = dateInput 
dateArray[0] = day 
每次

更新当天的值。

相关问题