java - 可以将常量值传递给函数参数吗?

标签 java function variables optimization parameters

我是一名计算机科学专业的学生,​​昨晚早些时候我正在学习作业。我在书中偶然发现了一个我认为多余的函数,但经过进一步检查,我变得相当“困惑”

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/

相关文章:

java - 如何在 Javafx 中为 XML 文件创建常量变量

Javascript addEventListener 函数在没有触发事件的情况下被调用

c++ - 你如何从一个更大的函数创建一个更小的函数?

ios - 每次在 textField 中输入新值时如何更新 tableView 单元格的标签?

python - python中带有setdefault的全局变量

java - 在运行时为 JTable 创建行标题

java - EnableConfigServer 不适用于 Spring Boot 中的 native 位置

java - Java 应用程序的安装程序

function - Delphi:过程中未声明的标识符

java - 无法从 Activity 类访问 GLSurfaceview 类中声明的变量(没有静态)