Прежде всего, вы можете изменить статические c переменные внутри метода:
private static void changeValueOf(int value)
{
number1 = value;
}
Но я думаю, это не то, что вы ищете:)
In Java (и в большинстве других языков) примитивный тип данных (int
, short
, long
, и c), передаваемый по значению, например, копия значения передается методу (функции). И ссылочные типы (объекты, например, созданные с помощью оператора new
) передаются по ссылке. Итак, когда вы изменяете значение ссылочного типа (объекта), вы можете видеть изменения во внешних областях (например, в вызывающем методе).
Итак, ответ отрицательный - вы не можете изменить значение int
, чтобы внешняя область видела обновленное значение.
Однако вы можете обернуть свои значения int некоторым объектом - и это изменит значение внутри него:
public class Example {
public static void main(String[] args) {
Example app = new Example();
// Could be static as well
Holder val1 = new Holder(1);
Holder val2 = new Holder(2);
app.changeValue(val1, 7);
System.out.println(val1.value); // 7
}
public void changeValue(Holder holder, int newValue) {
holder.value = newValue;
}
static class Holder {
int value;
Holder(int value) {
this.value = value;
}
}
}
Кроме того, вы можете создать массив с двумя значениями и обновить их внутри метода, но это не очень хороший подход IMO
И, наконец, вы можете просто вернуть обновленное значение и присвоить его своим переменным:
public class Example {
private static int number1 = 2;
private static int number2 = 3;
public static void main(String[] args) {
Example app = new Example();
number1 = app.mul(number1, 7);
number2 = app.mul(number2, 7);
System.out.println(number1); // 14
System.out.println(number2); // 21
}
public int mul(int a, int b) {
return a * b;
}
}