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中引用和对象的概念。引用是指向对象的指针。因此,当您说: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
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();