我是一名计算机科学专业的学生,昨晚早些时候我正在学习作业。我在书中偶然发现了一个我认为多余的函数,但经过进一步检查,我变得相当“困惑”
public int refundBalance() {
int amountToRefund = balance;
balance = 0;
return amountToRefund;
}
当我看到这个时,我认为必须创建一个新的局部变量来存储和传递数据是相当多余的,所以我想到了这个:
refundBalance(balance);
public int refundBalance(int amount) {
balance = 0;
return amount;
}
但显然,我只是“交易线”。
问题:有没有办法始终将相同的参数传递给函数,而不必在调用时传递值?
可选问题:您将/能够如何优化此功能? (如果可能的话)
谢谢大家<3(P.S.这不是作业,这只是基本的好奇心。)
最佳答案
实际上,您实际上可能希望以原子方式访问余额并保护它免受多个线程的访问。如果是这种情况,您可以使用 AtomicInteger通过 getAndSet
一次性完成此操作。
import java.util.concurrent.atomic.AtomicInteger;
private final AtomicInteger balance = new AtomicInteger();
public int refundBalance() {
return balance.getAndSet(0);
}
这实际上是我在方法上使用 synchronized
并按照上面的方式编写的建议。它也恰好是一行:-)。
关于java - 可以将常量值传递给函数参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9219963/