O próprio Java é uma chamada de passagem de valor e o valor do endereço é passado para o objeto. Reatribuir o valor do endereço equivale a renomear e não afetará a camada externa.
E o objeto Integer aqui também possui características especiais. Na verdade, pode ser semelhante a
Copie o código do código da seguinte forma:
classe Inteiro{
final int valor; //Uma vez atribuído, não pode ser alterado.
}
Isso aparece: o valor do endereço passado durante a chamada não pode alterar a camada externa + o próprio objeto não pode ser alterado. Como resultado, este valor não pode ser alterado
Existem muitas soluções
1. O estilo Java é usar o valor de retorno para um único valor. return i; atribua i=foo(); use arrays ou objetos para vários valores.
2. Passe em sua própria classe de encapsulamento. classe MutableInteger{ valor interno;}
3. Passe o objeto inteiro atômico AtomicInteger dedicado
Copie o código do código da seguinte forma:
public static void main(parâmetro String[]) {
AtomicInteger i=new AtomicInteger(40);
i.intValue();
System.out.println(i);
}
mudança de void estático público (AtomicInteger i) {
eu.set(55);
}
Você também pode alterar o valor depois de passá-lo,
Opção recomendada 1, tente evitar