Java 编辑)在方法调用中将对象用作参数 公共类递增器{ 公共递增器(){ 计数器=1; } 公共递增器(int起始值){ 计数器=起始值; } public int nextValue(){ int temp=计数器; 计数器++; 返回(临时); } 专用int计数器; } 导入acm.程序。*; 公共类useCounter扩展控制台程序{ 公开募捐{ incrementer count1=新的incrementer(); 递增计数器2=新递增计数器(1000); println(“count1的五个值:”); countFiveTimes(count1); println(“count2的五个值:”); countFiveTimes(count2); println(“count1:”的另外五个值); countFiveTimes(count1); } 私有void countFiveTimes(递增计数器){ 对于(int i=0;i

Java 编辑)在方法调用中将对象用作参数 公共类递增器{ 公共递增器(){ 计数器=1; } 公共递增器(int起始值){ 计数器=起始值; } public int nextValue(){ int temp=计数器; 计数器++; 返回(临时); } 专用int计数器; } 导入acm.程序。*; 公共类useCounter扩展控制台程序{ 公开募捐{ incrementer count1=新的incrementer(); 递增计数器2=新递增计数器(1000); println(“count1的五个值:”); countFiveTimes(count1); println(“count2的五个值:”); countFiveTimes(count2); println(“count1:”的另外五个值); countFiveTimes(count1); } 私有void countFiveTimes(递增计数器){ 对于(int i=0;i,java,object,parameters,parameter-passing,Java,Object,Parameters,Parameter Passing,您必须理解java中引用和对象的概念。引用是指向对象的指针。因此,当您说: public class incrementer { public incrementer () { counter =1; } public incrementer (int startValue) { counter = startValue; } public int nextValue() { int temp = counter; counter++; retur

您必须理解java中引用和对象的概念。引用是指向对象的指针。因此,当您说:

public class incrementer {

public incrementer () {

    counter =1;
}

public incrementer (int startValue) {
    counter = startValue;
}

public int nextValue() {
    int temp = counter;
    counter++;
    return (temp);

}


private int counter;
}


import acm.program.*;

public class useCounter extends ConsoleProgram {
public void run() {
    incrementer count1 = new incrementer();
    incrementer count2 = new incrementer(1000);

    println("Five values for count1 :");
    countFiveTimes(count1);

    println("Five values for count2 :");
    countFiveTimes(count2);

    println("Another five values for count1 :");
    countFiveTimes(count1);



}

private void countFiveTimes(incrementer counter) {
    for (int i=0; i<5; i++) {
        println(counter.nextValue());

    }

}

}
您正在做两件事。首先在堆中创建一个对象,然后创建一个名为count1的引用,该引用指向堆中的对象

当您在方法中传递“count1”时,您实际上传递了对象。这意味着堆中的对象基本上保留在堆中,但创建了另一个引用“increment counter”,它也指向count1引用所指向的对象

现在,使用引用“counter”对对象所做的所有更改都会影响count1所指向的同一对象

这就像两个人用自己的绳子在空中抓着一只风筝,谁拉它,谁就是在空中高高飞翔的同一只风筝


我假设您认为对象实际上是“传递”的,然后更改,然后返回,并将其状态复制回原始对象。情况并非如我所解释的那样。

上述代码应返回
1 2 3 4 5
。您得到了什么?您必须阅读。输入太多,我仍然不明白您的问题。A)请花时间将所有输入(尤其是代码)正确格式化/缩进。B)阅读。不要进行冗长的解释。最好使用简单的示例,而不是文本描述,说明发生了什么和预期会发生什么。当您创建“int”对象时,您将其保存在RAM中,因此,“incrementer”是另一个类似于“int”、“string”等…它似乎会一直留在内存中,直到你释放它…如果你是这个意思的话。
 incrementer count1 = new incrementer();