Galera estou em dúvida, tava vendo um vídeo de Java e o professor disse que variáveis globais em Java existe quando se usa o static…
uns post aqui do GUJ dizem que elas NÃO existem…
e ai como fica isso?
Galera estou em dúvida, tava vendo um vídeo de Java e o professor disse que variáveis globais em Java existe quando se usa o static…
uns post aqui do GUJ dizem que elas NÃO existem…
e ai como fica isso?
Apesar de ser estática ela não pertence ao sistema, mas a classe.
Ela pode ser acessada de qualquer lugar, mas para chegar nela, tem que passar pela classe.
E na boa? não entendo pq esse povo ainda fica discutindo esse tipo de coisa.
Se esse cara gosta tanto de variável estática, que vá trabalhar com sistemas que utilizam sempre sempre esse conceito. tsc
Então por ser estática não quer dizer que seja global?
isso então não é um método global?
public static void main(String args[]) {
}
E no que uma variável public e estática é diferente de uma variável global?
Variáveis globais também estavam sujeitas a namespaces (e, no caso do Java, está ao namespace da classe).
E, com o import static, essas variáveis já podem até serem diretamente acessadas.
Não há nenhum impedimento para que um programador use uma variável estática publica de uma classe publica, portanto, a classe também não oferece nenhum tipo de proteção (exceto contra aquele que não sabe que a classe existe, o que é tão inócuo quanto contar com a proteção daquele que não sabe que a variável existe).
E uma variável desse tipo terá os mesmos problemas de qualquer global.
Por conta desses fatores, creio que seu professor esteja certo.
Quem diz que não tem global está preso em questões linguísticas de menor importância.
Mas afinal qual é a importância de discutir se uma variável é global apenas de nome? Uma variável public static em Java funciona da mesma forma, mas o conceito é diferente pelo fato de ser programação orientado a objetos.
Que conceito é diferente?
O conceito de variável global é que é uma variável acessível em qualquer escopo. Nesse caso, uma variável public static, numa classe public, é. Então, não vejo o que seja diferente só pelo fato de ser OO.
Que conceito é diferente?
O conceito de variável global é que é uma variável acessível em qualquer escopo. Nesse caso, uma variável public static, numa classe public, é. Então, não vejo o que seja diferente só pelo fato de ser OO.
A variável global deveria ser acessada diretamente sem a declaração anterior da classe. Pensando de forma OO a variável deve ser acessada passando pela classe.
Não, esse nunca foi um requisito para uma variável ser global.
No caso, você está usando apenas o namespace da classe, e variáveis globais em linguagens estruturadas frequentemente existem dentro de namespaces específicos. Além disso, você não tem que gerar instância de um objeto, por isso, a classe age apenas como um agregador, ou, um complemento do nome da variável.
Como eu citei ali em cima, esse namespace é público e acessível de qualquer lugar, portanto, a variável continua completamente exposta, de qualquer ponto do seu programa.
E é esse fato que a torna global.
Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:
Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s
Que conceito é diferente?
O conceito de variável global é que é uma variável acessível em qualquer escopo. Nesse caso, uma variável public static, numa classe public, é. Então, não vejo o que seja diferente só pelo fato de ser OO.
A variável global deveria ser acessada diretamente sem a declaração anterior da classe. Pensando de forma OO a variável deve ser acessada passando pela classe.~
Concordo com o Viny. Essa é outra questão de semantica! Não importa se eu faço o acesso como variavelGlobal = 1 ou nomeDaClasse.variavelGlobal = 1 ou nomeDoPacote.nomeDaClasse.variavelGlobal = 1. O problema é o contexto de visibilidade da variável, que nesse caso é global!
De qualquer forma o que você disse não se aplica, já que no Java é possivel acessar a variável diretamente através da importação estática!
Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s
Por que é uma questão de conceitos e é importante entende-los quando se está começando em alguma coisa! Você mesmo escreveu um artigo (ótimo por sinal) na MundoJ sobre termos de SOA e como é importantes entende-los! 
Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s

Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s
Perguntei porque não sei, vejo uns falar uma coisa e outros outra… ai complica, pelo menos pra quem ta aprendendo… do mesmo jeito que não tinha ideia que isso é como discutir o sexo dos anjos
![]()
Cara, não esquenta com isso! Continue fazendo suas perguntas sempre que tiver duvidas!
Valew pela ajuda pessoal
isso é bom, vejo que isso não é tão simples como discutir a diferença de double e int hehehehe
[]s
Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s
Perguntei porque não sei, vejo uns falar uma coisa e outros outra… ai complica, pelo menos pra quem ta aprendendo… do mesmo jeito que não tinha ideia que isso é como discutir o sexo dos anjos
![]()
Cara, não esquenta com isso! Continue fazendo suas perguntas sempre que tiver duvidas!
Novato apanha de vez em quando hahahaha
valew
Mais uma pergunta do tipo “vamos discutir o sexo dos anjos” :roll:Independente de existirem ou não, variáveis públicas e estáticas quase sempre são má prática (só não são se forem “final”). Portanto, porque se incomodar?
[]'s
Perguntei porque não sei, vejo uns falar uma coisa e outros outra… ai complica, pelo menos pra quem ta aprendendo… do mesmo jeito que não tinha ideia que isso é como discutir o sexo dos anjos
![]()
Bom, se é tão importante…
Estou com o Viny, uma variável global é definida quando você faz algo do tipo:
public class MinhaClasse {
public static String variavel = "minha variável global";
}
Porém, como eu disse, note que isso é má prática porque você está definindo uma variável que não possui controle multi-thread, e pode acabar te dando dores de cabeça violentas por isso. Se for necessário utilizar algo do tipo, seria mais interessante ter o seguinte:
public class MinhaClasse {
private static String variavel = "minha variável global";
public static synchronized String getVariavel() {
return MinhaClasse.variavel;
}
}
Ou o seguinte:
public class MinhaClasse {
public static volatile String variavel = "minha variável global";
}
Ou, em caso de números, utilizar o pacote java.util.concurrent:
public class MinhaClasse {
public static AtomicInteger variavel = new AtomicInteger(1);
}
Enfim… existem várias maneiras de uso, mas tenha em mente, nesse caso, que quase sempre você não terá apenas um único “consumidor” dessa variável, o que implica pensar em cenários de concorrência.
Também existe o caso onde você simplesmente quer ter uma constante. Nesse caso, ficaria assim:
public class MinhaClasse {
//Ops... não é variável ;)
//public static final String VARIAVEL = "minha variável global";
public static final String CONSTANTE = "minha variável global";
}
Tomando o cuidado, obviamente, de não confiar em tipos mutáveis neste último. Por exemplo, se você colocar um mapa dessa forma, você ainda terá um certo trabalho para gerenciar a concorrência (ser “final” não ajuda). Aí, entra de novo o uso do pacote java.util.concurrent.
[]'s
Acho que que variáveis globais são uma péssima prática e que elas causam o fim da humanidade como conhecemos, não está em discussão.
E, no caso, estamos afirmando que o tal public static é sim uma global, com todos os problemas catastróficos que uma global clássica num programa estruturado pode causar. Ou até mais, pois em linguagens modernos é mais fácil ter ambientes mais complexos, com multi-threading, multi-classloading e, porque não, multi-computadores.
Por isso sustento que se mantenha a punição de quinze chibatadas, em praça pública, para aqueles que continuarem usando globais.
Acho que que variáveis globais são uma péssima prática e que elas causam o fim da humanidade como conhecemos, não está em discussão.E, no caso, estamos afirmando que o tal public static é sim uma global, com todos os problemas catastróficos que uma global clássica num programa estruturado pode causar. Ou até mais, pois em linguagens modernos é mais fácil ter ambientes mais complexos, com multi-threading, multi-classloading e, porque não, multi-computadores.
Por isso sustento que se mantenha a punição de quinze chibatadas, em praça pública, para aqueles que continuarem usando globais.
+1
Acho que que variáveis globais são uma péssima prática e que elas causam o fim da humanidade como conhecemos, não está em discussão.E, no caso, estamos afirmando que o tal public static é sim uma global, com todos os problemas catastróficos que uma global clássica num programa estruturado pode causar. Ou até mais, pois em linguagens modernos é mais fácil ter ambientes mais complexos, com multi-threading, multi-classloading e, porque não, multi-computadores.
Por isso sustento que se mantenha a punição de quinze chibatadas, em praça pública, para aqueles que continuarem usando globais.
:shock: Nossa!
Mas falando sério! Em nenhuma das linguagens que programei nunca tive a necessidade de usar uma várivel Global. O único caso que vi isso sendo utilizada foi no Delphi aonde é criada uma variável global para os formulários que vão ser instanciados quando a aplicação for carregada. Como a linguagem criava por default essas variáveis, eu apagava quando o formulário não necessitava ser criado quando a aplicação era iniciada.