Variáveis em métodos diferentes

ja estou a um bom tempo tentando fazer uma coisa e ja fiz alguns tópicos no mesmo sentido mas acho que esta um pouco complicado então estou refazendo o tópico, o que eu quero é o seguinte

public void dan(){
  int valor = 10
}

public void tela(){
System.out.println(valor);
}

não me importa como eu só quero saber como eu faço para poder interagir métodos um com o outro e sei que é possível

public void dan(){
    int valor = 10;
    tela(valor);
}

public void tela(int parametro){
    System.out.println(parametro);
}

Na verdade importa sim, pois tem várias formas de fazer, e a “melhor” vai depender do contexto. E sem saber o contexto, só podemos especular, mas enfim…

Quando você faz isso:

public void dan() {
    int valor = 10; // <-- não esqueça o ponto-e-vírgula!
}

A variável valor é local ao método dan (ela só existe ali dentro, depois que o método é executado ela “some” e não pode ser acessada de fora do método).

Se a ideia é passar esse valor para outro método, você pode fazer com que o outro método receba este valor como parâmetro (como já indicado acima):

public void dan(){
    int valor = 10;
    tela(valor);
}

public void tela(int valor){
    System.out.println(valor);
}

Ou, se o 10 não for ser usado para mais nada dentro de dan, nem precisaria de variável, passe o valor direto:

public void dan(){
    tela(10);
}

public void tela(int valor){
    System.out.println(valor);
}

Ou você pode fazer o método dan retornar o valor, aí outros métodos podem obter esse valor retornado:

public int dan(){
    return 10;
}

public void tela(){
    // imprime o que for retornado por dan
    System.out.println(dan());
}

Como eu disse, sem contexto não dá para saber o que faz mais sentido (não sabemos o que é esse valor, como/quando ele é usado, quais as regras de interação entre esses métodos, etc). Pois dependendo do caso, o valor poderia ser até uma variável de instância:

public class MinhaClasse {
    private int valor;

    public void dan() {
        this.valor = 10;
    }

    public void tela(){
        System.out.println(this.valor);
    }
}

Aí as modificações feitas em um método são visíveis no outro, já que agora valor é um campo da classe, e não mais uma variável local.

muito obrigado você me ajudou, mas isso foi um exemplo simples para que qualquer um possa entender por isso eu não criei a variável direto no

public void tela(){
}

`