vamos la
vc chama de “variavel” pq provavelmente não entendeu o conceito de objetos e seus atributos.
se vc declara uma variavel fora de um metodo, vc esta declarando um atributo que pode pertencer a instancia ou a classe ( essa ultima recebe o modificador static ).
agora vamos ver o que acontece com o seu codigo: vc recebe uma variavel ‘contador’. e depois reatribui a este contador um outro valor. por que razão vc espera que o objeto saiba disso?
sério?
se vc faz
variavel = uma coisa;
objeto.qqCoisa( variavel );
variavel = outra coisa;
o objeto não sabe disso. e não tem pq saber. a unica forma de fazer é usando orientação a objetos
mas como?
variavel = um objeto mutavel;
objeto.qqCoisa( variavel );
variavel.algumMetodoQualquer();
se o seu objeto guardou uma referencia ao objeto, chamar um metodo que mude o estado interno do mesmo vai ser propagado.
o que é um objeto mutavel?
um objeto possui um estado e este estado pode mudar ou não. um objeto que represente o valor 1 ( um ) talvez não faça sentido mudar pois… ele representa o 1! mas um objeto como um Aluno pode ter uma nota alterada.
Strings e Wrappers para os tipos primitivos numericos são imutaveis. alias tipos primitivos não são objetos, mas vc tem autobox e pode criar um objeto que contem o numero
int i = 0;
Integer j = new Integer(0);
nesse caso j é um objeto ( um Integer ) mas i é um tipo primitivo inteiro ( não tem metodos ).
portando pense bem: vc precisa de um objeto mutavel que contem um numero.
por exemplo o seu contador pode ser
public class Contador implements Runnable {
private int c;
public Contador( int c) { this.c = c;}
public void incrementa(int x) { c += x; }
public int mostra() { return c; }
...
}
perceba que vc não precisa da variavel
Contador x = new Contador(5);
new Thread(x).start();
while(true){
System.out.println("contador agora tem " + x.mostra());
int tanto = /*aquele parseInt maneiro vindo do JOptionPane... */
x.incrementa( tanto );
}
magica? não é orientação a objetos. vc pensa em ‘variaveis’ como em programação procedural e ai não pesca a essencia da coisa.