A diferença é uma é uma constante a outra poderá ser alterada? qual mais indicada?
private static final String PASSWORD = "password";
String password = "password";
A diferença é uma é uma constante a outra poderá ser alterada? qual mais indicada?
private static final String PASSWORD = "password";
String password = "password";
Isso! a variável que está definida como estática não pode ter seu valor alterado!
É recomendado que seja igual a primeira opção, pois uma senha de acesso ao banco de dados não é uma informação que se altera com alta taxa de recorrêcia.
Mas não deveria apenas ser “final” sem o static? Pois não vejo outra utilidade para esse static senão acessá-lo diretamente via getter e setter, só que se torna confuso visto que fica static final… e final se não pode ser alterado por isso não vejo sentido em ter static.
Entendi, mas static e final tem suas diferenças!
O uso de final em variáveis, quer dizer que você não pode atribuir valor duas vezes à variável.
O uso de static quer dizer que a variável pertence a classe, e não ao objeto, isso quer dizer que todas as instâncias de uma classe enxergam a mesma variável, se uma delas modificar o valor vai refletir em todas as outras instâncias.
Para uma constante se usa os dois modificadores porquê o mesmo valor vai ser visto por todas instâncias da classe (static) e nunca poderá ser modificado depois de inicializado (final).
você é o cara, valeu.
Os modificadores static e final possuem propósitos diferentes.
final serve para que o identificador só possa ser inicializado uma única vez.
static serve para compartilhar a mesma referência de memória entre todas as instâncias, quando você altera o conteúdo de uma variável static, isso é refletido para todas as instâncias da classe, pois na verdade é uma referência para o mesmo endereço de memória, por isso são chamadas de variáveis de classe.
Variáveis declaradas com final mas sem o static são chamadas de constantes dinâmicas, pois são inicializadas ao se instanciar a classe (ao criar um objeto).
Já as variáveis static são inicializadas quando a classe é carregada pela JVM.