Qual a diferença entre inicializar uma variável de instância na classe e no método?

Pessoal, por exemplo, eu declaro uma variável no escopo da classe, mas eu gostaria de saber qual seria a diferença em inicializar uma variável de instância no escopo da classe (não sei se esse é o nome) ou então inicializar essa mesma variável de instância declarada anteriormente em um método dessa classe na qual ela foi declarada. Há alguma diferença?

Inicializar no método, a variável ficará acessível somente dentro do método e

inicializar na classe ela fica global e pode ser acessado dentro de qualquer método.

[quote=javahunter]Inicializar no método, a variável ficará acessível somente dentro do método e

inicializar na classe ela fica global e pode ser acessado dentro de qualquer método.

[/quote]

Mas tipo, eu irei declarar a variável na classe, se eu inicializar essa variável no método, no final das contas não seria a mesma coisa que inicializar a variável na hora que eu declarei? Já que apesar de eu inicializar a variável como local (inicializar no método), eu estaria inicializando uma variável global.
A variável de instância ainda terá essa referência ao objeto que inicializei no método ou vai perder essa referência com o fim do método?

Acho que você quer saber a diferença entre:

class X {
    private int a = 10; // inicializado "na classe" 
    private int b;
    public X () {
         b = 20; // inicializado "no construtor"
    }
}

Se for isso, a diferença é apenas de estilo, porque na verdade o código acima é equivalente a:

class X {
    private int a;
    private int b;
    public X () {
         a = 10; 
         b = 20; // inicializado "no construtor"
    }
}

Na verdade, há um pouco de diferença quando a inicialização requer um pedaço de código que pode lançar uma exceção, ou quando você precisa inicializar as variáveis-membro em uma determinada ordem. Se houver alguma dessas coisas, prefira inicializar no construtor ou então em um método de inicialização. Um exemplo:

class X {
    public X() {
        initialize();
    }
    private void initialize () {
        a = 10;
        b = 10 + a; // note que b depende de a, por isso é melhor deixar isso explícito dentro da inicialização
    }
}

Mas tipo, eu irei declarar a variável na classe, se eu inicializar essa variável no método, no final das contas não seria a mesma coisa que inicializar a variável na hora que eu declarei?
R: Sim, são duas opções que vc tem. E também essa variável que vc declarou na classe poderá ser usada em outros métodos.

Já que apesar de eu inicializar a variável como local (inicializar no método), eu estaria inicializando uma variável global.
R: Sim.
A variável de instância ainda terá essa referência ao objeto que inicializei no método ou vai perder essa referência com o fim do método?
Não, porque já foi inicializada