dúvida static

Eu me contenho para não por fogo nessas discussoes… :smiley: Acho que na vida passada eu fui Nero…

Conflito Nivel 5

http://www.guj.com.br/posts/list/201395.java#1016298

Código fonte:

[code]public class Main {

private static final Object object = new Object(); 

}
[/code]

Se compilarmos esse código e analisarmos os bytecodes que o eclipse mostra em pseudocódigo:

//Compiled from Main.java (version 1.5 : 49.0, super bit)
public class Main {

    //Field descriptor #6 Ljava/lang/Object;
    private static final java.lang.Object object;

    //Method descriptor #8 ()V
    //Stack: 2, Locals: 0
    static {};
        0 new java.lang.Object [3]
        3 dup
        4 invokespecial java.lang.Object() [10]
        7 putstatic Main.object : java.lang.Object [13]
      10 return

    // aqui vem o construtor default que eu omiti pois nao fazia diferença....
    
}

Veremos que todas as instruções para instanciar o object estão dentro do bloco static… comprovando que o compilador transforma o código, condizente com o que eu falei anteriormente. E eu já sabia disso e nao precisava nem perder meu tempo, só que como eu sou muito chato… resolvi por a prova…

Inclusive essa maneira de comprovar o que eu falei, também tirei da minha cabeça… :smiley:

Não sei se vc consegue enchergar isso rod… ou se está muito avançado para o seu conhecimento…

Com um pequeno teste cheguei a essa mesma conclusão rogelgarcia… mas é interessante essa do Eclipse, como você faz para ver o pseudo código desta maneira?

A do conflito também foi boa hsuahsuahsuas

Se voce abrir um arquivo .class no eclipse que nao tenha fonte anexado, ele mostra o pseudo código.

.
.
.

O rod.attack é muito é folgado… o neguinho tá ajudando e ele ainda vem com exigência. Aí dá nivel 5…hehehe
Mas aqui no fórum aparece muito nego tranquilo assim mesmo…

[quote=rogelgarcia]Código fonte:

[code]public class Main {

private static final Object object = new Object(); 

}
[/code]

Se compilarmos esse código e analisarmos os bytecodes que o eclipse mostra em pseudocódigo:

//Compiled from Main.java (version 1.5 : 49.0, super bit)
public class Main {

    //Field descriptor #6 Ljava/lang/Object;
    private static final java.lang.Object object;

    //Method descriptor #8 ()V
    //Stack: 2, Locals: 0
    static {};
        0 new java.lang.Object [3]
        3 dup
        4 invokespecial java.lang.Object() [10]
        7 putstatic Main.object : java.lang.Object [13]
      10 return

    // aqui vem o construtor default que eu omiti pois nao fazia diferença....
    
}

Veremos que todas as instruções para instanciar o object estão dentro do bloco static… comprovando que o compilador transforma o código, condizente com o que eu falei anteriormente. E eu já sabia disso e nao precisava nem perder meu tempo, só que como eu sou muito chato… resolvi por a prova…

Inclusive essa maneira de comprovar o que eu falei, também tirei da minha cabeça… :smiley:

Não sei se vc consegue enchergar isso rod… ou se está muito avançado para o seu conhecimento…

[/quote]

Me agradeça por ser exigente. Se não fosse por mim você não chegaria até onde chegou. E você não é chato. Chato sou eu. Você é acomodado. Se sentiu ofendido quando seu conhecimento inquestionável foi questionado. Então resolveu correr atráz e sair do marasmo. E não duvide: Haverá (muitas) ocasiões em que você terá plena certeza do que está falando, alguém irá pedir uma prova real, e você acabará por descobrir que estava enganado. Afinal de contas, convenhamos, existem coisas que são “muito avançadas”, “até mesmo” pra você, ó mestre.

Como agradecimento, deixo outro ensinamento:

“Enchergar”, na verdade, se escreve com X. (No lugar do CH, não vá se confundir).

Viu só como não dá pra confiar em tudo que você “acha que tá certo” e que “tirou da cabeça”?

Dureza viu… ainda tenho que escutar isso…

E eu sou acomodado… to vendo isso mesmo…

[quote=rogelgarcia]Dureza viu… ainda tenho que escutar isso…

E eu sou acomodado… to vendo isso mesmo…

[/quote]

Faltou o obrigado.

Humildade é uma grande virtude que falta em alguém nessa discussão.

Se pra responderem a pergunta briga desse jeito imagina se tivesse que suportar alguns analistas que eu conheço.

Essa mala tinha que ser banida do GUJ… Se vc´s não perceberam esse cara não quer obter conhecimento e sim tumultuar o forum…

esse rod.attack é uma criança arrogante.

[quote=Poneis123]esse rod.attack é uma criança arrogante.

[/quote]
Arrogante é pouco…

puts ainda o cara ta queimando o spfc =(

[quote=rod.attack]Tenho o seguinte código:


class Teste{
  private static final Object o = new Object();
}

class Main{

 public static void main (String ...args){
    new Teste();
    new Teste();
 }
}

O objeto “o” é uma variável de classe, por ser marcada com static. Isso quer dizer que o compilador traduz a linha

 private static final Object o = new Object();

para


 private static final Object o;

static{
  o= new Object();
}

É isso?

Porque se não for isso, a cada instanciação de objetos da classe Teste o construtor irá rodar e fazer com que a referência “o” aponte para um novo objeto, o que não seria permitido, já que “o” é marcado com final.

Como é que funciona isso?[/quote]

Dá uma olhada [google] aqui [/google]! :slight_smile:

[quote=rod.attack][quote=davidtiagoconceicao]Atributos com o modificador static não são atributos de objeto, são atributos de classe. Portanto, todas as instâncias da classe Teste apontarão para a mesma instância do objeto.
Mais do que isso, não é necessário sequer haver uma instância de Teste para que o objeto o exista, ele pode ser obtido diretamente da classe (Teste.o, desconsiderando os modificadores de permissão).[/quote]

Foi exatamente isso que eu disse. Minha pergunta vai um pouco além - eu perguntei se o compilador transforma o código inicial em um bloco de inicialização estático. Quando for responder em fóruns em geral, é interessante que você o faça com foco na pergunta do autor do tópico, e não simplesmente para mostrar seu conhecimento. Assim você poupa o seu e o meu tempo.[/quote]

Nossa cara… num dá pra segurar… vou falar…

Velho… em um tópico fiz uma pergunta plausível e conceitual a respeito de static… e você me mandou ir para o google… você faz essa pergunta inútil e ainda quer passar por cima da galera que tá a mais tempo aqui do que você e diga-se de passagem… que conhece MUITO mais do que você…

Outra coisa… Você diz que deveria ter procurado outro forum, concordo PLENAMENTE contigo… e para mim, esse tipo de argumentação é passível de exclusão.

Aprenda a ser mais humilde.

ah! mais uma vez… como já postei ai em cima… Consulte o google!

até nunca
:evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil:

HUAhuahu
to rindo d+

Cara,

vc é babaca hein… se não é o que realmente quer… apenas fala que ainda não chegou no que queria ao invés de dar patata…

o cara pensa que é arrogante e sabichão igual o dr house

[quote=ralphsilver]Cara,

vc é babaca hein… se não é o que realmente quer… apenas fala que ainda não chegou no que queria ao invés de dar patata…

o cara pensa que é arrogante e sabichão igual o dr house[/quote]
HUAhuahu
dr house! kkkkkkkkkkkkkk
ri pouco!

[quote=ralphsilver]Cara,

vc é babaca hein… se não é o que realmente quer… apenas fala que ainda não chegou no que queria ao invés de dar patata…

o cara pensa que é arrogante e sabichão igual o dr house[/quote]

Dá Vicodin pra ele… uaHauhaUAHua (só ri quem assisti dr house) :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:

rod, você é muito arrogante.

Falta muita humildade em você.

Se não responderam de acordo com o que você esperava apenas fale que não era o que queria e pronto.

Se você é tão bom quanto diz, porque estava tirando dúvidas aqui?

Tem coisa que não tem como ler e ficar quieto, cara mala de mais.

(eu + ri)² = eu² + 2xeu*ri + ri²