java - 函数使用后如何使参数保持其值不变?
问题描述
我正在学习Java,但我无法弄清楚。我有一个简单的更改函数,可以更改它们之间的 2 个参数的值。如果 x = 5 且 y = 7,则执行后 x= 7 且 y = 5。Java 中有没有办法像在使用 &x、&y 的 c++ 中那样保持这些值的变化?
public static void change(int x, int y){
x=x+y;
y=x-y;
x=x-y;
}
解决方案
在 Java 中 int 是一种原始类型。所以对于任何原始类型你都做不到。Java 中的每个原语都有一个盒装原语,但这里 Integer 是不可变的(一旦初始化就不能改变它的状态),所以即使使用 Integer 也行不通。
所以你有两个解决方案:
1)使用来自apache commons jar的MutableInt 。
2)为它创建一个包装类,如下所示并使用它。
public class MutableInt {
private int myInt; //default initialized with 0
public int getMyInt(){
return myInt;
}
public void setMyInt(int myInt) {
this.myInt = myInt;
}
}
在change
方法里面
public static void change(MutableInt x, MutableInt y){
x.setMyInt(x.getMyInt() + y.getMyInt());
y.setMyInt(x.getMyInt() - y.getMyInt());
x.setMyInt(x.getMyInt() - y.getMyInt());
}
然后,当您使用x 或 yx.getMyInt() or y.getMyInt()
获取值时,您将获得更新的值。
推荐阅读
- css - 如何更改 vaadin 8 组合框下拉项的背景颜色?
- java - 在类属性中嵌入 json
- python - opencv -215:尝试打印面部坐标时断言失败
- linux - Rainloop 发送邮件认证失败
- git - Bitbucket 自动将主仓库中的提交合并到另一个仓库
- python - 为什么我的 Python 代码为列表中的所有元素提取相同的数据?
- amazon-advertising-api - 在 v2/配置文件中找不到广告帐户
- jquery - 带有多选复选框的 jQuery tablecomplete,tablecomplete 每次搜索只选择一行,
- android - reclyerView 中的图像随着 layoutManager 的变化而变小
- python - 即使使用硬编码日期时间,Airflow DAG 也永远不会运行