我已经搜寻了几分钟,却找不到类似于我的问题。万一这是一个以前曾提出过的问题,我们深表歉意,这不是故意的。
我正在尝试更改作为参数传递的静态变量的值。因此,有以下代码块:
public int check(int row, int column, char ch, Color color, int score) {
this.row = row;
this.column = column;
this.ch = ch;
this.color = color;
this.score = score;
flag = 0;
if (something){
do stuff
score++;
}
}
并且为 int得分 传递了这些静态变量:
public static int player1Score;
public static int player2Score;
应该通过事件处理程序调用该方法,并且他们按下的按钮确定将player1Score还是player2Score作为参数传递。如果这只是一个作为参数传递的变量,那会很容易,但是此时它是两个或多个,除了复制重复的if语句并将它们分别作为player1Score ++和playr2Score ++。
大约有35条if语句检查条件以执行score ++,我只是想问一下是否有一种方法可以更改参数本身的值。
两个静态得分变量位于不同的类中。
我们将不胜感激。
谢谢。
答案 0 :(得分:1)
正如@ isuru89所说,它是按值传递的。
因为您在int score
方法中定义了原始类型check
,所以此变量存储在check
方法的堆栈中。除非您将其返回,否则其他人将看不到对此变量的任何更改。
有一篇不错的文章java memory model,您可以参考。