publicclassMyClass{publicstaticvoidmain(String[]args){StringstrMsg="Welcome";strMsg+=" to SCJA";strMsg.concat(" Certificate");System.out.println(strMsg);}}
a variável y, é uma variável de instancia, cada objeto dessa classe vai ter uma. Mas a variável x, por ser estatica, sera compartilhada por todos os membros dessa classe.
diegofss11
Pode ser considerada variavel estatica = variavel de classe (“variavel global”) ?
italons
Quanto a segunda duvida, o método concat da classe String retorna um valor, vc tem q fazer assim:
StringstrMsg="Welcome";strMsg+=" to SCJA";Stringmsg=strMsg.concat(" Certificate");System.out.println(strMsg);System.out.println(msg);
A saída é:
Welcome to SCJA
Welcome to SCJA Certificate
sacou?
flw
italons
Acho q não Diego, pois pense só: variáveis podem ser globais ao codigo de uma classe sem serem estáticas, como a varivel de instancia do código q vc mostrou. Variaveis globais existem mesmo em linguagens q nao sao orientadas à objetos.
A questao é q numa varivel estatica todas as instancias da classe enxergarão o mesmo valor.
Numa variável de instancia, cada instancia da classe terá seu valor lá, q poderá ou nao ser igual.
R
raf4ever
Acho q não Diego, pois pense só: variáveis podem ser globais ao codigo de uma classe sem serem estáticas, como a varivel de instancia do código q vc mostrou. Variaveis globais existem mesmo em linguagens q nao sao orientadas à objetos.
Exato.
A variável “estática” no Java seria aquela marcada como ‘final’
ViniGodoy
Variáveis estáticas são consideradas variáveis globais sim, exceto se forem privadas.
Qualquer classe dentro do escopo daquela variável a enxergará. Criar variáveis estáticas é uma péssima prática. Quase sempre é inútil e ela sempre causa muitas dores de cabeça.
No java, uma variável estática é marcada como static. O final é usado para definir constantes.
adriano_si
Fala Viny,
Como assim Dores de cabeca ??? To perguntando porque procuro evitar ao maximo o uso de Variaveis estaticas, mas sei la, algumas vezes nao consigo enxergar outra solucao, assim como metodos, (Principalmente alguns utils da vida)
Por exemplo, em nosso Sistema temos um Framework interno que contem alguns Utils (todos com metodos static). So que um amigo e eu precisamos de metodos que serao Utils da vida so que nao estao no Framework. Logo criamos o nosso Util e sempre que precisamos, colocamos um novo metodo static pra ser acessado direto pela classe sem precisar criar um objeto… Fizemos isso, pq no sistema eh usado o Spring e se tivermos um Objeto, vamos ter que Mapea-lo pra cada instancia que precisar desse util, ou seja, quase todas… Logo pensei que o static deixaria mais “simples”… Voce acha melhor eu criar um Objeto entao ?? Qual seria a vantagem ?? O Spring tem alguma forma de fzer com que eu mapeie uma classe para um contexto inteiro ao inves de ficar criando de Bean por Bean ???
Valews…
R
raf4ever
ViniGodoy:
Variáveis estáticas são consideradas variáveis globais sim, exceto se forem privadas.
Qualquer classe dentro do escopo daquela variável a enxergará. Criar variáveis estáticas é uma péssima prática. Quase sempre é inútil e ela sempre causa muitas dores de cabeça.
No java, uma variável estática é marcada como static. O final é usado para definir constantes.
Quis dizer estática no sentido de não ter seu valor modificado…
ViniGodoy
As variáveis estáticas sofrem dos seguintes problemas:
a) Nunca saem de escopo. Portanto, a menos que você as nulifique explicitamente, elas nunca serão coletadas pelo Garbage Collector. Isso é especialmente problemático se sua variável estática apontar para uma lista e boa parte dos memory leaks surgem daí.
b) Elas são péssimas quando você precisa garantir thread-safety, pois elas sempre são compartilhadas. Variáveis não estáticas diferentes podem habitar threads diferentes sem necessidade de sincronização. Elas são a principal causa de código thread-hostile (que nem com sincronização se resolve);
c) Dependendo do uso que você faça dessa variável, ela pode ter os mesmos problemas das variáveis globais.
Eu não falei em métodos estáticos. Métodos estáticos que recebem parâmetros de fora (como os seus Utils) são perfeitamente aceitáveis. Assim como métodos fábrica estáticos.
Essas observações também não valem para constantes estáticas.
adriano_si
Blz Viny… Saquei…
So fiquei preocupado porque tbm procuro evitar Variaveis static e realmente me surgiu essa duvida em relacao a componentes static como um todo… Valew pela explicaco, anotado…