Pessoal, desculpe a ignorância, mas eu queria saber a diferença disto:
No início da classe, portanto antes de todos os métodos, eu declaro uma variável assim:
int valor_1 = 100;
Daí (acredito) ela fica local à classe, podendo ser acessada por todos os métodos desta classe.
Se é assim, por que eu deveria usar a expressão abaixo?
quando vc nao declara nenhum modificador essa variavel torna-se padrão acessivel para todo o pacote.
quando vc declara private somente para classe que declaro.
Quando você usa private você faz com que essa variável não seja visível a outras classes.
Quando você não declara o modificador. Você usa a visibilidade padrão, que é a public.
O modificador public permite que você acesse as variáveis dessa classe usando o operador ponto.
Um exemplo legal. Lá na classe java.lang.Math tem uma variável declarada assim:
static double PI = 3.14......
E você pode acessá-la de qualquer uma de suas classes. Veja no código abaixo o cálculo da área do círculo:
Quando vc nao declara modificador torna-se padrao visivel somente para o pacote.
Quando vc coloca sua variavel como public é visivel a todas as classe inclusive pacotes.
package carros;
public class Car {
double preco; // Nota 1
}
Nota1: Não foi definido nenhum modificado, portanto assume o modificador padrão
package oficina;
import carros.*;
class Oficina {
public static void main(String[] args) {
Car c = new Car();
c.preco = 13990.00; // Nota 2
Nota2: Acesso não permitido para classes de pacotes diferentes. Erro de compilação
entao padrao é uma coisa.
public é outro
Agora voltando ao assunto
Um variável private restringe o acesso somente a própria classe
Uma variavel nao declarada(padrao), o acesso só é permitido a classes dentro do mesmo pacote