Blog: bytecode

Programação Java

Programação Java. Java pode ser resumidas em três partes. Uma linguagem de alto nível para desenvolvimento orientado a objetos. Um pré-compilador (gerador de bytecodes) de código fonte. Uma máquina Virtual(JVM) que interpreta o código pré-compilado para uma plataforma específica. Cujas caracteristicas são orientação a objetos, portabilidade, pois o mesmo bytecode pode ser interpretado em qualquer plataforma e grande número de bibliotecas disponibilizadas através da Core API. Ler mais…

Tipos de Dados em java

Tipos de Dados em java. Linguagem Java. Pontos importantes:
1 -Tipos da dados em java são divididos em
2 grandes Categorias:
Tipos Primitivos
Tipos Referência(Falaremos no Proximo Post)

2 – Todos os tipos primitivos são considerados Valores Literais

3 – Todos os tipos primitivos armazenam os Bits realmente dos valores

4 – Todos as representações de tipos primitivos são palavras com letras minúsculas pois, todos são Keywords

5 – O operador – = (igual) – em java significa RECEBE.
int x = 0;
O inteiro x RECEBE 0(zero)

LEMBRE DOQUE VIMOS ANTERIORMENTE?

SIGUA ISSO QUE você se dará bem:

Exemplos Java,Linguagem Java, Programação, Java

Esse tipo, será mostrado um deles aqui, que é o tipo PRIMITIVO

Isso é Simplesmente uma passagem de valores, oque estiver a direita do Operador(= igual) é atribuido ao que estiver a esquerda do Operador(= igual):

Exemplos Java,Linguagem Java, Programação, Java

Tipos Primitivos:
(Os valores são armazenados em Bits), como o exemplo acima:
10 Em Decimal = 0000 0000 0000 0000 0000 0000 0000 1010 em Binário

Temos 4 categorias de dados em Tipos Primitivos:
*** Todas as 4 categorias são considerados valores literais, pois armazenam o real valor em bits.

– Tipo Inteiro= byte,short, int,long
– Tipo Ponto-Flutuante = float e double
– Tipo Textual = char
– Tipo Logico = boolean

Inteiro:
Armazenam valores inteiros. Podem ser representados em formatos:
decimais,octais ou hexadecimais:

2 -> Decimal
075 -> o 0 – zero – a esquerda indica que é Octal
0xBA -> o 0x -zero x – a esquerda indica que é Hexadecimal

Tamanho

Nome ou Tipo

Range

8 bits

byte

– 2 ^ 7 ate 2 ^ 7 -1

16 bits

short

– 2 ^ 15 ate 2 ^ 15 -1

32 bits

int

– 2 ^ 31 ate 2 ^ 31 -1

64 bits

long

– 2 ^ 63 ate 2 ^ 63 -1

<p>
  *byte e short forão inventados para preservação de memoria.
</p>

<p>
  Quando eu for usar long:
</p>

<p>
  Quando você especificar um valor e quer que seja long, use a letra L do lado direito do valor, int é default ou seja se não especificar o compilador irá intender como inteiro. O &ldquo;l&rdquo; pode ser maiusculo ou minusculo.
</p>

<p>
  long meuvalor = 20; -> ocorreu Promoção de int para long<br />long meuValor = 20L; -> colocamos um long em uma variavel do tipo long<br />long meuValor = 20l; -> colocamos um long em uma variavel do tipo long
</p>

<p>
  </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7fh6zh8LI/AAAAAAAAAGk/1Cf-3UsCObA/s1600-h/IntegralValues.png"><img style="cursor: pointer; width: 320px; height: 115px;" src="http://localhost/www/wp0/uploads/IntegralValues.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980778941018290" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

  <p>
    Pontos Flutuantes:<br />Um valor é considerado Ponto Fluantes quando tem a letra(e ou E), ou tiver a letra(f ou F) ou a letra(d ou D):
  </p>

  <p>
    e ou E = expoente<br />f ou F = float<br />d ou D = double
  </p>

  <p>
    Ou quando são usados para armazenar valores decimais.O Default é double, Sempre use ponto(.), É padrão nos USA usar ponto.
  </p>

  <p>
    Exemplos:
  </p>

  <p>
    10.0 &#8211; Um valor de ponto Flutuante, double<br />10.0D &#8211; Um valor de ponto Flutuante, double<br />2.999F &#8211; Um valor de ponto Flutuante, float<br />6.0E25 &#8211; Um valor de ponto Flutuante, double = 60000000000000000000000000.0<br />6.0E25 &#8211; É igual a 6.0E+25
  </p>

  <p>
    </span>
  </p>

  <table style="width: 418px; height: 184px; color: rgb(0, 0, 0);" border="1" cellpadding="4" cellspacing="0">
    <col width="85"> <col width="85"> <col width="85"> <tr valign="top">
      <td style="font-weight: bold;" width="33%">
        <p>
          <span style="color: rgb(0, 0, 0);"><span style="font-family:arial;"><span style="font-size:100%;">Tamanho</span></span></span>
        </p>
      </td>

      <td style="font-weight: bold;" width="33%">
        <p>
          Nome ou Tipo
        </p>
      </td>

      <td style="font-weight: bold;" width="33%">
        <p>
          Range
        </p>
      </td>
    </tr>

    <tr valign="top">
      <td width="33%">
        <p>
          32 bits
        </p>
      </td>

      <td width="33%">
        <p>
          float
        </p>
      </td>

      <td width="33%">
        <p>
          -11.40129846432481707e-45 ate 3.40282346638528860e+38
        </p>
      </td>
    </tr>

    <tr valign="top">
      <td width="33%">
        <p>
          64 bits
        </p>
      </td>

      <td width="33%">
        <p>
          double
        </p>
      </td>

      <td width="33%">
        <p>
          4.94065645841246544e-324d ate<br />1.79769313486231570e+308d
        </p>
      </td>
    </tr>
  </table>

  <p>
    <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br />Quando eu for declarar um float:<br />Sempre coloque o F do lado direito do valor para espeficar que é um float senão não compila.(F maiusculo ou minusculo da na mesma).<br />Porque do f?<br />float é menor que double logo, um float cabe em um float porem um Double não cabe em um float. É a mesma coisa que cast</p> 

    <p>
      float variable = 0.0F;<br />float variable = (float) 0.0; -> mesma coisa
    </p>

    <p>
      </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7fl4HWODI/AAAAAAAAAGs/nbNuVHn-22I/s1600-h/pontosFlutuantesdia.png"><img style="cursor: pointer; width: 320px; height: 182px;" src="http://localhost/www/wp0/uploads/pontosFlutuantesdia.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980846938306610" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

      <p>
        <span style="font-size:130%;"><span style="font-weight: bold;">Textual:</span></span><br />É usado para armazenar um simples caracter inclusive caracteres Unicode não assinados. Todos tem 16 bits(sem Sinal).
      </p>

      <p>
        Para usar char oque eu preciso?<br />Especificar o seu caracter dentro de &ldquo;
      </p>

      <p>
        Um char não armazena a real caracter, mais sim os bits representantes dela.
      </p>

      <p>
        char cacaracter = &rsquo;t&rsquo;;
      </p>

      <p>
        Exemplos:
      </p>

      <p>
        &rsquo;t&rsquo; &#8211; Tabulação
      </p>

      <p>
        <span style="font-weight: bold;font-size:130%;">Logico:</span><br />São aceitos somente valores booleanos(true ou false), um dos dois.
      </p>

      <p>
        boolean meuValor = true;
      </p>

      <p>
        Um Exemplo prático:
      </p>

      <p>
        public class MinhaClasse{ //Esse é um comentario ignorado pelo compilador
      </p>

      <p>
        public static void main(String[] array){<br />int x = 20;
      </p>

      <p>
        }//fim do metodo main
      </p>

      <p>
        }
      </p>

      <p>
        Se você mandar executar isso oque acontece?<br />1 &#8211; Seu programa vira processo<br />2 &#8211; O class Loader da JVM carregará sua classe<br />3 &#8211; Todo processo tem uma thread, toda thread tem uma STACK, Toda Stack tem:<br />&#8211; Operand Stack<br />&#8211; Local Variable<br />&#8211; Uma Referência para Constant POOL<br />A jvm jogará o 20 na Operand Stack<br />4 &#8211; Esse 20 será armazenado nas Local Variable Referente ao método main(Uma coisa que quero deixar claro é que, em Stack damos o Nome de Frame ao métodos quando estão sendo usados.)<br />5 &#8211; Não tem mais codigo no code_block do método main, a JVM termina seu processo.
      </p>

      <p>
        Usando: javap -c Temos em bytecode:
      </p>

      <p>
        Compiled from "MinhaClasse.java&rdquo;<br />public class MinhaClasse extends java.lang.Object{<br />public MinhaClasse();<br />Code:<br />0: aload_0<br />1: invokespecial #1; //Method java/lang/Object.&ldquo;<init>&rdquo;:()V<br />4: return
      </p>

      <p>
        public static void main(java.lang.String[]);<br />Code:<br />0: bipush 20<br />2: istore_1<br />3: return
      </p>

      <p>
        }
      </p>

      <p>
        Agora vamos desenhar:
      </p>

      <p>
        </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7fqgc8j4I/AAAAAAAAAG0/fZUiO6p3DuY/s1600-h/VariavelLocal.png"><img style="cursor: pointer; width: 262px; height: 320px;" src="http://localhost/www/wp0/uploads/VariavelLocal.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980926485794690" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

        <p>
          Você empurrou o numero 20 que é do tipo inteiro(ou seja 32 bits), e mandou armazenar em (int x &#8211; que é do tipo inteiro, ou seja 32 bits)  32 bits cabem em 32 bits? SIM! então você obteve:
        </p>

        <p>
          </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp7ftff6J8I/AAAAAAAAAG8/GlWdiIxibFg/s1600-h/VariavelLocal2.png"><img style="cursor: pointer; width: 262px; height: 320px;" src="http://localhost/www/wp0/uploads/VariavelLocal2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980977769392066" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

          <p>
            Ou isso se fica mais facil:
          </p>

          <p>
            </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7fWg0Ql3I/AAAAAAAAAGM/HcjV7nLbZLk/s1600-h/coube.png"><img style="cursor: pointer; width: 310px; height: 148px;" src="http://localhost/www/wp0/uploads/coube.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980582986192754" border="0" /></a></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

            <p>
              Porque se eu fizer int x = 32L; da ERRO?<br />1 &#8211; um int tem 32 bits<br />2 &#8211; 32L é um long, long tem 64 bits
            </p>

            <p>
              Olha oque você fez:
            </p>

            <p>
              </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7fZ0zCjnI/AAAAAAAAAGU/mPpLmfAxLXU/s1600-h/coube2.png"><img style="cursor: pointer; width: 320px; height: 154px;" src="http://localhost/www/wp0/uploads/coube2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980639889395314" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

              <p>
                Mesmo que fosse:<br />int x = 0.0F;<br />Não daria certo, int tem 32 bits, float tem 32 bits. SO que Pontos Flutuantes trabalham diferente de Integrais, eles usam na verdade mais de um Slot em memoria, mais por representação não fica viavel fazer.
              </p>

              <p>
                <span style="font-size:130%;"><span style="font-weight: bold;">É hora da revisão:</span></span>
              </p>

              <p>
                &#8211; Cuidados com a representação dos formatos dos valores dos TIPOS INTEGRAIS, podem ser em 3 tipos:<br />2 -> Decimal<br />075 -> o 0 &#8211; zero &#8211; a esquerda indica que é Octal<br />0xBA -> o 0x -zero x &#8211; a esquerda indica que é Hexadecimal
              </p>

              <p>
                &#8211; Promoção:
              </p>

              <p>
                long meuvalor = 20; -> ocorreu Promoção de int para long<br />long meuValor = 20L; -> colocamos um long em uma variavel do tipo long<br />long meuValor = 20l; -> colocamos um long em uma variavel do tipo long
              </p>

              <p>
                &#8211; Um valor é considerado Ponto Fluantes quando tem a letra(e ou E), ou tiver a letra(f ou F) ou a letra(d ou D),ou quando são usados para armazenar valores decimais.O Default é double, Sempre use ponto(.), É padrão nos USA usar ponto.
              </p>

              <p>
                &#8211; Sempre que quiser representar um valor do tipo Ponto flutuante float, use o (F ou f), para haver cast, ja que double é default.
              </p>

              <p>
                &#8211; Um char aparentemente apresenta um caracter porem ele é uma representação em bits de um caracter
              </p>

              <p>
                &#8211; Tipos booleanos só aceitam dois tipos de valores, OU true OU false.
              </p>

              <p>
                &#8211; Em Valores do tipo Inteiro, o padrão é int
              </p>

              <p>
                &#8211; Em Valores do tipo Ponto Flutuante, o padrão em double
              </p>

              <p>
                &#8211; O operador igual(=) Significa em java recebe,<br />int a = 8;<br />O Inteiro a RECEBE 8
              </p>

              <p>
                Curiosidades:
              </p>

              <p>
                &mdash;&mdash;->Porque o byte tem o valor elevado a 7 e não a 8?<br />Leva-se em conta que 1 byte são 8 bits, Porem o range de valores de byte é de &#8211; 2 ^ 7 a 2 ^ 7 -1, porque disso?
              </p>

              <p>
                Porque elevado a 7 e não a 8?<br />1 Bit é usado para guardar o sinal(+ ou -), se um Byte tem 8 Bits, e 1 Bit é usado para guardar sinal(+ ou -) só resta 7 Bits para representar um número.
              </p>

              <p>
                Decimal Binário<br />125 1111101(7 Bits)
              </p>

              <p>
                Porem para representar em java isso é precisa do Bit de sinal:<br />01111101 &#8211; 8 Bits = +125<br />11111101 &#8211; 8 Bits = -125
              </p>

              <p>
                Vamos a outro exemplo:
              </p>

              <p>
                Decimal Binário<br />128 10000000(8 Bits)
              </p>

              <p>
                Porem para representar em java isso é precisa do Bit de sinal:<br />010000000 &#8211; 9 Bits = +128<br />110000000 &#8211; 9 Bits = -128
              </p>

              <p>
                PERCEBA QUE 9 BITS JA NÃO FAZ PARTE DO RANGE DE BYTE, portanto esse numero não pode ser um BYTE.
              </p>

              <p>
                Porque -1 do range?<br />Pois o 0 é incluso no range.<br />O Byte tem um range de -2 ^ 7 a 2 ^ 7 -1 significa:<br />&#8211; 125, -124, -123, -122 . &#8211; 2,- 1, 0, +1,+2 +125
              </p>

              <p>
                &mdash;&mdash;->Be Careful!!! Bears Shouldn&rsquo;t Ingest Large Fury Dogs.<br />Source: Head First katty Siera
              </p>

              <p>
                Be = boolean<br />Careful = char<br />Bears = byte<br />Shouldn&rsquo;t = short<br />Ingest = int<br />Large = long<br />Fury = float<br />Dogs = double
              </p>

              <p>
                &mdash;&mdash;->Quer ver como char armazena realmente Bits e usa como conversão para letras?<br />char x = 100;
              </p>

              <p>
                Se você mandar imprimir na saida Padrão sairá: d
              </p>

              <p>
                &mdash;&mdash;-> O tipo char é inteiro literal, outro exemplo disso?
              </p>

              <p>
                int x = &lsquo;c&rsquo;;
              </p>

              <p>
                Se você mandar imprimir na saida Padrão sairá: 99
              </p>

              <p>
                </init></span>
              </p>

Teoria Geral dos Sistemas Paradigmas conceituados Estrutural x Orientação a objetos

Teoria Geral dos Sistemas Paradigmas conceituados Estrutural x Orientação a objetos. Linguagem Java. Conceito Chave sobre a linguagem de programação java:
Advertência: É necessária a leitura do(s) Post(s): Princípios Básicos: Voce Tem que saber!

*Orientada a Objetos:
A linguagem programação java é Orientada a Objetos(Paradigma Orientado a objetos) o principal objetivo da linguagem é a criação de objetos,Pequenos pedaços de código que juntos formam a solução de um problema. Poucos sabem porem O Padradigma Orientado a objetos começou com a linguagem SIMULA-67(Sabe porque se chamala SIMULA? Pois com O.O ela fazia a Simulação da vida REAL), Porem a primeira que realmente entrou no Paradigma foi Smalltalk.

A partir de hoje, você aprenderá não só java, mais a desenhar. Quando dizemos que java é uma linguagem do paradigma Orientado a objetos, estamos dizendo que um CONJUNTO DE OBJETOS FORMAM um programa(Veja isso como um quebra cabeça, onde você pega peça por peça). ISSO é um objeto:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem se quiser ampliar

E isso é um Programa feito no Paradigma Orientado a Objetos:

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem se quiser ampliar

Curiosidade:
Orientação a Objetos deriva da BIOLOGIA, de uma forma abstrata tudo é formado por moléculas sistematicamente falando no paradigma Orientação a Objetos tudo é um objeto(componente) o qual a idéia é muito parecida com a de molécula.

– Uma molécula interage com outras através de mensagems
– Quando uma molécula quer afetar outra, dispara um sinal químico que obtem a resposta desejada
– A membrana da cécula receptora filtra as mensagens, atende as que realmente fazem sentido fazendo funções internas.(Isso evita que uma célula precise conhecer oque a outra faz)

Então um conjunto de células forma um corpo físico, um conjunto de Objetos formam um programa.(Da biologia vem conceitos como Herança,Polimorfismo veremos mais sobre isso nas próximas seções.).

Teoria Geral dos Sistemas:
Daqui que surge a idéia de Orientação a Objetos

A Teoria Geral dos Sistemas foi elaborada, em 1937, por Ludwig Von Bertalanffy, para preencher uma lacuna na pesquisa e na teoria da Biologia. Os seus primeiros enunciados são de 1925 e ela é amplamente reconhecida na administração da década de 60.
Da definição de Bertalanffy , segundo a qual o sistema é um conjunto de unidades reciprocamente relacionadas , decorrem dois conceitos : o de propósito ( ou objeto ) e o de globalismo ( ou totalidade ) . Esses dois conceitos retratam duas características básicas em um sistema .

*** O conceito de elementos(Componentes) é o mesmo de OBJETOS EM JAVA

Um sistema é :

– Um conjunto de elementos
– Dinamicamente relacionados
– Formando uma atividade
– Para atingir um objetivo
– Operando sobre dados / energia / matéria
– Para fornecer informação / energia / matéria

O nivel de Abstração de um Sistema é importante:
As moléculas existem dentro das células , as células dentro dos tecidos , os tecidos dentro dos órgãos , os órgãos dentro dos organismos , os organismos dentro de colônias , as colônias dentro de culturas nutrientes , as culturas nutrientes dentro de conjuntos maiores de culturas , e assim por diante .

– Um Sistema pode ser Formado de moléculas(Olhando por um nivel mais baixo de abstração)
– Um Sistema pode ser Formado por células(Subindo um pouco mais o nivel de abstração)
– Um Sistema pode ser Formado por tecidos(Subindo ainda mais um pouco o nivel de abstração)

BIBLIOGRAFIA

Além das já citadas no trabalho: www.sbdg.org.br
Grupo de Formação 90 – SBDG

BERTALANFFY, L.v. – Teoria Geral dos Sistemas, Vozes, Petropólis , 1972
BERTALANFFY, L.v. – Teoria Geral dos Sistemas, Vozes, Petropólis , 1972

Qual a diferença entre Paradigma Orientado a Objetos(java) e o Paradigma estrutural?

A Orientação a Objetos e Estruturada, são paradigmas totalmente diferentes.

1 – Estrutural trata um programa como um Conjunto de instruções, Orientação a Objetos trata um programa como um Conjuntos de Objetos que interagem entre si(Assim como a derivação da Teoria Geral dos Sistemas):

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem se quiser ampliar

Orientação a Objetos:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem se quiser ampliar

2 – I/O no dispositivo(Estrutural) X CRUD(Orientação a Objetos):

Conceitos Iniciais: O tempo de resposta do acesso a HD normalmente é de 10 elevado a -3(10 ^ -3), o tempo de resposta do acesso a RAM é de 10 elevado a -9(10 ^ -9).(Ou seja o acesso em Ram é muito mais rápido)

-> Linguagens com paradigma Estrutural trabalham com o conceito de I/O(Input/Output) no dispositivo.

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem se quiser ampliar

*A conexão entre dispositivos é feito e permancida, ou seja conecta-se um dispositivo no outro e fica conectado direto.(A leitura dos dados fica conforme a necessida porem a conexão é mantida),(Programa em RAM e dados em disco), fica nesse trabalho de acessar um ao outro.

-> Linguagens com paradigma Orientado a Objetos entra com o conceito de CRUD(Create, Retrieve, Update e Delete)

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem se quiser ampliar


* A conexão entre dispositivos só é feita na leitura de dados da HD, o programa todo(Programa e dados) trabalha em memória RAM, onde o tempo de resposta é bem menor.

3 – Decomposição da Visão dos Paradigmas:

Estrutural -> Começa em um nivel de Abstração de MACRO -> MICRO
Essencial -> Começa em um nivel de Abstração Intermediário.
Macro Intermediário -> Micro
Orientação a Objetos -> Começa em um nivel de Abstração MICRO, e o Conjunto de MICROS, formam um MACRO

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">Nasce o Conceito de Decomposição de Sistemas</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">4 &#8211; Geração:</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural -></span><span style="color: rgb(0, 0, 0);font-family:arial;"> São linguagens de Terceira Geração</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientação a Objetos -></span><span style="color: rgb(0, 0, 0);font-family:arial;"> São linguagens de Quarta Geração</span>
</p>

<p>
  <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">5 &#8211; Conforme a distribuição do seu programa:</span>
</p>

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">(Em estrutural temos o conceito de que um programa é dividido em duas partes: Dados e funções).</span>
</p>

<p>
  <span style="color: rgb(0, 0, 0);font-family:arial;">Conforme Observado no item 2,</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> em linguagens estruturadas os dados estão em HD e as funções em RAM portanto:</span>
</p>

<p>
  <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphG6jGR0mI/AAAAAAAAAEE/dH7j-KddL94/s1600-h/paradigmaEstruturado.png"><img style="cursor: pointer; width: 217px; height: 195px;" src="http://localhost/www/wp0/uploads/paradigmaEstruturado.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375124126934618722" border="0" /></a><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem se quiser ampliar</p> 

  <p>
    Conforme Observado no item 2, em linguagens Orientadas a Objeto, o acesso a HD é muito baixo, pois todo programa se encontra em RAM portanto:
  </p>

  <p>
    </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SphHALSFIqI/AAAAAAAAAEM/rJPlev6JvvU/s1600-h/paradigmaOrientadoaObjetos.png"><img style="cursor: pointer; width: 320px; height: 248px;" src="http://localhost/www/wp0/uploads/paradigmaOrientadoaObjetos.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375124223620883106" border="0" /></a><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem se quiser ampliar</p> 

    <p>
      </span><span style="color: rgb(0, 0, 0);font-family:arial;"> Essa diferença é explicita agora, </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">EM Orientação a Objetos os dados e as funções em si ficam Juntos(RAM), ja em Estrutural os dados ficam em meios diferentes das funções em si(Como se fosse um programa dividido em 2 partes &#8211; RAM E HD).</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">6-</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Gerenciamento automático de memória:</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Em linguagens Estruturais não tenho gerenciamento de memória, ou seja a alocação e desalocação de memória fica a encargo do programador. Em muitos casos acontece oque chamamos de memory link ou seja memória presa ao programa que não tem mais uso a ele e que não foi desalocada pela programador.</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientado a objetos:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Em java temos o Garbage Collector(GC) que é quem faz a desalocação automática de memória deixando a cargo da Arquitetura de java a desalocação de memória e não ao programador.</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">7-</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Ponteiros:</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Estrutural:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Temos o conceito de ponteiro a estrutura</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Orientado a objetos: </span><span style="color: rgb(0, 0, 0);font-family:arial;">Temos o conceito de Referência ao objeto</span>
    </p>

    <div style="text-align: center; color: rgb(0, 0, 0);font-family:arial;">
      <span style="font-weight: bold;font-size:180%;">É Fundamental Intender:</span></p>
    </div>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;"> Paradigmas Diferentes não significa melhor e nem pior, TUDO depende da Implementação do código que você usará. É importante saber intender e principalmente valorizar as diferenças. Nada é Pior e nem melhor, apenas tem sua utilidade diferenciada.</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Com o paradigma Orientado a Objetos surge o Conceito de componentização</span><span style="color: rgb(0, 0, 0);font-family:arial;">(ir em busca de um componente(objeto), fazer a junçar de componentes(objetos)) e surge um Conceito de que a maioria dos softwares hoje em dia são OBJETOS COMPUTACIONAIS.</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"> Olhando um programa de uma forma abstrata, dividindo ele em 2 partes:</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Dados</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Funções</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">O paradigma estrutural trabalha com Dados em HD, Funções em RAM(Os dados e as funções são do programa todo). Orientação a objetos trabalha com dados e funções em RAM(Cada Objeto tem seus Dados e suas funções).</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"> No paradigma Orientado a Objetos, Um programa é um conjunto de objetos, e cada Objeto não sabe e nem quer saber do outro. Abstraindo da vida real é como se fosse uma relação entre duas pessoas..Uma dia a outra: Eu nem sei e nem quero saber da sua vida, cada um com seus problemas.(Infelizmente na vida real nem sempre ocorre isso!)</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;">Paradigma Orientado a Objetos e Abstrações do mundo real:</span></span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;"> Antigamente tinha-se em mente o conceito de &ldquo;Fabricantes de Automóveis&rdquo; pois, a Fábrica fabricava carros. Se você observar hoje em dia temos o CONCEITO MONTADORA DE CARROS(Essas grandes empresas não fabricam carros elas montam, todas as peças(componentes,objetos) ja estão prontos), com o Conjuntos de objetos do carro(motor, roda etc) ja estão prontos, elas simplesmente MONTAM OS OBJETOS NO CARRO, sendo assim uma MONTADORA DE CARROS.</span>
    </p>

    <p>
      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Importante saber diferenciar:</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Implementar =</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Construir algo</span><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> Implantar =</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Colocar algo ja construido para FUNCIONAR</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;">Esse post é só uma introdução entre as diferenças de Paradigmas, conceitos de Orientação de objetos ja introduzindo a linguagem de programação JAVA</span>
    </p>

    <p>
      <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;"></span></span></span>
    </p>

Tecnologia Java

Tecnologia Java. Linguagem Java.

Sumário: A linguagem de programação, A plataforma,O ambiente de desenvolvimento,O ambiente de Implementação,Grupos da Tecnologia, JSR

Quando falamos em java, oque te surge a cabeça?
– A linguagem de programação
– A Plataforma independente – JVM
– O ambiente de desenvolvimento – javac, java, javap,javadoc,jar etc
– O ambiente de Implementação – SDK, JRE ou navegador web/

Minha idéia é não só, mostrar a linguagem em si, mais a PLATAFORMA Independente(JVM).

Oque é uma plataforma?
É a junção de um Sistema Operacional e Hardware, as mais conhecidas são windows,Unix, Solaris,Linux etc.(São conhecidas como plataformas nativas).

Oque é uma plataforma indepedente?
É a emulação de uma plataforma nativa, é uma plataforma de Software que roda em cima de uma Plataforma Nativa.

A Plataforma indepedente é dividida em 2 partes:
– Java Virtual Machine(JVM)
– Java Application Programming Interface(API’s)

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

Na maoria das linguagens de programação quando você compila um programa, você obtem um arquivo compilado e ligado com bibliotecas nativas da plataforma nativa(o compilador dessas linguagens ja é um LINK EDITOR que é quem faz essa ligação com bibliotecas nativas), quando você quer utilizar esse programa compilado para um plataforma nativa em outra, você tem que fazer novamente o programa(em muitos casos recompilar não funciona).
Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar
Esse executável de Windows so funcionara em plataformas Nativas Windows

Plataforma dependente:
Com a compilação de seu algoritmo na linguagem de programação você obtem um programa ESPECIFICO da CPU.

Plataforma independente de java:
Com a compilação de seu algoritmo na linguagem de programação você obtem um programa em bytecode.

Programas de Plataforma dependente:
O tipo de compilador usado por essas plataformas converte seu programa em um código específico daquela CPU. O executavel como chamado nada mais é Doque a junção desse código específico daquela CPU + bibliotecas de código nativo, quem faz essa junção é o link Editor. Ou seja temos um binário daquela CPU mais código nativo.

Programas de Plataforma independente:
Programas na tecnologia java podem ser executado em qualquer combinação de CPU com Sistema Operacional. O compilador de java transforma seu programa em bytecode ao invéz de Código de CPU específico a uma Plataforma.
Como java não usa editor de links na compilação quando a JVM vai interpretar os bytecodes a JVM necessita das API’s para entender as instruções específicas daquela Plataforma nativa.Ou seja existe a necessidade da JRE para a intepretação dos bytecodes.

Depois que eu obtive meu bytecode, quem executará ele?
Na verdade quem interpretará seu bytecode é a Máquina Virtual Java.
Java é considerado uma linguagem interpretada e portavel.

Oque é a máquina virtual java?
A Maquina virtual java é um programa específico da plataforma nativa que entende bytecodes de uma plataforma independente(ou seja, seja la o S.O. que compilou) a JVM consegue interpretar eles na plataforma nativa.

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

Alem da Máquina Virtual, oque mais preciso para Executar um programa em java?
Alem da máquina virtual, você necessita de um conjunto(uma biblioteca) que são as API’s de java. O conjunto JVM(Java virtual Machine) e API’s é conhecido como JRE(Java Runtime Environment).

Oque são API’s?
API é um coleção de “programas” prontos que fornecem ajuda no desenvolvimento.Muitas coisas você não precisará fazer, ja tem pronto em java.

A JRE é por plataforma nativa?
Sim a JRE é derivada de plataforma para plataforma nativa e é necessaria para fazer a interpretação de qualquer programa em java que você queira que vire processo.

Quais são as funções da JVM?
– Carregar Class Files(arquivo.class), Verificar código(para ver se ele atende a segurança de código previsto em java), Interpretar código.

Como é o nome do compilador de java?
javac

Oque são bytecodes?
Toda vez que você compila um programa em java, você cria um class File(arquivo.class) esse class File será interpretado pela JVM da JRE e causará em um processo na Plataforma nativa.

Se eu compilar esse exemplo:

public class Exemplo{

}

Vou obter isso em bytecode:

Compiled from “Exemplo.java”
public class Exemplo extends java.lang.Object{
public Exemplo();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object.“”:()V
4: return

Oque eu preciso então para interpretar esse meu Programa.class?
Precisa fazer Download da JRE da sua Plataforma Nativa depois, abra o Terminal(DOS, VI) e digite:
java NomeDoSeuPrograma

java = Launcher java, é quem diz para a JVM que é hora de trabalhar

Oque eu preciso para Desenvolver um programa em java?
1 – Saber a linguagem
2 – Um bloco de notas
3 – O SDK

Oque é o SDK?
Software Development kit, A escolha é de Plataforma nativa para Plataforma Nativa.

Oque eu tenho incluso no SDK?
– JRE(JVM + API’s)
– javac(compilador)
– Documentação das API’s(download separado)
– Utilitários como: jar,javap,javadoc etc
– Exemplo de programas da tecnologia java

Como eu verifico os bytecodes do meu Class file?
1 – abra o terminal
2 – ache o caminho do arquivo, aonde ele esta.
3 – javap -c MeuPrograma

Quais são os grupos da Tecnologia java?
SE – Standard Edition -Applets e Programas Desktop.Todo mundo começa por aqui, é padrão, Desktop ou Applet.
EE – Enterprise Edition – Softwares empresariais, Normalmente são via internet,eCommerce, webShoppings, Paginas de Web etc
ME – Micro Edition – São Softwares para Mobile(celular etc)

Cada Grupo da Tecnologia tem o seu SDK(que permite compilar, executar e criar programas em java)
Temos então:

Java SE SDK
Java SE SDK applet
Java EE SDK
Java ME SDK

Quais são os passos para Desenvolver um programa em java?
1 – Baixe do site da SUN o SDK do SE
2 – Instale o arquivo, abre o terminal(DOS,VI) e digite java – version, se aparecer algo dizendo a versão de java, estamo no caminho(Senão instale novamente)
3 – Abra o bloco de notas
4 – Escreva seu código em java
5 – Salve o seu código com NomeDaClasse.java
6 – Compile seu arquivo: javac NomeDaClasse.java
7 – Mande A JVM trabalhar: java NomeDaClasse

Applets:
– São programas escritos na linguagem de programação java que residem no Servidor Web, são baixados por um navegador no Sistema no cliente e são executados por esse navegador.
– Os Applets são chamados via uma página de web
– O navegador tem uma implementação própria da Jvm para executar os Applets.
-Foi a primeira utilização de java, que naquele tempo tinha outro nome “OAK” e foi uzado na implementação de aplicativos logo no inicio da Internet.
– Sâo iniciadas em um web browser

Gerenciamento automático de memória(coletor de lixo):
– Muitas linguagens de programação passam a responsabilidade de alocação e desalocação de memoria ao programador, Oque se for mal feito, gera problemas de memoria.(Ponteiros etc)
– Em java o coletor de lixo faz a desalocação de memória automática, oque quer dizer que você não precisa se preocupar com DESALOCAÇÃO de memória.

Oque é JSR?

Quando o primeiro grupo da criação da Linguagem java, chamado “Oak” estava no mercado, eles criaram uma proposta de projetos, que foi chamada Request for Programming(RFP), que futuramente se Tornaria a JSR(Java Specification Requests ) que são especificações criadas para a implementação da Tecnologia java, São tipo padrões. Quem controla isso é o :
http://jcp.org/en/home/index
Java Community Process o qual é um grupo formado por empresas e associados que visa a melhoria da Tecnologia java, discutindo e implementando melhorias dia por dia.
Para asseguar a portabilidade de seus programas em java, Toda JRE segue uma especificação, a mesma esta disponivel se alguem quiser criar sua própria JVM e compilador. Chama-se JSR.

Qual a versão de java?
Existe dois tipos de versões?
– Versão de desenvolvimento = 1.6
– Versão de Marketing = 6.0
Ambas são iguais, so depende da onde você usa.

Versões de java:
Java 1.02 -> 250 Classes, Applet era o Grande atrativo da linguagem
Java 1.1 -> 500 Classes, Se tornando Popular, melhor GUI
Java 2 -> 2300 Classes , Somente em 3 versões agora, SE, EE,ME
Java 5 -> 3500 Classes,Conhecido como Tiger

<p>
  A mudança de 1.1 para 2 foi tão grande que não dava para seguir o ritmo de 1.2, 1.3 foi então que lançaram java 2 como se fosse um novo produto, Para quem não conhece é o ciclo conhecido como End-of-life(Eol) do Product Life Cycle(PLC).</span><br /><init style="color: rgb(0, 0, 0);font-family:arial;"><br /><span style="font-weight: bold;font-size:130%;">Quais linguagens a JVM entende?</span><br /><span style="font-size:100%;">Não somente java, a JVM entende muitas outras linguagens, Pyton, Ruby etc(Se você pesquisar na Internet: Programming Languages for JVM, verá a quantidade)</span>
</p>

<p>
  <span style="font-weight: bold;font-size:180%;">Quem carrega Classes na JVM?</span><br /><span style="font-size:100%;">Existe um &ldquo;programa&rdquo; dentro da JVM que é quem carrega Classes em java, se CHAMA CLASS LOADER, ele so carrega sobre necessidade(ou seja ele so carrega sa que você utilizar).</span>
</p>

<p>
  <span style="font-size:180%;"><span style="font-size:100%;"></p> 

  <p>
    <span style="font-weight: bold;">Comsumer Device</span> é sempre relevante a Clientes de dispositivos mobiles.
  </p>

  <p>
    </span></span><span style="font-weight: bold;">Garbage collector -></span> <span style="font-size:100%;">você não roda ele, você sugere que ele rode, a COleta de lixo ocorre automaticamente durante a vida de um programa java, porem , a coleta de lixo varia de implemtação da JVM para Implementação da JVM.</span>
  </p>

  <p>
    <span style="font-weight: bold;">JVM -></span> <span style="font-size:100%;">Class Loader = alem de fazer carregamento de classes tem mecanismos de segurança como um separador de classes locais e as da rede, isso impede vacalos de tróia pois, as classes locais são carregadas primeiro.</span>
  </p>

  <p>
    </init>
  </p>

  <div style="text-align: center; color: rgb(0, 0, 0);font-family:arial;">
    <init style="font-family:arial;"><span style="font-weight: bold;font-size:180%;">É hora da revisão:</span></init></p> 

    <p>
      <init></init></div> 

      <p>
        <init style="font-family: arial; color: rgb(0, 0, 0);">&#8211; A tecnologia java não é somente a linguagem de programação<br />&#8211; A JVM é quem interpreta o seus Class Files<br />&#8211; Todo programa compilado em java se transforma em um Class File<br />&#8211; javac é o compilador de java<br />&#8211; java é o launcher de java<br />&#8211; javap -c é utilizado para ver os bytecodes do seu Class File<br />&#8211; Existem 3 grupos em java(SE, EE,ME)<br />&#8211; Para programar em java, você precisa do SDK<br />&#8211; Para interpretar programas em java, você precisa da JRE<br />&#8211; a JRE é a junção de JVM + API&rsquo;s
      </p>

      <p>
        Bom por hoje é só!!!<br />CYA DUDES<br /></init>
      </p>

Java Variáveis de Referência Stack Primitivos Escopo Variavel

Java Variáveis de Referência Stack Primitivos Escopo Variavel. Linguagem Java. Sabendo-se que todo processo tem ao menos uma thread, toda thread tem uma Stack e toda Stack necessita de um método que ira no fim dela, conclusivamente necessita-se de main() para a execução de um processo via LINHA DE COMANDO –
Só temos 1 método capaz de fazer de um programa um processo via linha de comando, main.
Quando executa-se o processo, uma instância da JVM, faz a chamada ao main() automaticamente oque cria o Frame do main(),e todo frame tem 3 áreas básicas de memória:
– Local Variable
– Operand Stack
– Uma referência a Runtime Constant Pool(indice 0 da Local Variable)

public class MinhaClasse{

public static void main(String array[]){

}
}

Nesse caso , o main() será automaticamente chamado por uma instância da JVM e irá no fim da Stack Referênte a thread do processo Criado ou seja:
Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

E como eu disse, tem-se os espaços de memória dentro do Frame e aqui também acrescentarei oque temos Basico do Basico na Instancia da JVM, isso é igual ao desenho de cima porem mais especializado:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar

<p>
  Lembre-se todos esses desenhos são conceituais, tendo isso em mente, vamos abreviar o desenho em: Sabendo que a Local variable é do main(), vamos abreviar para isso:<br /></font><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_JFku52jI/AAAAAAAAAOs/ZHbKUVjCDyg/s1600-h/heapStackSemObjeto.png"><img style="cursor: pointer; width: 248px; height: 240px;" src="http://localhost/www/wp0/uploads/heapStackSemObjeto.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377237577700596274" border="0" /></a></p> 

  <p>
    <font style="font-weight: bold;" size="4"><font size="5">Variáveis de Referência:</font></p> 

    <p>
      </font><br /><font style="font-weight: bold;">Oque são variáveis de Referência?</font><br />São variáveis que contem o endereço do objeto em memória. Como se fosse uma carta(Uma carta não contem endereço?).
    </p>

    <p>
      <font style="font-weight: bold;">Como eu Declaro uma Variavel de Referência?</font>
    </p>

    <h2>
      Java Variáveis de Referência Stack Primitivos Escopo Variavel
    </h2>

    <p>
      É igual a oque se fazia em tipos Primitivos porem, a única diferença é que o tipo da Variável é uma Classe e não um tipo Primitivo.
    </p>

    <p>
      <font style="font-weight: bold;">Como eu inicializo uma Variável de Referência?</font><br />Deve-se Instanciar um Objeto da Classe e atribuir a Variável.
    </p>

    <p>
      <font style="font-weight: bold;" size="5">Declarando uma Variável de Referência:</font>
    </p>

    <p>
      <font style="font-weight: bold;">NomeDaClasse identificador;</font>
    </p>

    <p>
      *NomeDaClasse -> É a classe ou tipo de Objeto que será referênciado pela Variável<br />*identificador -> É o nome que você atribui a Variável
    </p>

    <p>
      <font style="font-weight: bold;" size="5">Instanciando um Objeto:</font>
    </p>

    <p>
      <font style="font-weight: bold;"> new NomeDaClasse();</font>
    </p>

    <p>
      *new -> É uma keyword em java, que instancia um objeto de uma classe<br />*NomeDaClasse -> O nome da classe a qual você quer uma instancia
    </p>

    <p>
      <font style="font-weight: bold;" size="5">Inicializando:</font>
    </p>

    <p>
      <font style="font-weight: bold;">identificador = new NomeDaClasse();</font>
    </p>

    <p>
      Você inicializa uma Variavel de Referência somente após a Declaração dela com o Operador (= igual).
    </p>

    <p>
      <font style="font-weight: bold;" size="5">Podemos Declarar Instanciar e Inicializar em UMA ou DUAS linhas:</font>
    </p>

    <p>
      <font style="font-style: italic;">NomeDaClasse identificador = new NomeDaClasse();</font>
    </p>

    <p>
      <font style="font-weight: bold;">ou</font>
    </p>

    <p>
      <font style="font-style: italic;">NomeDaClasse identificador;</font><br /><font style="font-style: italic;">identificador = new NomeDaClasse();</p> 

      <p>
        </font><font><font style="font-weight: bold;" size="5">Variaveis de Referência e Armazenamento:</font><br />As Variáveis de Referência contem endereços de memória ao objetos, e todo endereço normalmente esta em Hexadecimal ou seja 0x antes do numero(0x888).</p> 

        <p>
          <font style="font-weight: bold;" size="4">Vamos aos exemplos:</font>
        </p>

        <p>
          public class <font style="font-weight: bold;">MinhaClasse</font>{
        </p>

        <p>
          public static void <font style="font-weight: bold;">main</font>(String array[]){<br /><font style="font-weight: bold;">MinhaClasse identificador = new MinhaClasse();</font>
        </p>

        <p>
          //1- Isso é um comentário, Estou <font style="font-weight: bold;">Declarando uma variavel de referência</font><br />//1- MinhaClasse identificador<br />//2-<font style="font-weight: bold;"> Instanciando um Objeto</font><br />//2- new MinhaClasse()<br />//3- <font style="font-weight: bold;">Inicializando a Variavel de Referência(igual =)</font><br />//3- o identificador Recebe o endereço de memória do Objeto MinhaClasse
        </p>

        <p>
          }<br />}
        </p>

        <p>
          <font style="font-weight: bold;" size="4">Desenhando:</font><br /></font><br /></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_KtQEifFI/AAAAAAAAAO0/_cGPzTRW474/s1600-h/Exemplo01.png"><img style="cursor: pointer; width: 320px; height: 192px;" src="http://localhost/www/wp0/uploads/Exemplo01.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377239358860590162" border="0" /></a><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />Clique na imagem para ampliar, Não se importe com o indice 0 da Local variable, Nunca se armazena nada la ele é uma referência a outra área de memória</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">. Lembra- se que todo objeto mora em HEAP?</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

          <p>
            </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Oque são Variáveis Membro?</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

            <p>
              São aquelas Declaradas dentro do escopo da Classe, Agora sim podemos exemplificar de uma maneira fácil:</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

              <p>
                </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                <p>
                  </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public byte </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">variavelMembro</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = 10;</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                  <p>
                    </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public static void main(String array[]){</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> MinhaClasse identificador = new MinhaClasse();</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                    <p>
                      </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">//1- Isso é um comentário, Estou Declarando uma variavel de referência</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> //1- MinhaClasse identificador</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />//2- Instanciando um Objeto</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />//2- new MinhaClasse()</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">//3- Inicializando a Variavel de Referência(igual =)</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">//3- o identificador Recebe o endereço de memória do Objeto MinhaClasse</p> 

                      <p>
                        </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial"></p> 

                        <p>
                          Oque ocorreu agora?</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="text-decoration: underline; font-family: arial; color: rgb(0, 0, 0);"></p> 

                          <p>
                            </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp_LyxK701I/AAAAAAAAAO8/_Kqgck8qPGA/s1600-h/Exemplo02.png"><img style="cursor: pointer; width: 320px; height: 168px;" src="http://localhost/www/wp0/uploads/Exemplo02.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377240553156760402" border="0" /></a><font style="text-decoration: underline; font-family: arial; color: rgb(0, 0, 0);"></p> 

                            <p>
                              </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar, A variável de Instancia tem o valor de 10 em byte, isso significa 8 bits,binários de byte + sinal ou seja, 0000 1010</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial"></p> 

                              <p>
                                Como acessar membros de classe?</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />Lembre-se Membro da classe = Variáveis membro ou métodos membro</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> ,<br />Use o identificador da Variavel de referência do objeto e logo após o ponto e o identificador do membro da classe!</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                <p>
                                  <font size="3">O Operador ponto &#8211; Permite o acesso a membros do objeto não privados. Isso é chamado de Notação de ponto.</font>
                                </p>

                                <p>
                                  identificador.identificadorMembro;</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">identificador.identificadorMembro();</font> <font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial"></p> 

                                  <p>
                                    Vamos aos exemplos:
                                  </p>

                                  <p>
                                    </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public byte variavelMembro = 10;</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                    <p>
                                      public static void main(String array[]){</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> MinhaClasse identificador = new MinhaClasse();</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">identificador.variavelMembro = 20;</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> //Acessando a variavel membro</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                      <p>
                                        }</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                        <p>
                                          </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial">Desenhando:</font> <font style="text-decoration: underline; font-family: arial; color: rgb(0, 0, 0);"></p> 

                                          <p>
                                            </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp_ThrWgnbI/AAAAAAAAAPE/zdXb_G9ZxDk/s1600-h/Exemplo03.png"><img style="cursor: pointer; width: 320px; height: 152px;" src="http://localhost/www/wp0/uploads/Exemplo03.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377249055629942194" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar,Perceba que o valor em Binário, os bits que estavam na variavelMembro agora mudarão, antes era: 0000 1010 ou seja o número 10 em decimal<br />Agora é: 0001 1000 ou seja o número 20 em deci</font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">mal</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">.</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                            <p>
                                              </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Exemplificando acesso a membro com mais de uma Instancia:</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                              <p>
                                                </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public byte variavelMembro = 10;</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                <p>
                                                  </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public static void main(String array[]){</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                  <p>
                                                    </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">identificador1</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = new MinhaClasse(); //Uma Instancia<br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">indetificador2</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = new MinhaClasse(); // Outra instancia</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                    <p>
                                                      identificador2.variavelMembro = 20;</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                      <p>
                                                        </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> }</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br /></font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                        <p>
                                                          Qual o valor da variavelMembro do identificador2?</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> Não sabe? Então vamos desenhar!!!</font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp_U-4nvgiI/AAAAAAAAAPM/pfBqRnR7BgU/s1600-h/Exemplo04.png"><img style="cursor: pointer; width: 320px; height: 166px;" src="http://localhost/www/wp0/uploads/Exemplo04.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377250656919716386" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar, O valor certo seria em binário porem vou colocar em Decimal para Exemplificar melhor.Esse ja é o desenho final de como ficará.</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Um exemplo de Método:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public byte variavelMembro = 10;</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public void </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">go</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">(){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public static void </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">main</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">(String array[]){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">identificador1</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = new MinhaClasse();//Uma instancia</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Minha </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">indetificador2</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = new MinhaClasse();// Outra instancia</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial"> identificador2.go();</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">O método que será Executado é de quem?</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">O do identificador2, basicamente tem-se isso:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp_Vw8Sz4sI/AAAAAAAAAPU/dsqtDsQ28yQ/s1600-h/Exemplo05.png"><img style="cursor: pointer; width: 320px; height: 237px;" src="http://localhost/www/wp0/uploads/Exemplo05.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377251516899123906" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Atribuição de Referências:</font> <font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"><br />É a atribuição de um endereço de memória de uma Variavel de Referência a outra:</p> 

                                                          <p>
                                                            <font style="font-weight: bold;">Exemplo:</font>
                                                          </p>

                                                          <p>
                                                            public class <font style="font-weight: bold;">MinhaClasse</font>{
                                                          </p>

                                                          <p>
                                                            public static void main(String array[]){<br />MinhaClasse <font style="font-weight: bold;">identificador1</font> = new MinhaClasse();//Uma instancia<br />Minha <font style="font-weight: bold;">indetificador2</font> = new MinhaClasse(); // Outra instancia
                                                          </p>

                                                          <p>
                                                            }<br />}
                                                          </p>

                                                          <p>
                                                            </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp_WUZJQjSI/AAAAAAAAAPc/iHXrg6yQG3s/s1600-h/Exemplo06.png"><img style="cursor: pointer; width: 320px; height: 262px;" src="http://localhost/www/wp0/uploads/Exemplo06.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377252125939109154" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</p> 

                                                            <p>
                                                              Exemplo Modificado:
                                                            </p>

                                                            <p>
                                                              </font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class <font style="font-weight: bold;">MinhaClasse</font>{</p> 

                                                              <p>
                                                                public static void main(String array[]){<br />MinhaClasse <font style="font-weight: bold;">identificador1</font> = new MinhaClasse();//Uma instancia<br />Minha <font style="font-weight: bold;">indetificador2</font> = new MinhaClasse();// Outra instancia
                                                              </p>

                                                              <p>
                                                                <font style="font-weight: bold;">identificador2</font> = <font style="font-weight: bold;">identificador1</font>;
                                                              </p>

                                                              <p>
                                                                }<br />}
                                                              </p>

                                                              <p>
                                                                <font style="font-weight: bold;">Oque acontece com identificador2?</font><br />Ele terá o mesmo endereço de memória que o identificador1;<br /><font style="font-weight: bold;" size="4"><br />Desenhando:<br /></font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_W1HRr6gI/AAAAAAAAAPk/6CvyARFmk4o/s1600-h/Exemplo07.png"><img style="cursor: pointer; width: 320px; height: 262px;" src="http://localhost/www/wp0/uploads/Exemplo07.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377252688078301698" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">, veja que agora identificador2 tem o endereço do mesmo objeto que identificador1</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial">Oque acontece com o objeto que tem endereço 0xA2?</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Como nenhuma variável de Referência contem o endereço dele, O objeto esta pronto para o coletor de lixo, Uma vez sem referência ele ja era.</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Qual a diferença de uma Variavel de Referência como membro da Classe e uma Variável de Referência como variavel local?</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                                <p>
                                                                  <font style="font-weight: bold;" size="4">Variavel local e de Referência:</font><br />Toda variável local é declarada dentro de um bloco ou de um método, Portanto:
                                                                </p>

                                                                <p>
                                                                  public class <font style="font-weight: bold;">MinhaClasse</font>{
                                                                </p>

                                                                <p>
                                                                  public static void <font style="font-weight: bold;">main</font>(String array[]){<br />MinhaClasse <font style="font-weight: bold;">identificador1</font> = new MinhaClasse();//Uma instancia
                                                                </p>

                                                                <p>
                                                                  }<br />}
                                                                </p>

                                                                <p>
                                                                  <font style="font-weight: bold;">identificador1 é uma variável do tipo Referência e é local ao método main, vejamos oque quer dizer:</p> 

                                                                  <p>
                                                                    </font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_YC_bQLII/AAAAAAAAAPs/r1l1b2VD7HI/s1600-h/ReferenciaeLocal.png"><img style="cursor: pointer; width: 320px; height: 234px;" src="http://localhost/www/wp0/uploads/ReferenciaeLocal.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377254026000739458" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"></p> 

                                                                    <p>
                                                                      <font style="font-weight: bold;" size="5">Variavel Membro e de Referência:<br /></font><font size="3">Toda variável Declarada dentro de uma classe e fora de um método ou bloco e que seja do tipo Referência.</p> 

                                                                      <p>
                                                                        public class <font style="font-weight: bold;">MinhaClasse</font>{<br />public MinhaClasse <font style="font-weight: bold;">variavelMembro</font>;
                                                                      </p>

                                                                      <p>
                                                                        public static void main(String array[]){<br />MinhaClasse identificador1 = new MinhaClasse();//Uma instancia<br />identificador1.<font style="font-weight: bold;">variavelMembro</font> = <font style="font-weight: bold;">new MinhaClasse()</font>;
                                                                      </p>

                                                                      <p>
                                                                        }<br />}</font><font style="font-weight: bold;" size="5"></p> 

                                                                        <p>
                                                                          Desenhando:
                                                                        </p>

                                                                        <p>
                                                                          </font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_Y03UA6mI/AAAAAAAAAP0/PWfsh3j0XM0/s1600-h/ReferenciaeMembro.png"><img style="cursor: pointer; width: 320px; height: 142px;" src="http://localhost/www/wp0/uploads/ReferenciaeMembro.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377254882816354914" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">, Lembre-se todo Objeto mora em HEAP</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial"><br />Qual a diferença entre tipos Primitivos e tipos Referência?</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> Tipos Primitivos armazenam os bits referêntes ao valor, tipos Referência armazenam o endereço de memória do Objeto:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial"><br />Tipo Primitivo:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public static void main(String array[]){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">byte</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> tipoPrimitivo = 10;</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> }</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial"><br />Desenhando:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_ZUtQlaLI/AAAAAAAAAP8/QKxjsu3oVjE/s1600-h/TipoPrimitivo.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/TipoPrimitivo.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377255429873428658" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">10 em Decimal equivale em Binário em tipo byte(ou seja 8 bits) </font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">0000 1010 lembrando que se fosse por exemplo em short seria:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">0000 0000 0000 1010</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial"><br />Tipo Referência:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public static void main(String array[]){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> MinhaClasse </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">identificador</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> = new MinhaClasse();</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> }</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial">Desenhando:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_KtQEifFI/AAAAAAAAAO0/_cGPzTRW474/s1600-h/Exemplo01.png"><img style="cursor: pointer; width: 320px; height: 192px;" src="http://localhost/www/wp0/uploads/Exemplo01.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377239358860590162" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Normalmente endereço de memória é usado em Hexadecimal ou seja 0x antes do número, no caso temos (0xA1)</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Qual a diferença de Instanciar e instanciar e Armazenar o valor?</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Quando você obtem uma Frame(ou seja um método em execução, no nosso caso o main) você obtem 3 espaços de memória que ja forão comentados em tutoriais anteriores(Local Variable,Operand Stack, Uma referência a Constant Pool), Basicamente trabalhamos na Operand Stack e utilizamos a Local Variable como uma área de acesso prolongado, podemos fazer uma comparação entre:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">RAM</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> -> operand Stack</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">HD</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> -> local Variable</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Sem a Local Variable você não tem acesso ao objeto depois de declara-lo , vamos ver ambas as partes:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial">Instanciar e Armazenar:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">{</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public int x = 0;</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public static void main(String array[]){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> MinhaClasse identificador = new MinhaClasse();</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> identificador.x = 20; //abaixo da Declaração da variável local, Instan </font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Em Bytecode:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> 8: aload_1</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> 9: bipush 20</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> 11: putfield #2; //Field x:I</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Isso significa em java: identificador.x = 20;</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="3" face="arial">Desenhando temos:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp_chxbZyrI/AAAAAAAAAQE/F321b1wjnpM/s1600-h/InstanciarEArmazenar.png"><img style="cursor: pointer; width: 320px; height: 253px;" src="http://localhost/www/wp0/uploads/InstanciarEArmazenar.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377258952865729202" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" size="4" face="arial">A invocaçãode putfield leva oque estiver em baixo dele na Operand Stack, e causará isso:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp_cwzCYz2I/AAAAAAAAAQM/q3kOr4DmHi0/s1600-h/InstanciarEArmazenar2.png"><img style="cursor: pointer; width: 320px; height: 253px;" src="http://localhost/www/wp0/uploads/InstanciarEArmazenar2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377259210995715938" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar,Usei em Decimal o valor para Representação, porem o valor correto de tipos Primitivos é em binário.</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Somente Instanciar:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">public class MinhaClasse{</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> public static void main(String array[]){</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> new MinhaClasse();</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> //2- Instanciando um Objeto</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> //2- new MinhaClasse()</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial"> }</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">}</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Trabalhando na Operand Stack, não temos como fazer isso pois não temos nada na Local Variable:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp_dJKym_OI/AAAAAAAAAQU/RicR7qpFybo/s1600-h/SomenteInstanciar.png"><img style="cursor: pointer; width: 320px; height: 253px;" src="http://localhost/www/wp0/uploads/SomenteInstanciar.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377259629688847586" border="0" /></a><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Clique na imagem para ampliar,Então logo vem o Coletor de Lixo e coleta ele.(Objeto solto é Objeto morto)</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">Escopo de uma variavel:</font><font style="font-family: arial; color: rgb(0, 0, 0);" size="3"></p> 

                                                                          <p>
                                                                            <font style="color: rgb(0, 0, 0);"> Variáveis declaradas dentro de um método,constutor de decisão, laço ou outro tipo de bloco de código não pode ser na classe em si<font style="font-weight: bold;">.O escopo de uma variavel se refere aonde a variavel pode ser usada dentro de um programa</font>. A declaração da variavel valida o escopo dela. <font style="font-weight: bold;">Exemplo:</font></font>
                                                                          </p>

                                                                          <p>
                                                                            <font style="color: rgb(0, 0, 0);">&#8211; Variaveis Locais <font style="font-weight: bold;">declaradas</font> dentro de um método, construtor de decisão, loop ou outro tipo de bloco de codigo diferente da classe, tem O ESCOPO ou seja pode ser usada apenas onde foi DECLARADA.</font><br /></font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="font-weight: bold; color: rgb(0, 0, 0); font-family: arial;" size="5" face="arial">É hora da Revisão:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; Por Default, Variaveis de Referência que são membros de Classe(Variáveis Atributo) tem o valor Default de null</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; Toda variável de Referência armazena o endereço de memória do Objeto</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; Todo endereço de memória normalmente é representado com hexadecimal, ou seja o 0x antes do valor(0x002)</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; Lembre-se Membro da classe = Variáveis membro ou métodos membro</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; Um objeto uma vez sem referência ele é do Coletor de lixo(Garbage Collected)</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">&#8211; A diferença entre:</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Variável Atributo de referência = Ambos moram em Heap</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><font style="color: rgb(0, 0, 0); font-family: arial;" face="arial">Variável de referência local é que = a variável em Local Variable, a referência em heap</font><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">&#8211; O Operador ponto &#8211; Permite o acesso a membros do objeto não privados. Isso é chamado de </span><font style="font-weight: bold; font-family: arial; color: rgb(0, 0, 0);">Notação de ponto</font><span style="font-family: arial; color: rgb(0, 0, 0);">.</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">&#8211; O escopo de uma variavel se refere aonde ela pode ser usada no programa.</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" />
                                                                          </p>

Java Threads o que é

Java Threads o que é. Linguagem Java.

Teremos hoje: Processos, threads, Stacks,Frames, KLT, ULT

É necessário a Leitura do Básico de uma instancia da JVM, Falaremos da estrutura de uma thread, a estrutura de um processo e Basicamente de PC Registers e STACK.

Java Virtual Machine Stacks : – Normalmente chamada somente deExemplos Java,Linguagem Java, Programação, Java Stack – , cada thread tem a sua Stack.(Ou seja um processo tem ao Menos uma STACK – Pois um processo tem ao menos uma thread-).

Oque contem dentro de uma Stack?

De um modo geral, FRAMES.


Oque são Frames?

Toda vez que um método é invocado em java, cria-se um Frame ao método na STACK referente aquela thread. Toda Stack tem pelo menos um frame(ou um método) que vai no fim dela, o mais conhecido é o main().

Oque eu tenho dentro de uma Frame? – Basicamente –

-Local Variables
-Uma referência para Constante Pool da Classe
-Operand Stack

*** Cada Frame contem um LIFO, conhecido com Operand Stack (last-in-first-out)- A stack em si também é conhecida com LIFO

Ai você me pergunta e dai? – A relação de como java trabalha com os dados, é a mesma que o Frame faz – Por isso da importância de saber isso.

Perceba que em java basicamente trabalhamos com 3 tipos de dados em um contexto de um processo: Local Variables, Membros de Instancia, Membros de Classe. A relação é a seguinte:

– Local Variables = São variáveis locais ao Método(Ou seja são variaveis que residem dentro da Local variable de uma Frame).

– Membros de Instancia = Cada arquivo.class contem um Constant Pool que são Referências simbólicas a tudo em Heap. Qual a Relação Constant Pool e Runtime Constant Pool? Quando o arquivo.class é carregado existe uma mapiamento e a Constant Pool do arquivo.class vira a Runtime Constant Pool na instancia da JVM. -Isso será futuramente a Heap daquele PROCESSO –

– Membros de Classe = Normalmente trabalhando na Operand Stack Referente – Usa – se simbólicas importações em bytecode do tipo, getStatic, putStatic. etc.

Ja percebeu da onde em java, você aprende Declarando Membros de instancia,Declarando membros da classe, Declarando Local variables Pois bem ai está da onde vem.

Exemplos Java,Linguagem Java, Programação, Java

Local Variables – O -Index 0 – é usado como uma Referência a Constant Pool, que vai para a Operand Stack para invocações de OPCODE do tipo – putfield #2 ; EM JAVA TEMOS A KEYWORD this, ela tem a mesma função que o -Index 0- Isso quer dizer que quando você usa a keyword this em java, esta invocando o index 0 da Local Variable(aload_0) que aponta para a Constant Pool da sua classe.

Oque é executado dentro de uma STACK?

O primeiro método a ser executado dentro de um STACK é o método que vai no fim da STACK, no caso da thread main o método que vai ser executado é o main() no caso de uma outra thread o run(), isso significa que a vida da STACK é baseada no termino do método que esta no fim da Stack, e suas referencias a outras threads (Por isso é chamado de Lifo, Primeiro a entrar, ultimo a sair.).

Exemplos Java,Linguagem Java, Programação, Java

CLIQUE NA IMAGEM PARA MAXIMIZAR ELA

Processos:

– Basicamente um programa em execução –

Um processo é um container, que contem os recursos que ele terá em Runtime,e contem seu próprio espaço de memoria.Normalmente um processo é visto apenas como um programa ou um aplicativo em execução mais, oque o usuário vê como um simples Sistema pode de fato, ser um CONJUNTO DE PROCESSOS. PARA FACILITAR A COMUNICAÇÂO ENTRE PROCESSOS, GRANDE Parte do S.O garante o recurso de Inter Process Communication (IPC) COMO PIPES E SOCKETS.O IPC não é apenas para Processos no mesmo S.O, eles podem estar em DIFERENTES S.O.

Grande parte da Implementação da JVM, roda em um simples processo. Um Aplicativo java pode criar Processos adicionais, usando Objetos da classe java.lang.ProcessBuilder(This class is used to create operating system processes. ).

UM PROCESSO TEM AO MENOS UMA THREAD.

Um processo conhece o outro?

Não necessariamente, dependendo do SO, existem modos de um processo enviar msg para outro Porem não necessariamente. CADA PROCESSO RODA INDEPENDENTE DO OUTRO Mais eles podem cooperar entre si.

Exemplos Java,Linguagem Java, Programação, Java

Oque é uma thread?

É a forma de um processo se dividir em uma ou mais “tarefas simultâneas”(ou seja é a forma de um processo se dividir em threads.).

São processos menos Pesados. Tanto threads quanto Processos te dão um ambiente de Execução, MAIS CRIAR UM NOVA THREAD, CONSOME MUITO MENOS DOQUE REALMENTE CRIAR UM NOVO PROCESSO.

threads existem dentro de um processo .Todo processo tem ao menos uma thread. threads dividem os recursos do processo , Incluindo Memoria e ARQUIVOS ABERTOS(fluxos).ISSO é muito eficiente, porem da muitos problemas de comunicação.

– Cada Thread é uma nova STACK –


Exemplos Java,Linguagem Java, Programação, Java

Qual a diferença de thread e Thread?

Sabe-se que java é case-sensitive logo, thread = linha de execução, Thread = classe

Qual o tempo de resposta perceptivel ao ser Humano?

Cerca de 200 ms é o tempo que o ser Humano realmente consegue perceber algo.

Qual a tempo de resposta de troca de uma Stack de uma thread e outra?

Estima – se em 100 ms, porem eu andei avaliando esse tempo, e realmente depende da JVM, memoria etc, porem chega ate a ser 10x menor que isso!

Quantas threads um processo tem?

Ao menos uma, no caso de java, temos a thread main, que contem o main() que é o método que vai no fundo da Stack ou seja oque é executado pela jvm, quando o método no fundo da Stack termina o processo termina.

Como é thread x cpu?

Em hardwares com múltiplos CPUS ou múltiplos core, realmente existe simultaneidade entre as threads, porem em maquinas com apenas 1 core ou uma CPU, a troca de uma STACK para outra é tão rápida que parece que é simultâneo.

Oque é monoThread?

São os Sistemas que suportam apenas uma thread e os que suportam multiplas threads são chamado multiThreads.

Porque varias threads em um processo e não apenas vários processos?

O gasto para criação e troca de um processo para o outro é imensamente maior que a troca de uma thread para outra.Alem do tempo de resposta ser bem maior e o consumo de memoria em questões de thread também ser bem menor a comunicação entre threads é muito mais facil pois, trabalhamos em um nivel de abstração muito maior doque trabalhar com um processo.

Os processos dividem Oque?

Basicamente a CPU física, entre memoria etc.

Para quem o S.O entrega a CPU?

Quando estamos em um processo, O S.O. entrega a CPU para UMA THREAD DO PROCESSO.

Onde eu vejo os processos atuais em meu computador?

Cada S.O contem uma tabela de processos a qual o mesmo esta trabalhando no momento.

Oque é realmente ter múltiplas threads?

É como executar tarefas de duas listas. Nos ainda estaremos fazendo as tarefas em cada lista na ORDEM correta Mais quando começamos a ficar entediados com as tarefas de uma lista, nos trocamos de lista E futuramente quando voltarmos para fazer a lista que paramos, voltamos exatamente no mesmo ponto onde paramos.

(lista aqui pode ser Considerada um STACK)

Oque é Realmente um Sistema Operacional Multitarefa?

É aquele onde, consegue-se executar múltiplos programas ao mesmo tempo. Cada um desses programas tem AO MENOS 1 thread com eles. Os processos assim como as threads tem estado, e a thread do processo que não estiver sendo executada tem seu estado como “Sleeping”.

Outra definição:

São S.O.(s) que deixam múltiplos processos sendo executados em paralelo. Veja enquanto você esta no word, pode estar escutando musica, com o msn online etc. Claro que dependendo da quantidade de Cpus fisicas ou cores, a maioria desses processos fica em estado Sleeping.

Por onde começa a execução de um processo?

Todo processo tem um ponto de partida, o método que vai no fundo da Stack referente ao processo é aquele que é o ponto DE PARTIDA.(LIFO da Stack, ex: main() ).


Temos dois tipos de thread, KLT e ULT

Oque é KLT?

São Kernel-Level Thread. – Ou seja do S.O. –

Source: Java Threads, 2nd edition – Scott Oaks & Henry Wong –

Exemplos Java,Linguagem Java, Programação, Java

Clique na Imagem para ampliar

Oque são ULT?

São User-Level Thread. – Ou seja do Usuário –

Exemplos Java,Linguagem Java, Programação, Java

Clique na Imagem para ampliar

Quem suporta KLT?
O próprio S.O.

Quem suporta ULT?
A propria biblioteca da Linguagem que da suporte a ela.

Oque é Escalonador?

(Basicamente são Algoritmos escritos em uma linguagem de programação que gerencia quem deve usar a CPU no momento e por quanto tempo)

O escalonamento (ou agendador de tarefas) computacionais é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um Sistema Distribuído, possibilitando executar os processos(as threads, pois a CPU é entregue a uma thread de um processo) mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos. O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal, ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso.

Quem é o Escalonador de java?

O escalonador de java depende muito da JVM em si, cuidado ao fazer programas multiThread e somente testar em uma JVM, o algoritmo escrito em java para JVM muitas vezes muda. Então se atente a isso.

Quem é o Escalonador do meu S.O?

Tudo dependerá do seu S.O. cada S.O tem o seu, no Caso do Linux o gerenciador de Memoria, processos etc é chamado de Kernel , que é um conjunto de SubSistemas e um deles é um GERENCIADOR DE PROCESSOS.Alguns S.O. como windows tem algoritmos de escalonamento como o Round-Robin.

Quem Escalona as ULT?

De uma modo geral é o programador, Porem o processo em si usa um Algortimo de escalonamento no caso de thread é o escalonador de processos que ajuda as threads a melhor se adptarem a situações.O S.O MUITAS VEZES NEM SABE DA EXISTENCIA DE “N” THREADS EM UM DETERMINADO PROCESSO.Neste modo o programador é responsável por criar, executar, escalonar e destruir a thread.QUANDO O S.O DA A CPU PARA UM PROCESSO, CABE AO PROCESSO DESTINAR QUAL SERÁ A THREAD QUE PRIMEIRO SERÁ EXECUTADA.

Quem Escalona as KLT?

O S.O elas são muito mais lentas que as ULT, cada chamada a uma KLT é uma consulta ao S.O. exigindo assim a mudança total de contexto do processador, memória e outros níveis necessários para alternar um processo.Primeira coisa, A CPU É dada a uma thread do processo e não ao processo, AS threads são independentes dos processos, eu posso estar no processo A1 thread A1A e ir para a thread A3A que é de outro processo, ou seja é a ordem que o escalonador determinar.Ja coma as Threds de ULT não temos essa independencia por o controle de threads é dado ao processo(ou seja o primeiro método que vai no fim da Stack, o main()) junto ao algoritmo em java do escalonador de threads.

Qual são os estados de um processo?

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem para ampliar

Qual São os estados de uma thread?

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem para ampliar

Nível de ABSTRAÇÃO ALTA, sobre a sucessão de passo ate um processo no S.O:

Basicamente quando você carrega um programa esse é manipulado por uma instancia da JVM, que faz as devidas manipulações, que vira processo no S.O, O gerenciamento de processos fica a encargo do S.O e o gerenciamento de threads fica ao encargo do escalonador da JVM. – Na maioria dos modelos de implementação da JVM


É hora da Revisão: – Revisão Válida apenas para threads Básico

A maioria dos Sistemas hoje em dia necessita de Concorrência(Simultaneidade) para que seu sistema faça mais de uma coisa “ao mesmo tempo”.

– Softwares que conseguem fazer concorrência(Exemplo ler msg e enviar) são chamados de concurrent software.

– Existe uma API que foi inserida, a java.util.concurrent onde temos um alto nível de Simultaneidade.

– Se um computador tem apenas um processador, que não é multiProcessado, Apenas existe UMA THREAD de um processo sendo executado, apenas uma por vez.(um processador que não é multiProcessado Tem apenas 1 core.)

– O tempo de Processamento, é dividido entre todos os processos e todas as threads, e é chamado de time- slicing(fatia).

– Temos, Sistemas com Múltiplos processadores, ou processadores com múltiplos cores de Execução.

Um Processo é um Programa em execução, cada Programa que você mandar executar em seu S.O. poderá ser visto na tabela de processos do S.O. e os processos tem estados assim como as threads.

– Sabemos que, todo processo tem ao menos uma thread,(vendo do ponto de vista de um programador) a thread main é a sua thread inicial, que te da o poder de criar novas threads.

– Threads Existem dentro de um processo.Todo processo tem ao menos uma thread. threads dividem os recursos do processo , Incluindo Memoria e ARQUIVOS ABERTOS(fluxos).ISSO é muito eficiente, porem da muitos problemas de comunicação.

-Existem threads do Sistema Operacional, e Existem threads da JVM e existem threads do seu processo. O S.O não conhece as threads do seu processo porque elas são encapsuladas pela JVM conseqüentemente o S.O só sabe que existe um processo com 1 thread, pois todo PROCESSO TEM AO MENOS UMA THREAD.

Java Virtual Machine Stacks é muitas vezes referenciada somente COMO STACK

Cada thread tem sua própria STACK

– Uma Stack é uma pilha que vamos empilhando Frames

– Toda Stack tem uma método que é o inicial, ou seja a primeira Frame a entrar na STACK(exemplo: o main())

– Um frame é criado toda vez que um método é invocado

– Um frame é destruido quando o code_block referente ao metodo terminou

– Cada Frame possui:

* Local Variable

* Operand Stack

* Uma Referencia a Runtime Constant Pool

– Quando um método é invocado, sobe uma Frame na Stack da thread.

– O Método que esta sendo executado em uma Stack, é o Frame que estiver no Topo da Stack, o Ultimo método que sera executado é o primeiro a ser colocado, ou seja main(), run() Quando um dos dois termina, a thread termina o seu code_block, Por isso a Stack é chamada de LIFO.

Threads e simultaneidade é uma afirmação que muitas vezes foge da realidade, pois a maioria dos processadores são monoProcessador ou quando são multiCore, muitas das vezes um core já é usada por alguma função do S.O logo só temos uma disponível.(E o S.O. só entrega a Cpu para uma thread do processo, por isso da dificuldade de simultaneidade entre threads ou mesmo processos). – A troca de uma thread para a outra chega a ser bem inferior a 100 ms, a percepção humana é de 200 ms, logo aparenta-se simultaneidade. Para simultaneidade realmente ocorrer é necessário um processador físico multicore ou um multiprocessador. Assim como exemplo, Lado “A” do processador processa a thread 1, lado “B” do processador processa a thread 2.

– O escalonador do S.O. Entrega a CPU a uma thread do processo, sempre a uma thread.

– o PC do pc Register Aponta para o código sendo executado Referente a Frame da thread em questão, Se tivermos 2 threads , A e B, em troca de contexto (de thread) de A para B, A tem registrado no pc do PC Register qual a Instrução que devera fazer(ou seja uma depois daquela que ja fez), Quando o Scheduler volta de B para A, A volta exatamente onde tinha parado. – TROCA DE CONTEXTO PODE SER CONSIDERADO (TROCA DE THREAD) OU TAMBÉM TROCA DE STACK – O CÓDIGO SENDO EXECUTADO É APONTADO PELO PC do PC REGISTER DA METHOD AREA.

PC REGISTER e threads:

PS: Se 2 threads acessam o mesmo objeto, cada thread terá gravado no pc do pc Register em qual instrução está.

Thread A

Iconst_4
iconst_3 ← Oi eu so o pc do PC register e a thread A, esta aqui(iconst_4 ja foi resolvido)
iadd

Thread B

Iconst_4 ← Oi eu so o pc do PC register e a thread B, esta aqui(instrução n foi feita aind)
iconst_3
iadd

– LEMBRE-SE o pc do PC register guarda a próxima instrução que terá que fazer, exemplo, se ele ja fez iconst_4 ele vai apontar para iconst_3

Agora Ficou obviou que quando você tenta executar um class File que não contenha o main(), não faz o minimo sentido, já que é o método que é primeiro colocado no LIFO(Stack), ou seja é o primeiro a ser executado, e o Ultimo a terminar. Quando o main() é executado, sobe-se a Frame referente a ele.

Olhando em níveis bem abstratos e deixando detalhes de lado.

1 – Você escreve um algoritmo em uma linguagem de programação

2 – Você compila esse seu programa gerando um Class File

3 – Quando você usa o launcher de java( java identifier) para executar o seu programa, Na arquitetura da instancia da Jvm, cada thread do seu programa, ganhará uma:

*Program Counter Register

*Stack

* Native Method Stacks

4 – Na visão da Stack, o primeiro método executado da thread é o main() ou o run(), quando ele for invocado por uma instancia da JVM, a Stack da thread ganhará um frame que é devidamente de um desses métodos.

5 – A Constant Pool referente a cada Class File é mapeada para a Runtime Constant Pool da Method Area.

5 – o pc do Program Counter Register apontará para os bytecodes na Method Area,se for necessário resolver alguma constant é feito Dynamic Linking usando as informações já mapeadas da Runtime Constant Pool.

Isso é um ciclo extenso, foi muito abrevido pelo oque realmente eu achei importante até agora para um bom entendimento do porque de muita coisa, esse ciclo é chamado:loading, linking, initialization, and unloading

Bom por enquanto a postagem é essa, espero velos na próxima. Estamos perto de começar a instanciar objetos threads.

Java Sincronização

Java Sincronização. Linguagem Java.

Sincronização:

* O principio desse capitulo é falar sobre o acesso de múltiplas threads ao mesmo OBJETO, ou seja, 2 chamadas de métodos/instruções em 2 stacks diferentes porem os métodos/instruções são do mesmo objeto.

– QUANDO OCORRE TIMESLICING EM THREADS QUE NÃO ACESSAM OS MESMOS OBJETOS, O PC DO PC REGISTER GARANTE QUE TODAS AS INTRUÇÕES SERÃO FEITAS. NO CASO DE 2 THREADS COM TIMESLICING NO MESMO OBJETO, o pc do PC register garante que todas instruções serão feitas, porem o problema é em qual instrução estamos.

Podemos considera-lá como um átomo, não pode ser dividida.

Descrevendo uma situação provável:

Uma objeto chamado Object, que contem um método chamado somar e outro chamado subtrair, a thread A deve invocar somar e a thread B deve invocar subtrair, porem ambas elas estão FAZENDO NO MESMO OBJETO Lembre-se muitas vezes o escalonador não tem uma ordem certa com threads de mesma prioridade, Portanto mesmo que você faça primeiro

ThreadA.somar();

ThreadB.subtrair();

Pode ser que ocorra isso: Um timeSlicing de threads, vamos ver:

public int x = 5;

Thread A – Prioridade 5 – Incremente o valor em 5,acessando o método do objeto que praticamente faz isso:

x = x + 5;

Thread B – Prioridade 5 – Decrementa o valor em 5, acessando o método do objeto que praticamente faz isso:

x = x – 5;

Object – as Duas Threads tem o mesmo objeto como RUNNABLE

getfield #2; = Instance variable que é uma referencia dinâmica a constant Pool da classe, que sera resolvida depois Ou seja instance variable do Objeto

VAMOS VER OQUE ACONTECERÁ:

*Thread A – usa uma parte do TimeSlicing dela, invocando somar() no Object

getfield #2

iconst_5

iadd

putfield #2

Quando o pc do pc register da method area estava na instrução iconst_5 o tempo se esgotou da THREAD A, portanto é hora da THREAD B.(Lembre-se que o mudou porque quando o pc do Pc register faz uma instrução ele salva o estado e guarda o endereço da próxima instrução)

A Operand STACK referente a Thread A esta:

5

5

———x———–

*Thread B – usa uma parte do TimeSlicing dela, invocando subtrair() no Object(Mesmo Objeto que A)

getfield #2

iconst_5

isub

putfield #2

O pc do pc register da method area estava na instrução iconst_5 mudou porque quando o pc do Pc register faz uma instrução ele salva o estado e guarda o endereço da próxima instrução)

A Operand STACK ESTA

5

5

———-x———-

*Thread A usa uma parte do TimeSlicing dela, invocando somar() no Object

getfield #2

iconst_5

iadd

putfield #2

——–>Termino da Frame.

A Operand STACK ESTA – sem nada agora, x = 10 agora.

——–x———-

*Thread B –usa uma parte do TimeSlicing dela, invocando subtrair() no Object(Mesmo Objeto que A)

Repare que, o valor de x é 10, não é mais 5, porem a atualização não acontece aqui, pois a instrução de carregar o valor(getfield #2) foi feita antes da instrução de adicionar(iadd (x = x + 5)) da THREAD A

getfield #2

iconst_5

isub

putfield #2

A Operand STACK esta vazia agora, x = 0; porem deveria ser 5, mais eu sobrescrevi o valor. (E não era essa a intenção)

Conseguiu enxergar a inconsistência de valores? eu simplesmente tinha uma instance variable, com o valor de 5

public int x = 5;

Oque era para acontecer:

Em uma thread eu gostaria de somar + 5

x = x + 5,

x = 5 + 5;

x = 10;-> Thread A

Em uma outra thread eu gostaria de subtrair 5

x = x – 5;

x = 10 – 5;

x = 5; – Thread B

Oque aconteceu: x = 0;

No final meu x foi para 0(e era para ser 5), houve uma inconsistência de valores, devido ao fato que temos 2 stacks acessando o mesmo OBJETO supondo que ocorra timeSlicing oque é muito provável e obviou que elas tem a mesma prioridade.

Foi como dito antes, certas coisas são como átomos, não podemos dividir.

Como consertar isso?

Bom sabemos que Garantia de haver ou não Robin-Round(claro e o timeSlicing)não podemos ter, Portanto fazemos o seguinte:

TODO objeto em java tem um cadeado, ESSE CADEADO É DO OBJETO logo esse cadeado pode estar trancado ou destrancado. Só que esse mecanismo só fica ativo quando usamos a keyword synchronized.

Quando um cadeado esta trancado?

Quando uma thread acessa um membo synchronized, ou uma instrução synchronized, A thread se tranca em um “quarto” com o objeto, e diz que só devolve a chave do quarto, QUANDO ELA TERMINAR O SERVIÇO.

E se uma threadB quer usar o Objeto, porem a threadA esta com a chave?

A thread B fica em um Pool CHAMADO: Blocked in Object’s Lock Pool. E so sai de la quando a thread A, sair do quarto e devolver a chave.

SIMPLESMENTE synchronized evita o Robin-Round(claro e o timeSlicing) referente aquele objeto, evita usando o mecanismo de tranca onde a thread fica com a chave,outras threads ate podem acessar o método, so que ficam no Object’s Lock Pool esperando a outra thread sair do “quarto” e devolver a chave.

EXEMPLO DE Método de somar e subtrair synchronized:

Object = é um objeto com uma instance variable (public int x = 5) e 2 métodos sicronizados(somar(), subtrair())

Thread A = é a Thread de SOMA

Thread B = é a thread de subtração

*Thread A entra invoca somar() do objeto Object

getfield #2

iconst_5

iadd

putfield #2

Na instrução iconst_5, terminou o time da thread A, portanto time da Thread B

*Thread B tentar entra invocar subtrair do objeto Object, POREM Não pode, pois não tem a chave para destrancar(Pois subtrair é SINCRONIZADO). PORTANTO THREAD B entra no POOL das Blocked in Object’s Lock Pool.

*Thread A volta da onde tinha parado, e continua o somar() do Object

getfield #2

iconst_5

iadd

putfield #2

agora sim, x = x + 5 x = 10; Thread A terminou o bloco de código do frame , abriu “o quarto” e devolveu a chave.

*Thread B tentar entra invocar subtrair do objeto Object, COMO thread A terminou la esta a chave, B PEGA A CHAVE, se tranca com o objeto “no quarto"e manda a ver no metodo!

getfield #2

iconst_5

isub

putfield #2

AGORA TEMOS O RESULTADO QUE QUERIAMOS, x = 5

TENHO que synchronized o método todo?

Não você pode simplesmente synchronized o código que você quer, especificando um objeto que tem a chave para aquilo.(Eles te dão a chance de ter um bloco onde se consegue garantir o termino coerentemente e onde você pode especificar outro objeto para a obtenção da tranca disso)

public void go(){

synchronized(this){

}

}

Ou declare uma instance variables somente para armazenar a Tranca dele

Object d = new Object();

synchronized(d){

}

Resumo:

– Quando duas threads acessam o mesmo objeto tenha CUIDADO, potenciais problemas podem vir a ocorrer.

– TODO OBJETO TEM UM CADEADO ASSOCIADO COM ELE.

– O cadeado e a chave dele, estão associados ao objeto … A thread simplesmente tranca ele e pega a chave, porem devolve ao OBJETO DEPOIS. Portanto 2 métodos synchronized significa só uma chave para acessar qualquer um dos dois.

– Lembre-se só sincroniza – se membros, e construtor não é considerado membro

– Quando uma thread acessa um membro synchronized do objeto, outras threads não poderão acessar SOMENTE MEMBROS synchronized DESSE OBJETO, ATE QUE A PRIMEIRA THREAD DESTRANQUE REPITO SOMENTE MEMBROS synchronized QUE ELES NÃO PODERÃO ACESSAR.

Thread safe é estar synchronized.

– O grande problema de não fazer membros thread safe não é a questão de timeslicing mais sim das intruções que já podem ter sido feitas pelo pc do pc Register.

– Podemos fazer métodos (thread safe) ou code_blocks (thread safe), porem em questão de code_blocks é necessário especificar o objeto.

– Se for um membro static, a thread tranca os membros synchronized da classe, e só devolve a chave para a classe quando terminar.

– Quando uma thread A acessa o método/instrução sincronizada de um objeto, e thread B tenta acessar o um método/instrução sincronizada do mesmo objeto, SE thread A ainda não terminou, thread B vai para o estado “Bloqueado em pool de Bloqueio de Objeto” e so sai de la quando a devolver a chave do objeto.

Passo a passo:

1 – thread A entra em um método/instrução sincronizada do objeto1

2 – thread B tenta entrar em algum método/instrução sincronizada do objeto1(mesmo de thread A)

3 –thread B encontra um objeto1 fechado para métodos/instruções sincronizadas e não encontra a chave, thread B vai para o estado: “Bloqueado em pool de bloqueio de objeto”

4 – thread A termina o code_block(ou vai dormir em uma instrução não sincronizada) e libera a chave do objeto1

5 – thread B agora vai para o estado Executável e como só temos essa thread de maior prioridade o escalonador seleciona thread B para ser RUNNING.

Fácil sincronização neh?


Java Resumo Modelos de Escalonamento

Java Resumo Modelos de Escalonamento. Linguagem Java.

Resumo:


– O modelo de escalonamento de threads em java não é definido por uma especificação, isso significa que o comportamento varia de plataforma(Nativa) para plataforma(Nativa) e claro a implementação da JVM.


– Java é uma plataforma independente, oque implica a não necessitar saber sobre detalhes de implementação da Plataforma Nativa POREM em alguns casos os detalhes importam!

– A maioria dos computadores tem apenas uma CPU disponível oque, acarreta em escalonamento de threads mediante ao core.

– O modelo de Prioridade, é realmente o único ao qual pode-se fazer Afirmação, Na implementação das Jvms, threads com maior prioridade terão preferência para se Tornarem Running do que thread de menor prioridade.

– threads de Mesma prioridade seguem em cada S.O. E cada implementação de JVM uma idéia diferente(um modelo Diferente), cabe ao programador fazer as manipulações certas.


– O S.O Realmente importa – Em alguns casos de acordo com o Sistema de escalonamento do S.O. sera como o seu programa multiThread se comportara, então fica melhor você garantir que seu programa funcionara de acordo, usando yield(), sleep() ,wait() noticy etc Isso para programas com mais de uma Thread Cpu Intensive



– Thread scheduling

Em programas multiThread, as threads dividem as CPUS. OU a JVM, ou o S.O. decide como dividir os CPUS e isso é conhecido como Thread scheduling. Seja a Jvm ou o S.O. é conhecido como Thread scheduling quem faz a divisão das CPUS(ou da CPU) ,o programador entra com “manipulações” dessas divisões das CPUs.


– Temos 3 tipos básicos de programas em nível de caracterização:

CPU intensive: Vários ciclos

I/O intensive: Aguarda I/O

Interactive: Evento



O escalonador de java é baseado na prioridade das threads. Isso significa que as threads são assinadas com uma certa prioridade, um valor inteiro positivo. APENAS O PROGRAMADOR pode trocar a prioridade. Ou seja se uma thread nasce com uma prioridade, mesmo que ela passe por todos os estados possíveis, ela morrerá com a mesma prioridade. – (Ou seja, 2 threads, A prioridade 5, B prioridade 6, A esta Running, B entra em Runnabl(b.start()) A e B vão para o Pool de threads Runnable, e a thread que será dada a CPU é para B, pois tem maior prioridade)-

– Temos 2 tipos de modelos de implementação de threads:


*The green-thread model – as threads são gerenciadas somente pela JVM.É o modelo mais comum.


*The native-thread model – as threads são gerenciadas pelo S.O. que é hosta da JVM(O escalonador do S.O.)


– QUANDO DEVO TOMAR CUIDADO?


– Quando tenho mais de um CPU-Intensive no programa

– Quando resultados parciais são importantes, ainda mais se eles forem compartilhados

– Quando threads não estão fazendo tarefas associadas; as threads estão fornecendo tarefas separadas que vão se integrando, ou empregando um paradigma de round-robin scheduling(Um programa de servidor que responde a requisições de diferentes usuários) ou empregando um paradigma de Escalonador(um servidor que processa requisições de usuários )




– QUANDO ACONTECE A MUDANÇA DE UMA THREAD PARA OUTRA?

NESSES CASOS:

* Uma thread de prioridade maior entre na historia

* yield() seja invocado, stop(), ou run() termine o code_blocK

* Ou em um sistema que suporte time-slicing diga que o tempo de uso terminou.


– Quando configurar a prioridade de threads é importante?

– Quando temos apenas uma CPU intensive thread(ou uma CPU somente na máquina)

– resultados intermediários são importantes

– Oque são resultados intermediários?

Ex: Temos uma thread CPU intensive(que tem um loop, que faz contas e a cada loop ele mostra para o user o resultado) e temos um thread Interactive(que fica esperando uma ação do usuário, claro temos que fazer os 2 ao mesmo tempo), então a thread que é CPU intensive ao fazer uma conta, mostra para o user o resultado(so que ela faz essa conta “n” vezes), porem cada resultado é importante, não somente o resultado final na 1x que faz a conta sai o resultado para o user, na 2x que faz a conta sai o resultado para o user, na 3x que faz a conta sai o resultado para o user e assim por vez Isso enquando a thread de INTERACTIVE não recebeu nenhum evento isso que é chamado de resultado intermediario.



Round-robin é um algoritmo de escalonamento usado em computadores no qual um número determinado de processos ocorrem com um intervalo de tempo também determinado. – Ele usa aquele conceito de lista, oque estiver em cima é executado e vai para o fundo.(ELE É implementando em alguns S.O.) Dele deriva também o termo de Time-Slicing(Falando em quesitos de thread e implementação da JVM de recursos do S.O.).


Time-slicing é um termo que vem de múltiplas threads no estado “Runnable” de mesma prioridade que são as de mais alta prioridade no sistema e estão competindo pela CPU(ou seja um pc só com uma CPU, e elas querem se tornar RUNNING).


– Quando uma thread é criada, a thread herda a prioridade da thread que a criou. Você pode modificar a prioridade de uma thread a qualquer momento usando o setPriority().


– USER LEVEL THREADS X SYSTEM LEVEL THREADS:


Em grande parte dos S.O., o S.O é dividido em duas partes: User level e System level. O KERNEL do S.O. é quem responde as System level threads e também é quem representa o S.O. em chamadas de programas que rodam em User level.


Quando um programa do user quer ler um arquivo, por exemplo, o programa tem que fazer uma chamada ao kernel do S.O. o qual, lera os dados e retornara ao programa. Porque disso?

SE um programa fizer uma operação ilegal de sistema, antes disso ocorrer passa pelo kernel do S.O. oque ja sabe oque esta ocorrendo e termina o programa antes que afete outros programas ou o próprio S.O.

Por causa dessa separação é possível ter user leve threads, system level threads ou ambos independentemente.


– O GREEN MODEL:

* Normalmente são chamadas de user – level thread

* Não usa habilidades particulares a um S.O.

* Não suportam threads Nativas

* Esta na maior parte de S.O. derivado de UNIX(Embora grande parte do S.O tambem suportem native-thread model)

* As threads não são conhecidas pelo S.O – Somente a JVM sabe e gerencia

* So podemos executar uma thread por vez na CPU -Consequentemente não pegam as vantagens de multi processadores(Tendo eles ou não).

* A troca de uma thread no modelo green é muito mais rapida doque em native


– O NATIVE-THREAD MODEL:

* Normalmente chamadas de System – level thread

* Usa as habilidades nativas do S.O. para gerenciar Sistemas multiThread. Faz como de threads processos.

* Permite TimeSlicing( Atraves do escalonador do S.O. Round-robin)

* São threads que obtem do S.O. nativo algumas funcionabilidades e ajudas no processamento.

* Usa o escalonador do Sistema operacional

* Dependendo de cada S.O. as native – threads trabalham de uma maneira diferente.



Qual a diferença entre Native e Green Model?

– ISSO EM LINUX


# Em threads Nativas, a troca de uma thread a outra fica a encargo do escalonador do S.O. (de processos ex: Round-robin) em Green model não temos timeSlicing conseqüentemente também não o Round-robin(ou seja em Green Model uma thread so passa para a outra se for explicitamente dito Thread.yield(), Object.wait(), etc. Ou bloqueando código read() etc)


# Em maquinas com Múltiplas CPUs, threads nativas podem rodar simultaneamente em mais de uma CPU. No green Model todas as threads Rodam na mesma CPU.


#Threads Nativas dão aparência de muitos processos sendo executados: Cada thread tem a sua entrada na tabela de processos do S.O.


Um programador pode determinar se o S.O usará o modelo de green threads ou System threads?


Não. O usuário pode decidir a qual pacote escolher , porem uma vez executada a thread o usuário não pode alternar de green para system e vice versa.


Como posso programar de uma maneira que seja legal a ambos, Green e Native?

Tome algumas iniciativas de “manipulação” do Escalonador, do tipo use :

yield(), sleep (),wait(), noticy() etc De uma maneira que você se responsabiliza pelo seus atos.


Como criar uma native thread?

A Jvm cria a thread chamando Apis de OS-level.


– De tudo que observamos sobre Green e System, vemos que a escolha do pacote realmente fará a diferença, porem a mais importante é conhecer o Sistema Nativo a qual o programa multiThread será executado, pois dai tiramos um embasamento pela arquitetura do S.O e das CPUs.


– A JVM não faz timeSlicing


– Porem o S.O pode suportar TimeSlicing – Através de algoritmos como o Round – robin


– Não faça programas que confiem em TimeSlicing


– Em muitos S.O. quando temos threads de mesma prioridade no Pool de Runnable, o a JVM implementa o uso Round-robin em alguns sistemas operacionais, outros usam outros modelo de thread, ou propriamente somente o de Prioridade.


– Sistemas operacionais como windows, não tem implementação do Green model, portanto todas as threads são vistas como native thread(ou seja todas as threads são tratadas como processo e como uma native thread). – toda thread em windows é tratada como native


– Em sistemas derivados de Unix(linux etc) pode-se implementar tanto green thread como native thread.


Oque mudará se você terá green or native, é a implementação do seu código, e os packages que você usar.


CPU Starvation(inanição) é quando uma thread fica no estado de RUNNABLE muito tempo e existe pouca possibilidade dela se tornar RUNNING, normalmente pela prioridade das outras threads que estão com ela.(a dela é menor que as outras.)

– Normalmente em threads de mesma prioridade a Jvm implementa o Round-robin do S.O.


Existe uma API, java.util.concurrenty; ONDE TEMOS NOVAS IMPLEMENTAÇÕES PARA threads, alem de utilitários para a construção, REALMENTE VALE A PENA CONFERIR.

BOM voltaremos agora a Básicos threads 03


Java Princípios Básicos Voce Tem que saber

Java Princípios Básicos Voce Tem que saber. Linguagem Java.

Princípios Básicos:

São Conceitos e ou você os tem, ou nem sabe por onde começar !!!

Oque é Lógica de programação?Tudo abaixo faz parte dessa Técnica

É técnica de encadear pensamentos para atingir um determinado escopo(pré definido). Ela é apenas conceitual diríamos assim!

Oque é Lógica?

Maneira de raciocinar particular a um indivíduo ou a um grupo, que gera uma seqüência coerente com a finalidade de obter uma solução prática eficaz para um escopo.

Oque é Programa?

É um algoritmo em uma linguagem de programação

Oque é um processo?

É basicamente um programa em execução, quando você manda executar ou interpretar o seu programa o Sistema Operacional trata ele como um processo. Todo S.O tem um monitor de Sistema onde existe a aba de processo que, você’ encontra todos os processos(ou seja programas em execução)

no seu S.O

Oque é um Sistema?

É um conjunto de programas.

Oque é Algoritmo?

Seqüência finita de instruções com um escopo previamente determinado

Oque são instruções?

São determinações de ações que serão tomadas a partir do que você determinou, é um ordem

Oque é escopo?

Também conhecido como domínio do problema, é o objetivo ao qual você se propõe a resolver, é o objetivo final.

Oque é Seqüência Lógica?

É um passo a passo ordenado de instruções a fim de resolver o escopo do problema.

Oque é Pseudocódigo?

É uma maneira genérica de escrever algoritmos sem a necessidade de conhecer nenhuma linguagem de programação.

Oque é Teste de mesa?

É fazer o teste do seu programa antes de implementá lo e contrabater com o escopo do problema e ver ser o escopo final atende ao escopo inicial.

Oque é Linguagem de programação?

É um idioma com Sintaxe e gramática própria que faz o intermédio entre a linguagem falada pelos humanos e a linguagem falada por máquinas(binário).

RESUMINDO

Você cria instruções em uma linguagem de programação, ordena em uma seqüência lógica e isso é o seu programa.

Oque é Paradigma de Programação?

  • Modelo, padrão ou estudo de programação suportado por linguagens que agrupam certas características comuns

A Classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que muda a forma como a aplicação será modelada no ponto de vista computacional

  • EXEMPLO JAVA é do PARADIGMA DAS LINGUAGENS ORIENTADAS A OBJETOS

Oque são Tradutores?

O computador só entende linguagem binário logo usamos para Programar Linguagens que abstraem o código binário e criam um estrutura mais amigável ao ser Humano Mesmo porque ninguém consegue programar em Binário pois bem, Então precisamos de algo que TRADUZA da linguagem que escrevemos para a Linguagem de máquina:

  • Compilador : É um programa ou um conjunto de programas que a partir de um código Fonte(Código escrito em alguma linguagem de programação) cria um outro programa esse, com mesma instruções porem em novo código.

Interpretador: Lê código fonte e os vai executando

  • RunTime: É a máquina Virtual faz a emulação de um outro S.O. no seu S.O, falaremos mais disso DEPOIS ainda não é o momento.

Porque os computadores trabalham com binários?

Porque os circuitos que compõem o computador tratam apenas de abrir ou fechar um caminho para a energia passar ou ou trafegar, desta forma vários caminhos abertos e fechados compõem uma informação com bilhões de combinações. O princípio básico é:

Quanto mais simples a solução mas rápida a resolução então fica muito mais fácil ligar com 0 e 1(ligado e desligado, pode ou não etc.), e também pelo fato de debugar erros, em uma transação de dados caso ocorra algum erro o receptor tem a condição se corrigir o erro já que: Se não é 0, é 1!!!

Oque são Binários?

Os computadores entendem PULSOS elétricos , positivos ou negativos que são representados por bits.

Oque é um bit?

É a representação desses pulsos em números 0 ou 1

Oque é um byte?

1 byte = 8 bits

Porque do nome Computador?

Antigamente o nome “computador” era um título de trabalho, uma profissão(predominantemente desempenhada por mulheres), os detentores dessa profissão se encarregavam de efetuar cálculos repetitivos. Como era um trabalho manual, a lentidão e os erros eram imensos. Por isso, durantes anos os cientistas procuravam formas de mecanizar isso.

Então a principal característica dos computadores e o que os distingue das outras máquinas, é que podem ser programados. Isso significa que um algoritmo escrito em uma linguagem de programação pode ser armazenado em memoria e executado posteriormente. A pessoa que gera algoritmos em uma linguagem de programação(ou seja da instruções ordenadas com um escopo pré determinado) a um computador é CHAMADO DE PROGRAMADOR.

Basicamente oque faz um processador?

Não vou me ater a muitos fatos, vou dizer oque realmente importa ao momento. O processador é o cérebro do computador, ele que executa (ou “processa”) todas as ações que você faz no seu computador. Ele trabalha com linguagem binária e transforma tudo em binário

Basicamente oque faz a memoria RAM?

É chamada de memória volátil, esta diretamente ligada ao processador. Ela armazena dados aos quais o processador esta trabalhando no momento.

Basicamente oque faz a memoria Secundaria?

É uma memoria não volátil, é ligada diretamente a Memoria RAM. DADOS A LONGO PRAZO.

Oque é Codificar?

É pegar o seu PseudoCódigo e começar a escreve-lo na Linguagem a qual você deseja.

Oque é Debug?

Na maioria das vezes, depois do programador ter escrito o programa, este poderá não estar funcionando 100% no início. O programador deve corrigir o programa no caso de erros(também conhecidos como Erros de Compilação) que ocorrem no programa. Esse processo é chamado de depuração de erros(debug).

Oque são erros de Compilação?

Erros de Sintaxe do código, ou seja você escreveu algo errado

Oque são erros de Tempo de Execução?

São erros de lógica. Você fez a Sintaxe do código certa, porem erro na lógica.

Oque é Metodologia?

São “formas” a serem seguidas visando uma melhoria no processo de Criação de seus sistemas

ex: RUP,XP, SCRUM,

Conceitos Básicos sobre linguagens de Programação:

já sabemos oque é uma linguagem de programação , agora vamos ver alguns conceitos, podemos classifica-las como:

Quanto ao paradigma

Diferentes linguagens de programação podem ser agrupadas segundo o paradigma que seguem para abordar a sua sintaxe:

  • Linguagem funcional

  • Programação estruturada

  • Linguagem orientada a objetos

  • Linguagem natural

  • Programação lógica

  • Programação imperativa

Quanto à geração

  • Primeira geração, as linguagens de baixo nível (Assembly)

  • Segunda geração, as primeiras linguagens (Fortran, ALGOL, )

  • Terceira geração, as procedurais e estruturadas (Pascal, C).

  • Quarta geração, linguagens que geram programas em outras linguagens (Java, C++), linguagens de consulta (SQL).

  • Quinta geração, linguagens lógicas (Prolog).

Aspecto de estudo das Linguagens de programação:

  • Sintaxe = Gramática

  • Semântica = Significado

  • Pragmática(Paradigma)

Keep ur mind !!!

É só o básico para poder realmente intender oque vem por ai!!!

CYA DUDES!

Java Polimorfismo cast Objetos instanceof

Java Polimorfismo cast Objetos instanceof. Linguagem Java.

Sumário: Polimorfismo,Sobrescrita e Polimorfismo,Argumentos e Polimorfismo,cast de Objetos,instanceof

Objetos tem apenas uma forma aquela que lhe é dada quando ele é construído porem uma variável é polimórfica ou seja ela faz referência para diferentes objetos. Relembrando:

Como se declara uma variável de referência?

<p>
  </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqer8tQcHzI/AAAAAAAAAY0/MIcXEg-PXqk/s1600-h/construtor.png"><img style="cursor: pointer; width: 320px; height: 146px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqer8tQcHzI/AAAAAAAAAY0/MIcXEg-PXqk/s320/construtor.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379457339346394930" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

  <p>
    Clique na imagem para ampliar</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

    <p>
      Quando eu crio um objeto oque realmente acontece?</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

      <p>
        </span><span style="color: rgb(0, 0, 0);font-family:arial;">Acontece a subida no topo da hierarquia do objeto, obtendo &#8211; se um objeto que tem tanto membros(Métodos, Atributos) próprios</span><span style="color: rgb(0, 0, 0);font-family:arial;"> quanto de todas as SuperClass da Hierarquia.</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"><br />Vejamos:</p> 

        <p>
          </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sqeu2LOQ6lI/AAAAAAAAAZM/oMjdvNGYVFE/s1600-h/heranca.png"><img style="cursor: pointer; width: 320px; height: 204px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sqeu2LOQ6lI/AAAAAAAAAZM/oMjdvNGYVFE/s320/heranca.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379460525666134610" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

          <p>
            Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;">, Lembrando que Implicitamente escrito ou explicitamente Toda Classe que não tenha um SuperClasse explicitamente escrito tem java.lang.object Implicitamente ou Explicitamente escrito como SuperClasse.</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

            <p>
              Sabemos que se criarmos um objeto do tipo </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Chefe</span><span style="color: rgb(0, 0, 0);font-family:arial;">, ele terá todos os membros(Métodos e Atributos que todas as Hierarquias acima).</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

              <h2>
                Java Polimorfismo cast Objetos instanceof
              </h2>

              <p>
                Vejamos:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                <p>
                  new Chefe();</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                  <p>
                    <span style="font-size:130%;"><br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-size:130%;"><span style="font-weight: bold;">Vamos obter isso:</span></span></p> 

                    <p>
                      </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqeyJCFpnmI/AAAAAAAAAZU/luf-5OrwDUs/s1600-h/objetoChefe.png"><img style="cursor: pointer; width: 315px; height: 320px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqeyJCFpnmI/AAAAAAAAAZU/luf-5OrwDUs/s320/objetoChefe.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379464148166483554" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                      <p>
                        Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Ja deu para perceber que todo objeto Chefe tem:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Tudo que é de direito ao cargo, no caso </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">carroEmpresa</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem no caso bonusSalarial e supervisionar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que Funcionário</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem no caso nome, salario e trabalhar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Chefe também </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">tem tudo que java.lang.Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> tem</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Sendo assim vou abreviar para ficar mais facil o entendimento:</p> 

                        <p>
                          </span> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe5_7TLvjI/AAAAAAAAAZc/rY0Kl0dSw0A/s1600-h/heapStackabreviado.png"><img style="cursor: pointer; width: 292px; height: 320px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe5_7TLvjI/AAAAAAAAAZc/rY0Kl0dSw0A/s320/heapStackabreviado.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379472787818397234" border="0" /></a> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;"></p> 

                          <p>
                            Outro exemplo:
                          </p>

                          <p>
                            </span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">Se Criar-mos um objeto <span style="font-weight: bold;">Funcionario</span>, Resumidamente teremos:</p> 

                            <p>
                              </span> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe6D8p7OfI/AAAAAAAAAZk/WimKJl2bJwI/s1600-h/heapStackabreviado2.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sqe6D8p7OfI/AAAAAAAAAZk/WimKJl2bJwI/s320/heapStackabreviado2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379472856901695986" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"><br />Lembre-se que todo funcionário tem:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Oque é de direito ao cargo dele no caso : nome, salario e trabalhar()</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />E todo objeto Funcionário tem tudo que<span style="font-weight: bold;"> java.lang.Object </span>tem</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

                              <p>
                                Relação variável de referência e Objeto:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                <p>
                                  É aqui realmente que se encontra o Polimorfismo, de acordo com a palavra em si:<br /><span style="font-weight: bold;">Polimorfismo</span> = Muitas formas
                                </p>

                                <p>
                                  De acordo com a variável de referência você poderá acessar somente <span style="font-weight: bold;">OQUE FAZ PARTE DAQUELE TIPO DE OBJETO VEJAMOS:</p> 

                                  <p>
                                    Como Chefe é um Encarregado, ou seja é uma SubClasse da Classe Encarregado, Então isso é possível:
                                  </p>

                                  <p>
                                    </span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sqe9A7FibxI/AAAAAAAAAZ0/rLMyIQhK1Os/s1600-h/construtorPolimorfico.png"><img style="cursor: pointer; width: 320px; height: 143px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sqe9A7FibxI/AAAAAAAAAZ0/rLMyIQhK1Os/s320/construtorPolimorfico.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379476103475916562" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                    <p>
                                      Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                      <p>
                                        <span style="font-size:130%;">Oque acabamos de fazer?</p> 

                                        <p>
                                          </span></span><span><span style="font-size:130%;"><span style="font-size:100%;">Aqui temos um objeto do tipo Chefe porem a variável aponta para o objeto do tipo Encarregado, OU SEJA ela somente pode usar tudo que um Encarregado tem <br />Um <span style="font-weight: bold;">chefe</span> é um <span style="font-weight: bold;">Encarregado</span><br />Porem um <span style="font-weight: bold;">Encarregado</span> não é um <span style="font-weight: bold;">chefe</p> 

                                          <p>
                                            Vejamos:
                                          </p>

                                          <p>
                                            </span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqe-XNeXHOI/AAAAAAAAAZ8/yR6FGSNJmWM/s1600-h/heapStackabreviadoComVariavel.png"><img style="cursor: pointer; width: 320px; height: 216px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqe-XNeXHOI/AAAAAAAAAZ8/yR6FGSNJmWM/s320/heapStackabreviadoComVariavel.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379477585880620258" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                            <p>
                                              Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Se você tentar acessar:</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                              <p>
                                                </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">identificador.carroEmpresa = true;</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Dará Erro de Compilação,</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Pois A variável de referência é do tipo Encarregado, E ENCARREGADO não tem carro da Empresa.</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                <p>
                                                  </span><span style="color: rgb(0, 0, 0);font-family:arial;">Se você tentar acessar:</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                  <p>
                                                    </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">identificador.trabalhar();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Compilará Normalmente, </span><span style="color: rgb(0, 0, 0);font-family:arial;">Pois o método trabalhar é de Funcionário e a variavel de referência Aponta para o Encarregado do Objeto, e Encarregado é um </span><span style="color: rgb(0, 0, 0);font-family:arial;">Funcionário</span><span style="color: rgb(0, 0, 0);font-family:arial;">.</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                    <p>
                                                      Por isso chegamos a conclusão de:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:130%;"><span style="font-weight: bold;">Um objeto só tem uma forma porem a variável de referência pode apontar para qualquer forma dele.</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:130%;"></p> 

                                                      <p>
                                                        <span style="font-size:180%;"><br /></span></span></span></span>
                                                      </p>

                                                      <div style="text-align: center;">
                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:130%;"><span style="font-size:180%;">Sobrescrita e Polimorfismo:</span></span></span></span>
                                                      </div>

                                                      <p>
                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:130%;"><span style="font-size:180%;"><span style="font-size:100%;"><br />Muita atenção em Sobrescrita e Polimorfismo,<br /></span></span></span></span><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><br />Vejamos o exemplo:</p> 

                                                        <p>
                                                          public class <span style="font-weight: bold;">Funcionario</span>{
                                                        </p>

                                                        <p>
                                                          public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Funcionario</span>&rdquo;);
                                                        </p>

                                                        <p>
                                                          }
                                                        </p>

                                                        <p>
                                                          }
                                                        </p>

                                                        <p>
                                                          public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                        </p>

                                                        <p>
                                                          </span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;">public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Gerente</span>&rdquo;);</p> 

                                                          <p>
                                                            }</span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                            <p>
                                                              }
                                                            </p>

                                                            <p>
                                                              public class <span style="font-weight: bold;">TestClass</span>{
                                                            </p>

                                                            <p>
                                                              public static void <span style="font-weight: bold;">main</span>(String array [ ]){
                                                            </p>

                                                            <p>
                                                              <span style="font-weight: bold;">Funcionario</span> funcionario = new <span style="font-weight: bold;">Funcionario</span>();<br /><span style="font-weight: bold;">funcionario.metodo();</span>
                                                            </p>

                                                            <p>
                                                              <span style="font-weight: bold;">Gerente</span> gerente = new <span style="font-weight: bold;">Gerente</span>();<br /><span style="font-weight: bold;">gerente.metodo();</span>
                                                            </p>

                                                            <p>
                                                              }
                                                            </p>

                                                            <p>
                                                              }</span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                              <p>
                                                                </span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqpLALnrEJI/AAAAAAAAAaM/q7V2qePW0E4/s1600-h/heranca4.png"><img style="cursor: pointer; width: 320px; height: 203px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqpLALnrEJI/AAAAAAAAAaM/q7V2qePW0E4/s320/heranca4.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380195171338752146" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                <p>
                                                                  </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                  <p>
                                                                    Em </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">funcionario.metodo(); Aparecerá:<br />Funcionario<br /></span></span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                    <p>
                                                                      Em </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">gerente.metodo(); Aparecerá:<br />Gerente</p> 

                                                                      <p>
                                                                        Podemos ver dessa forma também:
                                                                      </p>

                                                                      <p>
                                                                        </span></span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqpSO04RN2I/AAAAAAAAAaU/tPCN5MTqIog/s1600-h/Exemplo07.png"><img style="cursor: pointer; width: 320px; height: 248px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqpSO04RN2I/AAAAAAAAAaU/tPCN5MTqIog/s320/Exemplo07.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380203119513778018" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                        <p>
                                                                          Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                                          <p>
                                                                            Porem isso não acontece aqui:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br /></span><br />Temos uma diferença seria quando existe Sobrescrita de método e Polimorfismo<span style="font-weight: bold;"><br /></span></p> 

                                                                            <p>
                                                                              public class <span style="font-weight: bold;">Funcionario</span>{
                                                                            </p>

                                                                            <p>
                                                                              public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Funcionario</span>&rdquo;);
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                            </p>

                                                                            <p>
                                                                              public void <span style="font-weight: bold;">metodo</span>(){<br />System.out.println(&ldquo;<span style="font-weight: bold;">Gerente</span>&rdquo;);
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              }
                                                                            </p>

                                                                            <p>
                                                                              </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">public class TestClass{</p> 

                                                                              <p>
                                                                                </span><span>public static void <span style="font-weight: bold;">main</span>(String array [ ]){</p> 

                                                                                <p>
                                                                                  <span style="font-weight: bold;">Funcionario</span> funcionario = new <span style="font-weight: bold;">Gerente</span>();<br />funcionario.<span style="font-weight: bold;">metodo</span>();
                                                                                </p>

                                                                                <p>
                                                                                  }
                                                                                </p>

                                                                                <p>
                                                                                  }</span><span style="font-weight: bold;"></p> 

                                                                                  <p>
                                                                                    Neste exemplo oque teremos na saída Padrão é:
                                                                                  </p>

                                                                                  <p>
                                                                                    Gerente
                                                                                  </p>

                                                                                  <p>
                                                                                    POR CAUSA DA SOBRESCRITA QUE ISSO ACONTECE
                                                                                  </p>

                                                                                  <p>
                                                                                    Em métodos sobrescritos na verdade obtém-se o comportamente associado ao objeto em tempo de EXECUÇÃO ou seja, invocamos o método do objeto gerente cujo sobrescreve o método da SuperClasse dele ou seja Funcionario.
                                                                                  </p>

                                                                                  <p>
                                                                                    PORTANTO CUIDADO COM INVOCAÇÃO DE MÉTODOS SOBRESCRITOS.
                                                                                  </p>

                                                                                  <p>
                                                                                    <span style="font-size:180%;"><br />Argumentos e Polimorfismo:</span></span><span><span style="font-size:180%;"><span style="font-size:100%;"></p> 

                                                                                    <p>
                                                                                      Você pode ter um Argumento de um tipo que seja uma SuperClasse e pode receber qualquer parâmetro que seja uma SubClasse dessa SuperClasse que esta como argumento.
                                                                                    </p>

                                                                                    <p>
                                                                                      <span style="font-weight: bold;">Vejamos:</span>
                                                                                    </p>

                                                                                    <p>
                                                                                      </span></span></span></span></span></span></span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqplh465tQI/AAAAAAAAAak/sHbgYoGIUuY/s1600-h/ateroot.png"><img style="cursor: pointer; width: 320px; height: 207px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sqplh465tQI/AAAAAAAAAak/sHbgYoGIUuY/s320/ateroot.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380224337737004290" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                      <p>
                                                                                        </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                        <p>
                                                                                          <span style="font-weight: bold;font-size:130%;">Vejamos em sintax java:</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                          <p>
                                                                                            </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Funcionario</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                            <p>
                                                                                              public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">argumento</span><span style="color: rgb(0, 0, 0);font-family:arial;">){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                              <p>
                                                                                                }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                <p>
                                                                                                  }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                  <p>
                                                                                                    public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;"> extends </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Funcionario</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                  </p>

                                                                                                  <p>
                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;"></span><span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                    <p>
                                                                                                      public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Chefe</span><span style="color: rgb(0, 0, 0);font-family:arial;"> extends </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Encarregado</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                    </p>

                                                                                                    <p>
                                                                                                      <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                      <p>
                                                                                                        public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                        <p>
                                                                                                          public static void main(String array[ ]){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                          <p>
                                                                                                            Chefe chefe = new <span style="font-weight: bold;">Chefe</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                            <p>
                                                                                                              Encarregado encarregado = new <span style="font-weight: bold;">Encarregado</span>();</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;"><br />Funcionario funcionario = new <span style="font-weight: bold;">Funcionario</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                              <p>
                                                                                                                chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                <p>
                                                                                                                  encarregado.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                  <p>
                                                                                                                    funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />funcionario.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                    <p>
                                                                                                                      }</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"></p> 

                                                                                                                      <p>
                                                                                                                        Quando fiz isso:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                        <p>
                                                                                                                          Chefe chefe = new <span style="font-weight: bold;">Chefe</span>();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                          <p>
                                                                                                                            Encarregado encarregado = new <span style="font-weight: bold;">Encarregado</span>();</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                            <p>
                                                                                                                              Funcionario funcionario = new <span style="font-weight: bold;">Funcionario</span>();
                                                                                                                            </p>

                                                                                                                            <p>
                                                                                                                              <span style="font-weight: bold;font-size:130%;">Obtive:</span>
                                                                                                                            </p>

                                                                                                                            <p>
                                                                                                                              </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqppticthgI/AAAAAAAAAas/JtjGi8z7q4w/s1600-h/maisnovo.png"><img style="cursor: pointer; width: 320px; height: 317px;" src="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqppticthgI/AAAAAAAAAas/JtjGi8z7q4w/s320/maisnovo.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380228935909737986" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                              <p>
                                                                                                                                Clique na imagem para ampliar</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

                                                                                                                                <p>
                                                                                                                                  POREM CUIDADO:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                  <p>
                                                                                                                                    Dentro do Frame </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Object</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">argumento</span><span style="color: rgb(0, 0, 0);font-family:arial;">) eu estou me referênciando ao Objeto como se fosse um Object, oque implica em:</p> 

                                                                                                                                    <p>
                                                                                                                                      <span style="font-weight: bold;">Nesse exemplo:</span>
                                                                                                                                    </p>

                                                                                                                                    <p>
                                                                                                                                      </span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                      <p>
                                                                                                                                        Eu obtive:
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqprwIxi4eI/AAAAAAAAAa0/tQRKURURQ6U/s1600-h/maisnovo2.png"><img style="cursor: pointer; width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqprwIxi4eI/AAAAAAAAAa0/tQRKURURQ6U/s320/maisnovo2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380231179580662242" border="0" /></a>
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Clique na imagem para ampliar</span>
                                                                                                                                      </p>

                                                                                                                                      <p>
                                                                                                                                        <span style="color: rgb(0, 0, 0);font-family:arial;">Oque Significa que eu SO TENHO ACESSO A PARTE java.lang.Object DO MEU OBJETO, ou seja desse Jeito eu não posso nem invocar:</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                        <p>
                                                                                                                                          argumento.metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Parametros</span><span style="color: rgb(0, 0, 0);font-family:arial;">); // Isso da erro de Compilação ja que argumento aponta PARA O TIPO java.lang.Object do Objeto.</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:130%;"></p> 

                                                                                                                                          <p>
                                                                                                                                            EM invocações:</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                            <p>
                                                                                                                                              chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                              <p>
                                                                                                                                                encarregado.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                <p>
                                                                                                                                                  funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />funcionario.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                  <p>
                                                                                                                                                    <span style="font-weight: bold;">Simplesmente passei o endereço de memória referente ao objeto, nesse exemplo seria assim:</span>
                                                                                                                                                  </p>

                                                                                                                                                  <p>
                                                                                                                                                    </span><span style="color: rgb(0, 0, 0);font-family:arial;">encarregado.metodo(<span style="font-weight: bold;">funcionario</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">encarregado.metodo(<span style="font-weight: bold;">0xA3</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">chefe.metodo(<span style="font-weight: bold;">encarregado</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />chefe.metodo(<span style="font-weight: bold;">0xA2</span>);</p> 

                                                                                                                                                    <p>
                                                                                                                                                      </span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">chefe</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">funcionario.metodo(<span style="font-weight: bold;">0xA1</span>);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                      <p>
                                                                                                                                                        <span style="font-weight: bold;font-size:180%;">Cast de Objetos:</span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                                                                                        <p>
                                                                                                                                                          Em algunas casos recebo como parametro uma referência de um objeto de uma SubClasse e como argumentos tenho uma classe que é SuperClasse dela, porem quero obter as funcionabilidades específicas da SubClasse, então posso fazer cast de OBJETOS.<br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                          <p>
                                                                                                                                                            <span style="font-weight: bold;">Vejamos o exemplo:</span><br /><span style="font-weight: bold;">Lembrando</span> que toda classe que não é declarado explicitamente nenhuma SuperClass tem java.lang.Object como SuperClasse Primária.
                                                                                                                                                          </p>

                                                                                                                                                          <p>
                                                                                                                                                            </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq4ztVaBaLI/AAAAAAAAAa8/J6gbXDBqBoc/s1600-h/heranca2.png"><img style="cursor: pointer; width: 320px; height: 135px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq4ztVaBaLI/AAAAAAAAAa8/J6gbXDBqBoc/s320/heranca2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381295458687740082" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                            <p>
                                                                                                                                                              Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                              <p>
                                                                                                                                                                public class <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                              </p>

                                                                                                                                                              <p>
                                                                                                                                                                public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object argumento</span>){<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado cast = (</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">) argumento;</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">cast.<span style="font-weight: bold;">e</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">xclusivo</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />}</p> 

                                                                                                                                                                <p>
                                                                                                                                                                  }
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  public class <span style="font-weight: bold;">Encarregado extends Funcionario</span>{
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  public void <span style="font-weight: bold;">exclusivo</span>(){<br />System.out.println(&ldquo;Metodo Exclusivo&rdquo;);<br />}
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  }<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                  <p>
                                                                                                                                                                    public class <span style="font-weight: bold;">TestClass</span>{
                                                                                                                                                                  </p>

                                                                                                                                                                  <p>
                                                                                                                                                                    public static void <span style="font-weight: bold;">main</span>(String array[ ]){<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado referencia = </span>new<span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado();</span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                    <p>
                                                                                                                                                                      }<br />}<br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:180%;"><span style="font-size:100%;"></p> 

                                                                                                                                                                      <p>
                                                                                                                                                                        Vejamos oque acontece quando o </span></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">); sobe o Frame </span><span style="color: rgb(0, 0, 0);font-family:arial;">.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">) na Stack de main:</p> 

                                                                                                                                                                        <p>
                                                                                                                                                                          Ao invocar </span><span style="color: rgb(0, 0, 0);font-family:arial;">referencia.metodo(</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">referencia</span><span style="color: rgb(0, 0, 0);font-family:arial;">) temos dentro do Frame:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;">public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object argumento</span>):</p> 

                                                                                                                                                                          <p>
                                                                                                                                                                            </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq47tPjS9ZI/AAAAAAAAAbE/Ray5S--RH7g/s1600-h/this.png"><img style="cursor: pointer; width: 320px; height: 172px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq47tPjS9ZI/AAAAAAAAAbE/Ray5S--RH7g/s320/this.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381304253209048466" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                            <p>
                                                                                                                                                                              Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-size:130%;">Nessa instrução:</p> 

                                                                                                                                                                              <p>
                                                                                                                                                                                </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">cast</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;"> = (</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">) argumento;</p> 

                                                                                                                                                                                <p>
                                                                                                                                                                                  Temos agora:
                                                                                                                                                                                </p>

                                                                                                                                                                                <p>
                                                                                                                                                                                  </span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5ABamwm7I/AAAAAAAAAbM/FyXV6IfDIvg/s1600-h/this2.png"><img style="cursor: pointer; width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5ABamwm7I/AAAAAAAAAbM/FyXV6IfDIvg/s320/this2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381308997820259250" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;">, Sendo a posição 0 da Local Variable a referência a Constant Pool, posição 1 </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">argumento , posição 2 </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">cast.</p> 

                                                                                                                                                                                  <p>
                                                                                                                                                                                    Perceba na imagem acima,</span><span> que a variavel argumento tem acesso somente a parte java.lang.Object do nosso Objeto encarregado ja a variavel cast tem acesso a Parte Encarregado do nosso Objeto, ou seja a variavel cast TEM ACESSO A TUDO DO OBJETO, por isso é possível invocar </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"> <span style="font-weight: bold;">exclusivo</span>().</p> 

                                                                                                                                                                                    <p>
                                                                                                                                                                                      </span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;">Operador instanceof:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                      <p>
                                                                                                                                                                                        Simplismente uma maneira de ter certeza que o cast do Objeto é aceitável, vamos supor:
                                                                                                                                                                                      </p>

                                                                                                                                                                                      <p>
                                                                                                                                                                                        </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5HGtrr3DI/AAAAAAAAAbU/6JZT2bAXqCo/s1600-h/heranca3.png"><img style="cursor: pointer; width: 320px; height: 135px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq5HGtrr3DI/AAAAAAAAAbU/6JZT2bAXqCo/s320/heranca3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381316785421933618" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                        <p>
                                                                                                                                                                                          Clique na imagem para ampliar</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                          <p>
                                                                                                                                                                                            public class <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                                                          </p>

                                                                                                                                                                                          <p>
                                                                                                                                                                                            public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object variavelArgumento</span>){
                                                                                                                                                                                          </p>

                                                                                                                                                                                          <p>
                                                                                                                                                                                            Encarregado variavelCast = (<span style="font-weight: bold;">Encarregado</span>) variavelArgumento;<br /><span style="font-weight: bold;">variavelCast.</span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">exclusivoEncarregado()</span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">;</span></p> 

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">Encarregado</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public<span style="font-weight: bold;"> void exclusivoEncarregado(){</span>
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">ClasseSolta</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public class <span style="font-weight: bold;">ClassTest</span>{
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              public static void <span style="font-weight: bold;">main</span>(String array[]){
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              <span style="font-weight: bold;">Encarregado</span> d = new <span style="font-weight: bold;">Encarregado</span>();<br />ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              <span style="font-weight: bold;">d.metodo(variavelSolta);</span>
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              }<br />}
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              Isso gera um<span>a</span><span style="font-weight: bold;"> Exception. Vejamos:</p> 

                                                                                                                                                                                              <p>
                                                                                                                                                                                                Dentro da </span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">ClassTest temos o método main nele , instanciamos um Objeto do tipo </span></span> <span style="color: rgb(0, 0, 0);font-family:arial;">ClasseSolta, como ClasseSolta é uma SubClasse de java.lang.Object Obtemos nessa instrução,</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();// Ou seja na instanciação do Objeto</p> 

                                                                                                                                                                                                <p>
                                                                                                                                                                                                  <span style="font-weight: bold;">isso:</span><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    </span></span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s1600-h/ObjetoClasseSolta.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s320/ObjetoClasseSolta.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381318423833898146" border="0" /></a>
                                                                                                                                                                                                  </p>

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;">Quando invocamos:</span>
                                                                                                                                                                                                  </p>

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">d.metodo(variavelSolta);</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                    <p>
                                                                                                                                                                                                      Sobe-se o frame do método de assinatura:</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">public void <span style="font-weight: bold;">metodo</span>(<span style="font-weight: bold;">Object variavelArgumento</span>)</p> 

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        </span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq6sSGctZQI/AAAAAAAAAbs/ADhgNsmsLCY/s1600-h/ProgramaProcesso2.png"><img style="cursor: pointer; width: 320px; height: 263px;" src="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sq6sSGctZQI/AAAAAAAAAbs/ADhgNsmsLCY/s320/ProgramaProcesso2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381428031722972418" border="0" /></a>
                                                                                                                                                                                                      </p>

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        <span style="font-weight: bold;">Clique na imagem para ampliar</span>
                                                                                                                                                                                                      </p>

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Então verfica-se o seguinte,<br /><span style="font-weight: bold;">variavelSolta é do tipo Object? </span></p> 

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          Sim variavelSolta tem uma referência a um objeto do tipo Object dentro dela também ou seja:
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s1600-h/ObjetoClasseSolta.png"><img style="cursor: pointer; width: 320px; height: 260px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5ImFPibKI/AAAAAAAAAbc/4ZIiMyiO39c/s320/ObjetoClasseSolta.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381318423833898146" border="0" /></a>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          Seguindo Instruções:<br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">Encarregado <span style="font-weight: bold;">variavelCast</span> = (<span style="font-weight: bold;">Encarregado</span>) <span style="font-weight: bold;">variavelArgumento</span>;<br />Da para a </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">variavelCast apontar para a parte Encarregado do objeto ao qual </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">variavelArgumento tem uma referência?</span></span>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq6tUoBA5NI/AAAAAAAAAb0/vRzuxha-hco/s1600-h/variavelArgumento.png"><img style="cursor: pointer; width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq6tUoBA5NI/AAAAAAAAAb0/vRzuxha-hco/s320/variavelArgumento.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381429174604981458" border="0" /></a>
                                                                                                                                                                                                        </p>

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">Não,</span> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">variavelArgumento é do tipo ClasseSolta que é uma SubClasse de java.lang.Object logo não tem um objeto do tipo Encarregado. Ate poderiamos fazer um cast para ClasseSolta.</p> 

                                                                                                                                                                                                          <p>
                                                                                                                                                                                                            <span style="font-weight: bold;">Veja como o compilador tentar ver:</span>
                                                                                                                                                                                                          </p>

                                                                                                                                                                                                          <p>
                                                                                                                                                                                                            </span><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5KU4RXzKI/AAAAAAAAAbk/-Xbeg21M5Os/s1600-h/ObjetoClasseSolta2.png"><img style="cursor: pointer; width: 320px; height: 191px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sq5KU4RXzKI/AAAAAAAAAbk/-Xbeg21M5Os/s320/ObjetoClasseSolta2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5381320327317408930" border="0" /></a> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"></p> 

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              Clique na imagem para ampliar,- Houve a tentativa de fazer cast para que a </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">variavelCast</span></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> aponte para a parte Encarregado do objeto</span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;">porem o objeto</span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:100%;"> é do tipo java.lang.Object e ClasseSolta</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">, como vou achar algo que ela não tem?</span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                </span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;"><br />Agora se fizer isso:<br /></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Funcionario</span>{</span>
                                                                                                                                                                                                              </p>

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                <span style="color: rgb(0, 0, 0);font-family:arial;">public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(Object variavelArgumento){</span>
                                                                                                                                                                                                              </p>

                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                <span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">if</span>(variavelArgumento </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">instanceof</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Funcionario){<br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;">Encarregado variavelCast = (Encarregado) variavelArgumento;<br /></span> <span style="color: rgb(0, 0, 0);font-family:arial;">variavelCast.exclusivoFuncionario();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  }</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Encarregado</span> extends <span style="font-weight: bold;">Funcionario</span>{</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">public void <span style="font-weight: bold;">exclusivoFuncionario</span>(){</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span>
                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                  <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                    public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClasseSolta</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                    <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                      public class </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;">{</span>
                                                                                                                                                                                                                    </p>

                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                      <span style="color: rgb(0, 0, 0);font-family:arial;">public static void <span style="font-weight: bold;">main</span>(String array[]){</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                        Encarregado <span style="font-weight: bold;">d</span> = new <span style="font-weight: bold;">Encarregado</span>();</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                        <p>
                                                                                                                                                                                                                          ClasseSolta <span style="font-weight: bold;">variavelSolta</span> = new ClasseSolta();</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;"><br />d.metodo(variavelSolta);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                            }</span>
                                                                                                                                                                                                                          </p>

                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                            <span style="color: rgb(0, 0, 0);font-family:arial;">}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                            <p>
                                                                                                                                                                                                                              Reparte que em </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">ClassTest</span><span style="color: rgb(0, 0, 0);font-family:arial;"> invocamos:</span> <span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;"><br />d.metodo(variavelSolta);</span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />Sobe-se o frame do metodo de assinatura:</span> <span style="color: rgb(0, 0, 0);font-family:arial;">public void </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">metodo</span><span style="color: rgb(0, 0, 0);font-family:arial;">(Object variavelArgumento)</p> 

                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                Faz-se a verificação, o objeto </span><span style="color: rgb(0, 0, 0);font-family:arial;">ClasseSolta a qual a variavel de referencia </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">variavelSolta<br />aponta é do tipo Object também? SIM!</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                  Então entra-se na lógica do método:
                                                                                                                                                                                                                                </p>

                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                  </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">if</span>(variavelArgumento </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">instanceof</span><span style="color: rgb(0, 0, 0);font-family:arial;"> Funcionario)</p> 

                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                    variavelArgumento aponta para um objeto do tipo ClasseSolta, essa ClasseSolta é uma SubClasse de Funcionario?<br />A resposta é não, porem existe uma lógica de tratamento então simplesmente o programa não executa o bloco de código do if, <span style="font-weight: bold;">porem NÃO DA EXCEPTION.</p> 

                                                                                                                                                                                                                                    <p>
                                                                                                                                                                                                                                      </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Dicas sobre cast:</span></p> 

                                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                                        1 &#8211; Uma &ldquo;Promoção&rdquo; de objetos é permitida sem nenhum operador de cast,Sendo Funcionario a SuperClasse Direta de Encarregado, vejamos:
                                                                                                                                                                                                                                      </p>

                                                                                                                                                                                                                                      <p>
                                                                                                                                                                                                                                        </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Funcionario</span>{</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                        <p>
                                                                                                                                                                                                                                          }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                          <p>
                                                                                                                                                                                                                                            </span><span style="color: rgb(0, 0, 0);font-family:arial;">public class <span style="font-weight: bold;">Encarregado extends Funcionario</span>{</p> 

                                                                                                                                                                                                                                            <p>
                                                                                                                                                                                                                                              }</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                public class <span style="font-weight: bold;">TestClass</span>{
                                                                                                                                                                                                                                              </p>

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                public static void <span style="font-weight: bold;">main</span>(String array[ ]){
                                                                                                                                                                                                                                              </p>

                                                                                                                                                                                                                                              <p>
                                                                                                                                                                                                                                                </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Funcionario referencia = </span>new<span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Encarregado();</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                                <p>
                                                                                                                                                                                                                                                  }<br />}</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    2 &#8211; Para asseguar que não haja exception, use instanceof antes de cast
                                                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    <span style="font-weight: bold;">&#8211; Muito CUIDADO AO TER HERANÇA POLIMORFISMO E SOBRESCRITA DE MÉTODOS.</span>
                                                                                                                                                                                                                                                  </p>

                                                                                                                                                                                                                                                  <p>
                                                                                                                                                                                                                                                    </span>
                                                                                                                                                                                                                                                  </p>

Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento

Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento. Linguagem Java.
Quais são os Operadores em java?
Source: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/opsummary.html

Simple Assignment Operator

= Simple assignment operator

Arithmetic Operators

+ Additive operator (also used for String concatenation)
– Subtraction operator
* Multiplication operator
/ Division operator
% Remainder operator

Unary Operators

+ Unary plus operator; indicates positive value (numbers are positive without this, however)
– Unary minus operator; negates an expression
++ Increment operator; increments a value by 1
– Decrement operator; decrements a value by 1
! Logical compliment operator; inverts the value of a boolean

Equality and Relational Operators

== Equal to
!= Not equal to
> Greater than
>= Greater than or equal to
Conditional Operators

Condition Operators

&& Conditional-AND
|| Conditional-OR
?: Ternary (shorthand for if-then-else statement)

Type Comparison Operator

<p>
  instanceof Compares an object to a specified type
</p>

<p>
  </font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="3" face="arial">Bitwise and Bit Shift Operators</font><font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

  <p>
    ~ Unary bitwise complement<br />> Signed right shift<br />>>> Unsigned right shift<br />& Bitwise AND<br />^ Bitwise exclusive OR<br />| Bitwise inclusive OR
  </p>

  <p>
    </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Precedência de Operadores em java:</font><br />Source: <a rel="nofollow" target="_blank" href="http://www.uni-bonn.de/~manfear/javaoperators.php">http://www.uni-bonn.de/~manfear/javaoperators.php</a></p> 

    <p>
      </font>
    </p>

    <table face="arial" style="color: rgb(0, 0, 0); width: 610px; height: 33px;" border="1" cellpadding="4" cellspacing="0">
      <tr valign="top">
        <td width="25%">
          <p align="center">
            <font size="3"><strong>Prioridade</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3"><strong>Operador</strong></font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3"><strong>Operação</strong></font>
          </p>
        </td>
      </tr>
    </table>

    <table face="arial" style="color: rgb(0, 0, 0); width: 609px; height: 1135px;" border="1" cellpadding="4" cellspacing="0">
      <col width="64"> <col width="107"> <col width="85"> <tr valign="top">
        <td rowspan="3" width="25%">
          <p align="center">
            <font size="3"><strong><br />1</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3">[ ]</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">array index</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">( )</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">method call</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">.</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">member access &#8211; 1<br /></font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td rowspan="7" width="25%">
          <p align="center">
            <font size="3"><strong><br />2</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3">++</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">pre- or postfix increment</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">&ndash;</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">pre- or postfix decrement</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">+ &#8211;</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">unary plus, minus</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">~</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">bitwise NOT</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">!</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">boolean (logical) NOT</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">(type)</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">type cast</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">new</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">object creation &#8211; 2<br /></font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td sdval="3" sdnum="1033;" width="25%">
          <p align="center">
            <font size="3"><strong>3</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3">* / %</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">multiplication, division, remainder</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td rowspan="2" sdval="4" sdnum="1033;" width="25%">
          <p align="center">
            <font size="3"><strong>4</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3">+ &#8211;</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">addition, substraction</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">+</font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">string concatenation -4<br /></font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td rowspan="3" width="25%">
          <p align="center">
            <font size="3"><strong><br />5</strong></font>
          </p>
        </td>

        <td width="42%">
          <p align="center">
            <font size="3"></font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">signed bit shift left</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">>></font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">signed bit shift right</font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td width="42%">
          <p align="center">
            <font size="3">>>></font>
          </p>
        </td>

        <td width="33%">
          <p align="center">
            <font size="3">unsigned bit shift right &#8211; 5<br /></font>
          </p>
        </td>
      </tr>

      <tr valign="top">
        <td rowspan="3" width="25%">
          <p align="center">
            <font size="3"><strong></p> 

            <p>
              6</strong></font>
            </p></td> 

            <td width="42%">
              <p align="center">
                <font size="3"></font>
              </p>
            </td>

            <td width="33%">
              <p align="center">
                <font size="3">less than, less than or equal to</font>
              </p>
            </td></tr> 

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">> >=</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">greater than, greater than or equal to</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">instanceof</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">reference test &#8211; 6<br /></font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td rowspan="2" sdval="7" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>7</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">==</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">equal to</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">!=</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">not equal to</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td rowspan="2" sdval="8" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>8</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">&</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">bitwise AND</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">&</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">boolean (logical) AND</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td rowspan="2" sdval="9" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>9</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">^</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">bitwise XOR</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">^</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">boolean (logical) XOR</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td rowspan="2" sdval="10" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>10</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">|</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">bitwise OR</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">|</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">boolean (logical) OR</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td sdval="11" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>11</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">&&</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">boolean (logical) AND</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td sdval="12" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>12</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">||</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">boolean (logical) OR</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td sdval="13" sdnum="1033;" width="25%">
                <p align="center">
                  <font size="3"><strong>13</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">? :</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">conditional &#8211; 13<br /></font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td rowspan="2" width="25%">
                <p align="center">
                  <font size="3"><strong><br />14</strong></font>
                </p>
              </td>

              <td width="42%">
                <p align="center">
                  <font size="3">=</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">assignment</font>
                </p>
              </td>
            </tr>

            <tr valign="top">
              <td width="42%">
                <p align="center">
                  <font size="3">*= /= += -= %= </font>
                </p>

                <p align="center">
                  <font size="3"><br /></font>
                </p>

                <p align="center">
                  <font size="3">>= >>>= </font>
                </p>

                <p align="center">
                  <font size="3"><br /></font>
                </p>

                <p align="center">
                  <font size="3">&= ^= |=</font>
                </p>
              </td>

              <td width="33%">
                <p align="center">
                  <font size="3">combinated assignment </font>
                </p>

                <p align="center">
                  <font size="3"><br /></font>
                </p>

                <p align="center">
                  <font size="3">(operation and assignment)</font>
                </p>
              </td>
            </tr></tbody> </table> 

            <p>
              <font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

              <p>
                </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

                <p>
                  <font size="4"><font style="font-weight: bold;">Oque tudo isso significa?</font></font>
                </p>

                <h2>
                  Java Operadores Prioridade de Operadores Pré/Pos Incremento/Decremento
                </h2>

                <p>
                  Que a precedência de Operadores é IMPORTANTE, pois dependendo muda o resultado.
                </p>

                <p>
                  int c = 25 &#8211; 5 * 4 / 2 &#8211; 10 + 4; c aqui recebe 34
                </p>

                <p>
                  int c = 25 &#8211; ((5 * 4) /2)) &#8211; 10 + 4; c aqui recebe 9
                </p>

                <p>
                  <font style="font-weight: bold;">Quero abrir um espaço para falando Somente sobre o Operador de Incremento e Decremento(++ e &ndash;):</font><br />&#8211; Quando estão sozinhos, eles são a mesma coisa que acrescentar 1 Porem:
                </p>

                <p>
                  <font style="font-weight: bold;">Pré Incremento:</font> Incrementa quando aparece o operador<br /><font style="font-weight: bold;">Pós Incremento:</font> Incrementa somente na Instrução de baixo
                </p>

                <p>
                  <font style="font-weight: bold;">Pré Decremento:</font> Decrementa quando aparece o operador<br /><font style="font-weight: bold;">Pós Decremento: </font>Decrementa somente na Instrução de baixo
                </p>

                <p>
                  <font style="font-weight: bold;" size="4">Exemplo:</font>
                </p>

                <p>
                  int b = 2;<br />++b; // Pré Incremento , <font style="font-weight: bold;">b = 3</font>
                </p>

                <p>
                  int b = 2;<br />b++; //Pos Incremento, <font style="font-weight: bold;">b = 2</font><br />int a = b; //<font style="font-weight: bold;">Aqui o b vale 3</font>
                </p>

                <p>
                  <font style="font-style: italic;">Mesma coisa com Decremento.</font>
                </p>

                <p>
                  <font style="font-weight: bold;" size="4">AGORA QUANDO ELE são usados com algum Operador, a coisa muda.</font>
                </p>

                <p>
                  int b = 2;<br />int c = ++b;// <font style="font-weight: bold;">b = 3, c = 3.</font>
                </p>

                <p>
                  int b = 2;<br />int c = b++;//<font style="font-weight: bold;"> c = 2, b =3(Somente na proxima Instrução)</font><br />Proxima Instrução
                </p>

                <p>
                  <font style="font-weight: bold;">Explicando oque aconteceu:</font>
                </p>

                <p>
                  Em:
                </p>

                <p>
                  int b = 2;<br />int c = ++b;
                </p>

                <p>
                  Temos em bytecode:
                </p>

                <p>
                  0: iconst_2<br />1: istore_1<br />2: iinc 1, 1<br />5: iload_1<br />6: istore_2<br /><font style="font-weight: bold;">*As explicações estão no tutorial: Básico sobre bytecodes</font>
                </p>

                <p>
                  Suponto que estamos usando o método main, veremos oque ocorre no Frame, Lembre-se que o index 0 da local variable é uma Referência a Constant Pool
                </p>

                <p>
                  <font style="font-weight: bold;">0: iconst_2</font>:<br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp7pT4JwE9I/AAAAAAAAAKs/Wvk3_OkiCw0/s1600-h/OperandoStackLocalVariable1.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable1-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991532827022290" border="0" /></a><br /><font style="font-weight: bold;">Clique na imagem para ampliar</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

                  <p>
                    <font style="font-weight: bold;">1: istore_1</font>
                  </p>

                  <p>
                    </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7pRcQT5HI/AAAAAAAAAKk/218gOVFU0KA/s1600-h/OperandoStackLocalVariable2.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable2-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991490978604146" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Clique na imagem para ampliar</font></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">2: iinc 1, 1</font></p> 

                    <p>
                      </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7pOjs43eI/AAAAAAAAAKc/KyJFytg_WvQ/s1600-h/OperandoStackLocalVariable3.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable3-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991441437908450" border="0" /></a></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Clique na imagem para ampliar</font></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">5: iload_1</font></p> 

                      <p>
                        </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7pMLz66YI/AAAAAAAAAKU/vKaHT__i1Bk/s1600-h/OperandoStackLocalVariable4.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable4-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991400665213314" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Clique na imagem para ampliar</font></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">6: istore_2</font></p> 

                        <p>
                          </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7pJePFjjI/AAAAAAAAAKM/PH_FaoUqOPI/s1600-h/OperandoStackLocalVariable5.png"><img style="cursor: pointer; width: 262px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable5-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991354071387698" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Clique na imagem para ampliar</font></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br />Sendo b index 1 da Local Variable, c index 2 da Local Variable, temos b e c com o valor de 3.</p> 

                          <p>
                            <font size="4"><font style="font-weight: bold;">Veremos o próximo:</font></font>
                          </p>

                          <p>
                            int b = 2;<br />int c = b++;
                          </p>

                          <p>
                            <font style="font-weight: bold;">Temos em Bytecode:</font>
                          </p>

                          <p>
                            0: iconst_2<br />1: istore_1<br />2: iload_1<br />3: iinc 1, 1<br />6: istore_2<br /><font style="font-weight: bold;">0: iconst_2:</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7o2_rtagI/AAAAAAAAAJc/zTzleUYmGLM/s1600-h/OperandoStackLocalVariable11.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable11-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991036632295938" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

                            <p>
                              <font style="font-weight: bold;">1: istore_1</font>
                            </p>

                            <p>
                              </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp7oz0uMiGI/AAAAAAAAAJU/7aGaRIWnAHM/s1600-h/OperandoStackLocalVariable12.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable12.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990982150326370" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">2: iload_1</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp7otsEF_5I/AAAAAAAAAJE/QPhYHFpnnHo/s1600-h/OperandoStackLocalVariable13.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable13.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990876747038610" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">3: iinc 1, 1</font></p> 

                              <p>
                                </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7oqSdlwQI/AAAAAAAAAI8/rjYBJVvXCoY/s1600-h/OperandoStackLocalVariable14.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable14.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990818335047938" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">6: istore_2</font></p> 

                                <p>
                                  </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7o6bIZG4I/AAAAAAAAAJk/5W3wqsZUYss/s1600-h/OperandoStackLocalVariable10.png"><img style="cursor: pointer; width: 262px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable10-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991095539964802" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br />Sendo b index 1 da Local Variable, c index 2 da Local Variable, temos b = 3 e c com o valor de 2.</p> 

                                  <p>
                                    <font style="font-weight: bold;">E se tivermos mais de um operador Unário?</font>
                                  </p>

                                  <p>
                                    int b = 3;<br />int c = b++ + 1;
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">Vamos em ordem de Precedência de Operadores:</font><br />1 &#8211; Primeiro Operador de Pos Incremento:<br />c = 3 + 1 = 4;<br />b = 4;
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">Outro Exemplo:</font>
                                  </p>

                                  <p>
                                    int b = 2;<br />int c = b++ + ++b;<br /><font style="font-weight: bold;">Vamos em ordem de Precedência de Operadores:</font>
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">1 &#8211; Primeiro Operador de Pos Incremento:</font><br />int c = 2 + ++b; -> Aqui quando ele carrega o b, ele ja tem o valor de 3<br />pois ja é a próxima instrução<br />b = 3;(na Próxima instrução)
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">2 &#8211; Primeiro Operador de Pos Incremento:</font><br />int c = 2 + 4 = 6<br />b = 4;
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">Em bytecode Temos: Sendo b index 1, c index 2 da Local Variable</font>
                                  </p>

                                  <p>
                                    Code:<br />0: iconst_2<br />1: istore_1<br />2: iload_1<br />3: iinc 1, 1<br />6: iinc 1, 1<br />9: iload_1<br />10: iadd<br />11: istore_2
                                  </p>

                                  <p>
                                    <font style="font-weight: bold;">0: iconst_2</font>
                                  </p>

                                  <p>
                                    </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7pGui3cEI/AAAAAAAAAKE/9S-IouwE-XA/s1600-h/OperandoStackLocalVariable6.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable6-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991306909708354" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">1: istore_1</font></p> 

                                    <p>
                                      </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7pDd9DPwI/AAAAAAAAAJ8/4r5_zHPXotg/s1600-h/OperandoStackLocalVariable7.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable7-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991250916523778" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">2: iload_1</font></p> 

                                      <p>
                                        </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7pAuf0LRI/AAAAAAAAAJ0/icgOW7YrQ7o/s1600-h/OperandoStackLocalVariable8.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable8-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991203817696530" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">3: iinc 1, 1</font></p> 

                                        <p>
                                          </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7o9dJrrAI/AAAAAAAAAJs/y_TR9M4iQME/s1600-h/OperandoStackLocalVariable9.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable9-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376991147621854210" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">6: iinc 1, 1</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7onGudmPI/AAAAAAAAAI0/ZeMENSxwbZo/s1600-h/OperandoStackLocalVariable15.png"><img style="cursor: pointer; width: 264px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable15.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990763644983538" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">9: iload_1</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7ojtbK8AI/AAAAAAAAAIs/YG6di4eNGZ4/s1600-h/OperandoStackLocalVariable16.png"><img style="cursor: pointer; width: 262px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable16.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990705313574914" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;">10: iadd</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7ogOI02PI/AAAAAAAAAIk/eQRgPxCBYwY/s1600-h/OperandoStackLocalVariable17.png"><img style="cursor: pointer; width: 262px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable17.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990645375523058" border="0" /></a></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"></p> 

                                          <p>
                                            <font style="font-weight: bold;">11: istore_2</font><br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7ob6adCCI/AAAAAAAAAIc/4bYVhFmjB0Q/s1600-h/OperandoStackLocalVariable18.png"><img style="cursor: pointer; width: 262px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable18.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376990571361273890" border="0" /></a></font>
                                          </p>

                                          <p>
                                            <span style="font-weight: bold; font-family: arial; color: rgb(0, 0, 0);">Curiosidade:</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);"> O Operador<span style="font-weight: bold;"> %</span> remain é chamado <span style="font-weight: bold;">MOD</span>.</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">Exemplo:</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">2 % 2 = 0 pois a conta é exata</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">3 % 2 = 1 pois para a conta dar certa so posso ir ate o 2</span><br style="font-family: arial; color: rgb(0, 0, 0);" /><span style="font-family: arial; color: rgb(0, 0, 0);">1 % 2 = 1 quando é menor é sempre ele mesmo</span>
                                          </p>

                                          <p>
                                            <font style="color: rgb(0, 0, 0);" size="3" face="arial"><br />Bom basicamente era essa a intenção, Próximo Post, cast,Promoção em tipos primitivos.<br /><font style="font-weight: bold;">Cya DUDES!</font></p> 

                                            <p>
                                              </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"></font>
                                            </p>

Java Métodos Frames Parametros Argumentos

Java Métodos Frames Parametros Argumentos. Linguagem Java.

Sumário: Básico sobre Processos, Stack,Operand Stack Local Variable, Referência a Runtime Constant Pool,Declarando métodos, Parametros, Argumentos, Retorno de Frames

Grande parte do seu código, deve ser separado por tarefas fazendo com que crie-se um programa melhor Orientado a Objetos.

Antes de tudo, Terei que introduzir alguns conceitos:

Oque é um processo?
Um programa em execução.

Oque temos em um processo?
Todo processo tem ao menos uma thread.

<p>
  O que temos em uma thread?</font></font>
</p>

<p>
  <font style="color: rgb(0, 0, 0);">Basicamente uma Stack, que é um empilhador de frames.Métodos quando são invocados, sobe -se uma FRAME NA STACK.Então em um processo temos ao menos uma thread, cada thread tem uma Stack.</font> <font style="font-weight: bold;" size="4"> <font style="color: rgb(0, 0, 0);"></p> 

  <p>
    Oque temos em uma Stack?</font></font><br /><font style="color: rgb(0, 0, 0);">Basicamente Frames(métodos quando são invocados).</font> <font style="font-weight: bold;" size="4"><font style="color: rgb(0, 0, 0);"></p> 

    <p>
      Oque eu preciso para que um programa seja um processo?</font></font>
    </p>

    <p>
      <font style="color: rgb(0, 0, 0);">De um método que será executado, que ficará no fim da STACK -Normalmente main &#8211; É assim que a JVM sabe quando executar um método, é sempre oque estiver no TOP da STACK, Só temos 2 métodos capazes de fazer isso, e um deles é o main.</font> <font style="color: rgb(0, 0, 0); font-weight: bold;"></p> 

      <p>
        Oque são Frames?</font> <font style="color: rgb(0, 0, 0);"><br />Métodos em execução.</font> <font style="color: rgb(0, 0, 0); font-weight: bold;"></p> 

        <p>
          Oque temos em Frames?</font> <font style="color: rgb(0, 0, 0);"><br />Toda Frame tem:</font><br /><font style="color: rgb(0, 0, 0);">&#8211; <font style="font-weight: bold;">Local Variable </font>&#8211; São as variaveis locais ao Frame(Ou seja variáveis locais ao método em execução)</font><br /><font style="color: rgb(0, 0, 0);">&#8211; <font style="font-weight: bold;">Operand Stack </font>&#8211; Todas as operações são feitas aqui, é onde trabalhamos em java normalmente também é usada para receber retornos de métodos e para preparar parametros para passar para argumentos.</font><br /><font style="color: rgb(0, 0, 0);">&#8211; <font style="font-weight: bold;">Uma referência a Runtime Constant Pool</font> -> É A posição 0 da Local Variable.</font> <font style="color: rgb(0, 0, 0);"></p> 

          <p>
            Somente importante lembrar é que existe alguns modelos de implementação da JVM, onde pode ser visto no tutorial de threads, nesse caso estou assumindo que a JVM esta usando threads nativas com modelo ROUND-ROBIN ou seja do S.O. Nativo. Normalmente as threads são encapsuladas pela JVM, ou seja não ficam espostas ao KERNEL Para quem esta estudando agora não é interessante saber isso, para quem ja tem um carga em cima de java isso é bem importante.VEJA O TUTORIAL threads.</font><br /><font style="color: rgb(0, 0, 0);">&#8211; Uma stack também armazena Parametros quando estão preparados para contrabater com os argumentos do Frame.</font>
          </p>

          <p>
            <font style="font-weight: bold;" size="4"><font style="color: rgb(0, 0, 0);">Como Declarar um método?</font></font> <font style="color: rgb(0, 0, 0);"><br />Tudo entre [] é opcional:</font> <font style="color: rgb(0, 0, 0);"></p> 

            <p>
              [modificador_de_acesso] tipo_retorno identificador([argumentos]){
            </p>

            <p>
              </font> <font style="color: rgb(0, 0, 0);">bloco_de_codigo</font> <font style="color: rgb(0, 0, 0);"></p> 

              <p>
                }</font> <font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;">*modificador_de_acesso </font>-> São varias palavras reservadas(keywords) que indicam como o método sera acessado, é opcional</font><br /><font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;"><br />*tipo_retorno</font> -> É o retorno que seu método terá a quem invocou(chamou) ele, se não quiser nenhum tipo de retorno deve-se usar a keyword <font style="font-weight: bold;">void</font>.So podemos ter um tipo_de_retorno e se for diferente de void, deve-se usar a keyword <font style="font-weight: bold;">return</font> dentro do bloco_de_codigo do método.</font> <font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;"></p> 

                <p>
                  *identificador </font>-> O nome que você atribui ao método, não deve ser nenhuma keyword.</font> <font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;"></p> 

                  <p>
                    *([argumentos]) </font>-> È uma lista de variáveis que o método aceita como parametro, se nenhum argumento for necessario, apenas não especifique nada,<font style="font-weight: bold;"> Perceba que os Parenteses ( ) não são OPCIONAIS</font> apenas os Argumentos são.</font> <font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;"></p> 

                    <p>
                      *bloco_de_codigo</font> -> São o conjunto de instruções feitas pelo método.</font>
                    </p>

                    <p>
                      <font style="font-weight: bold;" size="4"><font style="color: rgb(0, 0, 0);">Temos 2 tipos de métodos:</font></font><br /><font style="color: rgb(0, 0, 0);">&#8211; O chamador &#8211; Um método que invoca outra</font> <font style="color: rgb(0, 0, 0);"><br />&#8211; O trabalhador &#8211; O método que trabalha a quem invocou ele</font>
                    </p>

                    <p>
                      <font style="font-weight: bold;" size="4"><font style="color: rgb(0, 0, 0);">Invocando métodos:</font></font> <font style="color: rgb(0, 0, 0);"> Invocar método é o ato de chamar o método, dizer olhar ta na hora de trabalhar.Nesse exemplo usaremos uma classe com main(ou seja um processo), no main() instanciaremos a classe e invocaremos um método do objeto, Vejamos primeiro em código java:</font> <font style="color: rgb(0, 0, 0);"></p> 

                      <p>
                        public class <font style="font-weight: bold;">MinhaClasse</font>{</font> <font style="color: rgb(0, 0, 0);"></p> 

                        <p>
                          public static void <font style="font-weight: bold;">main</font>(String array[]){</font> <font style="color: rgb(0, 0, 0);"></p> 

                          <p>
                            }</font>
                          </p>

                          <p>
                            <font style="color: rgb(0, 0, 0);">}</font> <font style="color: rgb(0, 0, 0);"></p> 

                            <p>
                              Supondo que executemos assim, acabamos de criar um programa, que será um processo pois tem o main() no fim da Stack. Todo processo tem uma thread, toda thread tem uma Stack, e toda Stack tem um método que é executado, vejamos:
                            </p>

                            <p>
                              </font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJovlqTF5I/AAAAAAAAARs/9sHYq6i4dQ0/s1600-h/ProgramaProcesso.png"><img style="cursor: pointer; width: 206px; height: 320px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377976071806457746" border="0" /></a>
                            </p>

                            <h2>
                              Java Métodos Frames Parametros Argumentos
                            </h2>

                            <p>
                              <font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                              <p>
                                Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                <p>
                                  </font><font style="color: rgb(0, 0, 0);" face="arial"></font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial">Agora vamos instanciar um objeto:</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                  <p>
                                    public class <font style="font-weight: bold;">MinhaClasse</font>{</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                    <p>
                                      public void <font style="font-weight: bold;">metodo</font>(){</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                      <p>
                                        </font><font style="color: rgb(0, 0, 0);" face="arial"></font><font style="color: rgb(0, 0, 0);" face="arial">}</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                        <p>
                                          </font><font style="color: rgb(0, 0, 0);" face="arial">public static void main(String array[]){</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                          <p>
                                            </font><font style="color: rgb(0, 0, 0);" face="arial">MinhaClasse d = </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">new</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0);" face="arial">();</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                            <p>
                                              </font><font style="color: rgb(0, 0, 0);" face="arial">d.metodo(); //Invocação do método-</font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"> (main é Chamador e, metodo() é trabalhador)</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                              <p>
                                                }</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                <p>
                                                  }</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                  <p>
                                                    <font style="font-weight: bold;">Vejamos oque acontece no ponto de invocação do método(ou seja d.metodo();):</p> 

                                                    <p>
                                                      </font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJqFjG8KMI/AAAAAAAAAR0/eG_B2mWHhUc/s1600-h/ProgramaProcesso2.png"><img style="cursor: pointer; width: 320px; height: 279px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso2-3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377977548590033090" border="0" /></a> <font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                      <p>
                                                        Clique na imagem para ampliar, Lembre-se que o método que é executado é sempre aquele que estiver no TOP da STACK, ou seja nesse caso é o metodo(). Vejamos oque lemos em cima nesse tutorial: Todo processo tem uma thread, toda thread tem uma STACK, toda Stack tem frames. Um frame é um método em execução, UM frame tem Local Variable, Operand Stack e uma referência a Runtime Constant Pool.</font> <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial"></p> 

                                                        <p>
                                                          Invocando método da mesma classe:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> Apenas inclua o nome do método e os parametros.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">Nesse caso abaixo, metodo() invoca metodo2();</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">&#8211; EM questão de Frames é a mesma coisa que invocação de métodos de classes Externas</p> 

                                                          <p>
                                                            Vejamos</font><font style="color: rgb(0, 0, 0);" face="arial">:</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                            <p>
                                                              public class </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0);" face="arial">{</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                              <p>
                                                                public void </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">metodo</font><font style="color: rgb(0, 0, 0);" face="arial">(){</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">metodo2</font><font style="color: rgb(0, 0, 0);" face="arial">(); //metodo() é trabalhador de main e, chamador de metodo2()</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">//bloco_de_codigo</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">}</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                <p>
                                                                  public void <font style="font-weight: bold;">metodo2</font>(){<br />//é trabalhador de metodo()</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> //bloco_de_codigo </font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                  <p>
                                                                    }</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                    <p>
                                                                      public static void main(String array[]){</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                      <p>
                                                                        MinhaClasse d = </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">new</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0);" face="arial">();</font> <font style="color: rgb(0, 0, 0);" face="arial"><br />d.</font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">metodo</font><font style="color: rgb(0, 0, 0);" face="arial">(); //Invocação do método (main é Chamador e, metodo() é trabalhador)</font> <font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                        <p>
                                                                          //bloco_de_codigo</font> <font style="color: rgb(0, 0, 0);" face="arial"> </font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                          <p>
                                                                            }</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">}</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                            <p>
                                                                              Quando uma Instancia da JVM e</font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">stiver executando metodo2(), oque teremos</font><font style="color: rgb(0, 0, 0);" face="arial"> ?</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> UM processo que tem uma thread que tem uma STACK, que terá </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">3 frames vejamos:</p> 

                                                                              <p>
                                                                                </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJq7TPVKOI/AAAAAAAAAR8/zvH0NTTBEtU/s1600-h/ProgramaProcesso5.png"><img style="cursor: pointer; width: 320px; height: 312px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso5-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377978472043194594" border="0" /></a> <font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                <p>
                                                                                  Clique na imagem para ampliar. Cada método quando esta em execução vira uma FRAME na STACK. Quando termina-se a execução do método, a Frame deixa de existir.</font> <font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                  <p>
                                                                                    Supondo que metodo2() terminou o bloco_de_código dele</font><font style="color: rgb(0, 0, 0);" face="arial">, então a instancia da JVM volta a executar o &#8211; frame metodo &#8211; no //bloco_de_codigo de metodo logo após a invocação de metodo2();</p> 

                                                                                    <p>
                                                                                      </font> <font style="font-weight: bold; color: rgb(0, 0, 0);" size="4" face="arial">Vejamos:</p> 

                                                                                      <p>
                                                                                        </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJr-I6NoVI/AAAAAAAAASE/edPX84OBCG4/s1600-h/ProgramaProcesso6.png"><img style="cursor: pointer; width: 320px; height: 279px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso6-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377979620321501522" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><br />Clique na imagem para ampliar,Veja que o frame que esta em runtime agora é o metodo, main esta aguardando e metodo2 ja terminou o bloco_de_codigo dele.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Supondo agora que o frame metodo terminou o bloco_de_codigo dele,</font><font style="color: rgb(0, 0, 0);" face="arial"> então a Instancia da JVM vai para o bloco_de_codigo de main logo abaixo da invocação de metodo() ou seja aonde esta escrito em<br />main </font><font style="color: rgb(0, 0, 0);" face="arial">//bloco_de_codigo</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> .</font> <font style="font-weight: bold; color: rgb(0, 0, 0);" size="4" face="arial">Vejamos:</p> 

                                                                                        <p>
                                                                                          </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJsVEPk9DI/AAAAAAAAASM/3Kp3ZNKSp-4/s1600-h/ProgramaProcesso7.png"><img style="cursor: pointer; width: 206px; height: 320px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso7-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377980014205924402" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                          <p>
                                                                                            Clique na imagem para ampliar, Veja a diferença, Quando um método esta em execução e quanto termina o bloco_de_codigo dele.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">Vejamos agora </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">oque acontece quando a Instancia da JVM acaba o bloco_de_codigo de main:</p> 

                                                                                            <p>
                                                                                              </font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJtG3Wjy1I/AAAAAAAAASU/QpDqBIf2eaQ/s1600-h/ProgramaProcesso8.png"><img style="cursor: pointer; width: 270px; height: 320px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso8-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377980869739006802" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                              <p>
                                                                                                Clique na imagem para ampliar,</font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Uma Stack sem frames. Como a jvm executará algo se não tem nada? Logo termina a STACK, que termina a thread, que termina o processo, chegamos então a:</p> 

                                                                                                <p>
                                                                                                  </font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJtLidizXI/AAAAAAAAASc/fw28vgCb7x0/s1600-h/ProgramaProcesso9.png"><img style="cursor: pointer; width: 310px; height: 247px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso9-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377980950030503282" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                  <p>
                                                                                                    </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar,</font><font style="color: rgb(0, 0, 0);" face="arial">Ou seja terminou o processo.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Por isso que a Stack vai empilhando os Frames(que são métodos quando são invocados). E vai tirando da STACK os frames conforme o bloco_de_codigo do frame(ou seja do método) termina, e ela volta para o frame que é chamador logo abaixo da linha de execução da invocação do método trabalhador.</font> <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial"></p> 

                                                                                                    <p>
                                                                                                      OU seja:</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                      <p>
                                                                                                        </font><font style="color: rgb(0, 0, 0);" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0);" face="arial">{</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                        <p>
                                                                                                          public void </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">metodo</font><font style="color: rgb(0, 0, 0);" face="arial">(){</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                          <p>
                                                                                                            //bloco_de_codigo</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                            <p>
                                                                                                              </font><font style="color: rgb(0, 0, 0);" face="arial">}</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                              <p>
                                                                                                                </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                <p>
                                                                                                                  public static void main(String array[]){</font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                  <p>
                                                                                                                    MinhaClasse d = </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">new</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">MinhaClasse</font><font style="color: rgb(0, 0, 0);" face="arial">();</font> <font style="color: rgb(0, 0, 0);" face="arial"><br />d.</font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">metodo</font><font style="color: rgb(0, 0, 0);" face="arial">(); //Invocação do método (main é Chamador e, metodo() é trabalhador)</font> <font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"><br /><font style="font-weight: bold;">int x = 0; // </p> 

                                                                                                                    <p>
                                                                                                                      //bloco_de_codigo</font> <font style="color: rgb(0, 0, 0);" face="arial"> </font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                      <p>
                                                                                                                        }</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                        <p>
                                                                                                                          }
                                                                                                                        </p>

                                                                                                                        <p>
                                                                                                                          Quando o frame metodo terminar o bloco_de_codigo dele, a instrução que será executada é </font> <font style="color: rgb(0, 0, 0);" face="arial"><font style="font-weight: bold;">int x = 0;, pois a Instancia da JVM volta para o Frame main na instrução logo abaixo da INVOCAÇÃO do Frame trabalhador, main aqui é chamador.</font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial"></p> 

                                                                                                                          <p>
                                                                                                                            Passagem de Parâmetros aos Argumentos dos métodos e Retorno de Valores:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;"></p> 

                                                                                                                            <p>
                                                                                                                              Argumentos</font> são valores recebidos na invocação de um método, que são apenas declarações de variáveis local:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                              <p>
                                                                                                                                Declarando variavel local:</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" face="arial">tipo identificador;</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;"></p> 

                                                                                                                                <p>
                                                                                                                                  Parâmetros</font> são os valores que são passados aos Argumentos do Método, você pode passar valores literais(Primitivos), variáveis de referência ou varáveis Primitivas, Igual ao feito com valores literais, Se for passar uma String como parâmetro use aspas duplas: &ldquo;String&rdquo;, se for passar um float, não se esqueça do f ou F: 20F ou cast etc.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> Os Paramâmetros passados aos argumentos do método devem <font style="font-weight: bold;">ter mesma ORDEM,TIPO e QUANTIDADE doque os Argumentos.</font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;"><br />Retorno de um método</font> é feito especificando na Declaração do método ou seja o tipo de retorno, UM MÉTODO so pode retornar um VALOR.(Quando você especifica que um método vai retornar um valor você deve <font style="font-weight: bold;">usar a keyword &#8211; return &#8211;</font> para dizer oque será retornado(<font style="font-weight: bold;">use return Dentro do bloco_de_codigo do método</font>)) &#8211; Se um método não retorna nada,<font style="font-weight: bold;"> você é obrigado a usar void</font>, usando void não se usa a keyword return, ja que nada é retornado.</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="4" face="arial"><font style="color: rgb(0, 0, 0);"> O Método Chamador passa Parametros ao Método trabalhador.</font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial"><font style="color: rgb(0, 0, 0);"></p> 

                                                                                                                                  <p>
                                                                                                                                    Vejamos exemplos:</font></font> <font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                    <p>
                                                                                                                                      public class <font style="font-weight: bold;">Test</font>{</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                      <p>
                                                                                                                                        public void<font style="font-weight: bold;"> go(int x){</font></font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                        <p>
                                                                                                                                          </font><font style="color: rgb(0, 0, 0);" face="arial">}</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                          <p>
                                                                                                                                            public static void main(String arra[]){</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> </p> 

                                                                                                                                            <p>
                                                                                                                                              Test d = <font style="font-weight: bold;">new</font> <font style="font-weight: bold;">Test</font>();</font> <font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;">d.go(10);</font> //Invocação com passagem de Parametros ao argumento de go(int x)</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" face="arial"> }</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                              <p>
                                                                                                                                                </font><font style="color: rgb(0, 0, 0);" face="arial">}</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" size="4" face="arial"><font style="color: rgb(0, 0, 0);"></p> 

                                                                                                                                                <p>
                                                                                                                                                  Como fica isso em bytecode?</font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                  <p>
                                                                                                                                                    Resumindo oque interessa ver agora, assim:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">Isso é oque ocorre na frame de main(),</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                    <p>
                                                                                                                                                      Code:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <br />0: new #2; //class Test</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" face="arial">3:dup</font><font style="color: rgb(0, 0, 0);" face="arial"></font><font style="color: rgb(0, 0, 0);" face="arial"><br />4: invokespecial #3; //Method &ldquo;<init>&rdquo;:()V</init></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <br />7: astore_1</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <br />8: aload_1</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" face="arial">9: bipush 10</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"><br />11: invokevirtual #4; //Method go:(I)V</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"> <br />14: return</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" size="4" face="arial"></p> 

                                                                                                                                                      <p>
                                                                                                                                                        E como fica isso desenhando?</font><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="color: rgb(0, 0, 0);" face="arial">Essa Operand Stack e Local Variable são do Frame de main, <font style="font-weight: bold;">Lembre-se TODO FRAME TEM UMA OPERAND STACK E UMA LOCAL VARIABLE alem do 0 da Local variable que é a referência para a Constant pool da classe.</font></font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" size="4" face="arial">Vejamos Opcode por Opcode desse bytecode:</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                        <p>
                                                                                                                                                          </font><font style="color: rgb(0, 0, 0);" face="arial"><font style="font-weight: bold;">0: new #2;</font> &#8211; Cria um espaço em memória do tamanho que será o Objeto do tipo Test e joga uma referência na Operand Stack(POREM NO new ele SÒ CRIA O ESPAÇO DE MEMÒRIA), Lembre-se o Objeto não existe ainda só existirá em RUNTIME com dynamic Linking na Runtime Constant Pool. Por isso é uma referência simbólica, o #2 aponta para o #2 da Constant Pool do Class File(Ou seja referência simbólica).</p> 

                                                                                                                                                          <p>
                                                                                                                                                            </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ3FENdJjI/AAAAAAAAASk/FfQJsWekZUI/s1600-h/OperandoStackLocalVariable1.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable1-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377991833947022898" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                            <p>
                                                                                                                                                              3: dup;</font><font style="color: rgb(0, 0, 0);" face="arial"> &#8211; Duplica oque estiver no Top da Operand Stack</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                              <p>
                                                                                                                                                                </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ3bY9YmXI/AAAAAAAAASs/spvzuZyKGCU/s1600-h/OperandoStackLocalVariable2.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable2-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377992217473882482" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><br />Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                <p>
                                                                                                                                                                  4: invokespecial #3;</font><font style="color: rgb(0, 0, 0);" face="arial"> &#8211; Invoca o construtor da Classe(Veremos isso depois) que constroi agora o objeto. new só cria o espaço de memória, dup duplica e invokespecial #3 chama o construtor da classe (//Method &ldquo;</font><init style="font-family: arial; color: rgb(0, 0, 0);">&rdquo;:()V)
                                                                                                                                                                </p>

                                                                                                                                                                <p>
                                                                                                                                                                  </init><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ3ebaUIQI/AAAAAAAAAS0/BWfMbwnDSmQ/s1600-h/OperandoStackLocalVariable3.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable3-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377992269671702786" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"><br /></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar</p> 

                                                                                                                                                                  <p>
                                                                                                                                                                    </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Depois que o invokespecial o seu trabalho:</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                    <p>
                                                                                                                                                                      </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqJ3hFb_X7I/AAAAAAAAAS8/JasLfJVN8GE/s1600-h/OperandoStackLocalVariable4.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable4-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377992315312758706" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                      <p>
                                                                                                                                                                        Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">SOMENTE EM RUNTIME</font><font style="color: rgb(0, 0, 0);" face="arial">, depois do dynamic linking teriamos agora sim o objeto, deses jeito(isso ocorre depois que o invokespecial #3; faz seu trabalho e em Runtime claro):</p> 

                                                                                                                                                                        <p>
                                                                                                                                                                          </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqJ3krDx1LI/AAAAAAAAATE/5nCV91xBMYo/s1600-h/OperandoStackLocalVariable5.png"><img style="cursor: pointer; width: 320px; height: 131px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable5-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377992376951362738" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                          <p>
                                                                                                                                                                            </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                            <p>
                                                                                                                                                                              7: astore_1 </font><font style="color: rgb(0, 0, 0);" face="arial">-> Mandou armazenar o valor que estiver no TOP da Operand Stack como uma variavel local no indice 1 da Local variable</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">O OBJETO SO ESTARÁ la em RUNTIME(Tempo de execução, ou seja quando você mandar executar seu Class File, EM tempo de compilação so temos referências simbólicas a Constant Pool do Class file exemplo: new #2; )</p> 

                                                                                                                                                                              <p>
                                                                                                                                                                                </font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJ4vD6-xxI/AAAAAAAAATc/GtdEOGKdLrU/s1600-h/OperandoStackLocalVariable6.png"><img style="cursor: pointer; width: 320px; height: 127px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable6-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377993654935668498" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                                                <p>
                                                                                                                                                                                  Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"><font style="font-weight: bold;">8: aload_1</font> -> carrega o indice 1 da Local Variable para o TOP da operand Stack</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">O OBJETO SO ESTARÁ la em RUNTIME(Tempo de execução, ou seja quando você mandar executar seu Class File, EM tempo de compilação so temos referências simbólicas a Constant Pool do Class file exemplo: new #2; )</p> 

                                                                                                                                                                                  <p>
                                                                                                                                                                                    </font><font style="color: rgb(0, 0, 0);" face="arial"> </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/SqJ4b_AIF5I/AAAAAAAAATU/Lt6tsfPF5Yc/s1600-h/OperandoStackLocalVariable7.png"><img style="cursor: pointer; width: 320px; height: 126px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable7-5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377993327197558674" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                                                    <p>
                                                                                                                                                                                      Clique na imagem para ampliar,Veja que oque estiver na Local Variable é COPIADO na Operand Stack, e tudo que estiver na Operand Stack é arrancado. Portanto java trabalha com o conceito de COPIA DE VALORES.</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                                      <p>
                                                                                                                                                                                        </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">9:bipush 10-</font><font style="color: rgb(0, 0, 0);" face="arial">> Empura 10 na Operand Stack</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">O OBJETO SO ESTARÁ la em RUNTIME(Tempo de execução, ou seja quando você mandar executar seu Class File, EM tempo de compilação so temos referências simbólicas a Constant Pool do Class file exemplo: new #2; )</p> 

                                                                                                                                                                                        <p>
                                                                                                                                                                                          </font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ4zI8BzwI/AAAAAAAAATk/8cjQXElFL7E/s1600-h/OperandoStackLocalVariable8.png"><img style="cursor: pointer; width: 320px; height: 126px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable8-4.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377993725001715458" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                                          <p>
                                                                                                                                                                                            </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Clique na imagem para ampliar, </font><font style="color: rgb(0, 0, 0);" face="arial">Lembre-se que tipos primitivos usamos em Binário, so que aqui estou colocando em DECIMAL para ficar mais facil de entender</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">11:invokevirtual #4;</font><font style="color: rgb(0, 0, 0);" face="arial"> //Method go:(I)V -> Invoca-se o método go e passa para ele o inteiro que estiver no TOP DA OPERAND STACK, a invocação do método requer o endereço do objeto e os PARAMETROS ao ARGUMENTO vejamos:</font><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                                                            <p>
                                                                                                                                                                                              Antes:</font>
                                                                                                                                                                                            </p>

                                                                                                                                                                                            <p>
                                                                                                                                                                                              <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJ43eAXmyI/AAAAAAAAATs/4OR-MQX45t8/s1600-h/OperandoStackLocalVariable9.png"><img style="cursor: pointer; width: 320px; height: 126px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable9-3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377993799376542498" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                                                              <p>
                                                                                                                                                                                                Clique na imagem para ampliar</font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                                                <p>
                                                                                                                                                                                                  </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Depois:</p> 

                                                                                                                                                                                                  <p>
                                                                                                                                                                                                    </font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJ485tX2RI/AAAAAAAAAT0/ZiH4pOBJlVM/s1600-h/OperandoStackLocalVariable10.png"><img style="cursor: pointer; width: 320px; height: 127px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable10-3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377993892712405266" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial"></p> 

                                                                                                                                                                                                    <p>
                                                                                                                                                                                                      Clique na imagem para ampliar
                                                                                                                                                                                                    </p>

                                                                                                                                                                                                    <p>
                                                                                                                                                                                                      </font>
                                                                                                                                                                                                    </p>

                                                                                                                                                                                                    <div face="arial" style="text-align: center; color: rgb(0, 0, 0);">
                                                                                                                                                                                                      <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial">Veja como é feita a verificação de parametros e argumentos:</p> 

                                                                                                                                                                                                      <p>
                                                                                                                                                                                                        </font> </div> 

                                                                                                                                                                                                        <p>
                                                                                                                                                                                                          <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJ6pMfQNLI/AAAAAAAAAT8/VoK1KMP0MtQ/s1600-h/ProgramaProcesso3.png"><img style="cursor: pointer; width: 197px; height: 193px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso3-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377995753179329714" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial">É assim que é feita a passagem de parâmetros aos argumentos.</p> 

                                                                                                                                                                                                          <p>
                                                                                                                                                                                                            </font> <font style="font-weight: bold; color: rgb(0, 0, 0);" size="4" face="arial">Veja como ficou o frame de public void go(int x):</font> <a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJ6sC_GY4I/AAAAAAAAAUE/PhLSNs9HJNk/s1600-h/framego10.png"><img style="cursor: pointer; width: 256px; height: 122px;" src="http://localhost/www/wp0/uploads/framego10-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377995802168157058" border="0" /></a><font style="color: rgb(0, 0, 0);" face="arial"> </font><font style="color: rgb(0, 0, 0);" face="arial"></p> 

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              Veja <font style="font-weight: bold;" size="4">que o Parametro fica sendo a variavel local</font>, lembra-se que todo Argumento é uma variavel local! pois bem são as primeiras da sua local variable do Frame. OU seja Parametros que são avaliados nos Argumentos do Frame acabam se tornando variáveis locais ao FRAME após tudo.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial"> Oque acontece se eu colocar mais de um argumento?</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> Os Parâmetros devem ser iguais em ORDEM,TIPO e QUANTIDADE vejamos o exemplo:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">public class </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Test</font><font style="color: rgb(0, 0, 0);" face="arial">{</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> public void </font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">go(int x, byte c, String d)</font><font style="color: rgb(0, 0, 0);" face="arial">{</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> }</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> public static void main(String arra[]){</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> Test d = new Test();</font><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">d.go(10,(byte)2, &ldquo;String&rdquo; );</font><font style="color: rgb(0, 0, 0);" face="arial">//MESMA ORDEM TIPO E QUANTIDADE DE PARAMETROS E ARGUMENTOS</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> }</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">}</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">Veja que á necessidade de especificar corretamento o tipo de dados, exemplo:</font><br /><font style="color: rgb(0, 0, 0);" face="arial">(byte) 2, leva-se em conta que todo inteiro é um int, portanto necessário cast.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" size="4" face="arial"> <font style="font-weight: bold;">E como fica isso visualmente?</font> </font> <init style="font-family: arial; color: rgb(0, 0, 0);">
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              </init><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ7gcSkQBI/AAAAAAAAAUM/Tp3r3OcyRbE/s1600-h/ProgramaProcesso4.png"><img style="cursor: pointer; width: 225px; height: 193px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso4-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377996702313889810" border="0" /></a><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar, Verifique a ORDEM o tipo e A QUANTIDADE DE PARAMETROS E ARGUMENTOS, vejam que são iguais.Os parametros são trabalhados na Operand Stack do Frame antes de serem passados como parametros realmente, e em um único fluxo vão todos em mesma ORDEM,TIPO e Quantidade.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial">Retorno:</font><br /><font style="font-weight: bold;" size="4"><br /><font style="color: rgb(0, 0, 0);" face="arial">Preciso Realmente fazer algo com o retorno do método?</font></font><br /><font style="color: rgb(0, 0, 0);" face="arial"> Não se você não quiser, so invoque o método e não faça nada com o retorno</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Vejamos como isso ocorre:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">public class Test{</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> public <font style="font-weight: bold;">int</font> <font style="font-weight: bold;">go</font>(){</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;">return 10;</font> //Veja que é obrigatório o uso da keyword return e o valor tem q</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> //ser o mesmo do declarado no método ou seja, 10 é int</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> }</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> public static void main(String arra[]){</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> Test d = new Test();</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> <font style="font-weight: bold;">int x</font> = d.go();//agora a minha variavel local int x, vale 10.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> }</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">}</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Em bytecode temos:</font><br /><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">ISSO É A FRAME MAIN, REPITO A MAIN FAZ ISSO</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"> 0: new #2; //class Test</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 3: dup</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 4: invokespecial #3; //Method &ldquo;<init>&rdquo;:()V</init></font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 7: astore_1</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 8: aload_1</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 9: invokevirtual #4; //Method go:()I</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 12: istore_2</font><br /><font style="color: rgb(0, 0, 0);" face="arial"> 13: return</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Como ja vimos oque cada Opcode faz, então pularei para a linha 8 em diante:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">8: aload_1-></font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ9OW0AITI/AAAAAAAAAUU/fUkS5EvZCHU/s1600-h/OperandoStackLocalVariable11.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable11-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377998590629126450" border="0" /></a><br /><font style="font-weight: bold;">Clique na imagem para ampliar</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial"><font style="font-weight: bold;">9:invokevirtual #4;</font> //Method go:()I->veja que esse método tem RETORNO, I</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Antes</font><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ9R2AKssI/AAAAAAAAAUc/ctyaKORMqhY/s1600-h/OperandoStackLocalVariable12.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable12-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377998650541257410" border="0" /></a>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Depois(Aqui esta o retorno do método trabalhador)</font>:
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJ9VzBT9RI/AAAAAAAAAUk/Ft8Y9q0sCYo/s1600-h/OperandoStackLocalVariable13.png"><img style="cursor: pointer; width: 244px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable13-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377998718460228882" border="0" /></a>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Lembre-se tipos primitivos são escritos em binário porem usarei em decimal por ser mais facil de visualizar. Perceba que o retorno do frame Trabalhador(OU seja go) agora esta na OPERAND STACK DO frame Chamador. Frame main = Chamador, go = Trabalhador</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">12: istore_2</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SqJ9Ykzj0tI/AAAAAAAAAUs/_yndNLHAxOA/s1600-h/OperandoStackLocalVariable14.png"><img style="cursor: pointer; width: 256px; height: 122px;" src="http://localhost/www/wp0/uploads/OperandoStackLocalVariable14-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377998766184059602" border="0" /></a><br /><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Agora temos uma variavel local com o valor que retornou.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" size="5" face="arial">A relação que se faz em opcode e java é a seguinte:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Test d = new Test();</font><br /><font style="color: rgb(0, 0, 0);" face="arial">1 &#8211; new = <font style="font-weight: bold;">new e dup</font></font><br /><font style="color: rgb(0, 0, 0);" face="arial">2 &#8211; Test() = <font style="font-weight: bold;">invokespecial #3; //Method &ldquo;</font><init><font style="font-weight: bold;">&rdquo;:()V</font> -> o #3 pode mudar, depende em qual indice da constant Pool será colocado o construtor</init></font><br /><font style="color: rgb(0, 0, 0);" face="arial">3 &#8211; Test d = <font style="font-weight: bold;">astore_1</font>, Quando ele manda armazenar ja tem o espaço certo que uma instancia daquele tipo pode ocupar, por isso é necessário colocar</font><br /><font style="color: rgb(0, 0, 0); font-weight: bold;" face="arial">Test d -> tipo identificador, para o compilador ja calcular o espaço necessário.</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0); font-weight: bold;" size="5" face="arial">Resumo:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">&#8211; Boas práticas a uma especificação(Classe) é que ela contenha entre 5 ~ 8 métodos, cada com linhas entre 20 ~ 25</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Todo método com modificador de acesso public é considerado uma interface pois define como sera a interação dos objetos</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; O método que é executado é aquele que estiver no Top da Stack, ou seja aquele que foi o ultimo a ser invocado</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Você pode invocar métodos da mesma Classe ou de outras Classes</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Você pode chamar métodos em qualquer ordem, Supondo que em uma classe eu tenha a declaração de MetodoA antes da declaração de MetodoB Se eu invocar MetodoB e depois MetodoA quer dizer que MetodoB termina primeiro, A ordem de declaração na classe Não IMPORTA!!</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Para invocar métodos da mesma classe apenas inclua o nome dele e os argumentos para ele</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Em argumentos:</font><br /><font style="color: rgb(0, 0, 0);" face="arial">*Temos promoção de primitivos</font><br /><font style="color: rgb(0, 0, 0);" face="arial">*É necessário cast, principalmente em literais onde todo numero é considerado int</font><br /><font style="color: rgb(0, 0, 0);" face="arial">public void go(byte x)</font><br /><font style="color: rgb(0, 0, 0);" face="arial">x++;</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">go(10); -> Erro de compilação</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">&#8211; Argumentos são variáveis Locais que podem ser usadas no bloco_de_codigo do método, e quando passamos parametros aos argumentos, ele são armazenados automaticamente com o valor do parametro(Na variavel local).</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Sempre passe os Parâmetros na mesma ORDEM,TIPO e Quantidade que estiver nos Argumentos.</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; A stack , representa Frames e parametros para contrabater com os argumentos.</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Temos os métodos chamadores e os trabalhadores</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Os métodos Chamadores quando invocam um método trabalhador os parametros que o chamador passa para o trabalhador, o trabalhor verifica se tem mesma ORDEM,TIPO e Quantidade dos argumentos e se tiver agora serão variaveis locais ao frame do método trabalhador.</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; O tipo de retorno de um método trabalhador será jogado na Operand Stack do método Chamador.</font><br /><font style="color: rgb(0, 0, 0);" face="arial">&#8211; Argumentos são as primeiras variáveis locais de um método</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">Cuidado:</font><br /><font style="color: rgb(0, 0, 0);" face="arial">*Com Parametros a argumento &#8211; veja:</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">public void go(byte x){</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">}</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">go((byte) 2); -> É necessário cast, ja que default de inteiros é int</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">Outro exemplo:</font><br /><font style="color: rgb(0, 0, 0);" face="arial">public void go(float x){</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">}</font>
                                                                                                                                                                                                            </p>

                                                                                                                                                                                                            <p>
                                                                                                                                                                                                              <font style="color: rgb(0, 0, 0);" face="arial">go(3F); -> É necessário cast, ja que default de pontos flutuantes é double</font></font>
                                                                                                                                                                                                            </p>

Java Métodos Construtores Sobrecarga Sobrescrita

Java Métodos Construtores Sobrecarga Sobrescrita. Linguagem Java. Sumário: Implementação de Métodos, Assinatura de um método, Sobrecarga(Overloading) de Métodos, Varargs, This, Sobrecarga de Construtores,Como invocar um Construtor dentro de outro Construtor da mesma classe,Como invocar Construtores da SuperClass,super, super(),Como invocar métodos da SuperClasse,Sobrescrita de Métodos.

Implementação de métodos:

Todo bloco de código de um método é considerado a implementação dele, vejamos o exemplo:

public void metodo( ){

//bloco de codigo

}

public void metodo2( ){
int variavel = 0;

//bloco de codigo
}

Logo acima temos 2 métodos com implementações de código diferente.

Assinatura de um método:

Quando você declara um método, você cria a assinatura do método, vejamos o exemplo:

<p>
  </span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">public void <span style="font-weight: bold;">metodo</span>( ){</p> 

  <p>
    //bloco de codigo
  </p>

  <p>
    }
  </p>

  <p>
    A assinatura do método é: </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;">public void <span style="font-weight: bold;">metodo</span>( )</span> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:180%;"></p> 

    <h2>
      ava Métodos Construtores Sobrecarga Sobrescrita
    </h2>

    <p>
      Sobrecarga(Overloading) de Métodos:</span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

      <p>
        Um método é considerado Sobrecarregado quando temos mais de um método com o mesmo identificador e ARGUMENTOS diferentes em (Quantidade, Ordem ou Tipo). Podemos escolher o uso de overload também para trabalhar com diferentes tipos de dados sobre o mesmo membro ou mesmo o quesito de mesmo identificador e diferente assinatura.
      </p>

      <p>
        <span style="font-weight: bold;font-size:130%;">Vejamos exemplos de overload:</p> 

        <p>
          </span><br /><span style="font-weight: bold;font-size:100%;">Assinatura de métodos:</span>
        </p>

        <p>
          public void metodo(int argumento)<br />public void metodo(byte argumento)<br />public void metodo(short argumento)
        </p>

        <p>
          Perceba que eles tem o mesmo identificador, nesse caso &#8211; metodo &#8211; e tem argumentos diferente.<br />Na invocação do método, o compilador t<span style="font-weight: bold;">estará os parametros e escolherá de acordo com Parametros e argumentos dos métodos</span>, a TIPAGEM(tipos de dados em java) de java agora sim é muito mais que util.
        </p>

        <p>
          <span style="font-weight: bold;font-size:130%;">Oque realmente caracteriza métodos Overload?</span>
        </p>

        <p>
          <span style="font-size:100%;">&#8211; A lista de argumentos </span><span style="font-weight: bold;font-size:100%;">entre os método deve SER DIFERENTE isso é regra básica, se tiver o mesmo identificador e lista de Argumentos diferentes em: ORDEM e/ou TIPO e/ou QUANTIDADE, isso ja caracteriza OVERLOAD.</p> 

          <p>
            &#8211; O tipo de retorno pode ser diferente, SE OS MÉTODOS TIVEREM MESMO IDENTIFICADOR e lista de argumento diferentes em </span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-weight: bold;">ORDEM e/ou TIPO e/ou QUANTIDADE e ainda tiverem tipo de retorno diferente, isso é considerado ainda OVERLOAD.</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

            <p>
              <span style="font-weight: bold;font-size:180%;">Varargs:<br /><span style="font-weight: bold;"><span style="font-size:100%;"><br />Lembra-se do recurso de varargs?</p> 

              <p>
                </span></span></span><span style="font-size:100%;"><span style="font-size:100%;">[modificador_de_acesso] tipo_retorno identificador</span></span><span style="font-weight: bold;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:100%;">( tipo   identificador )</p> 

                <p>
                  </span></span></span><span style="font-size:100%;"><span style="font-size:100%;">Pois bem, ele é a mesma coisa que um overload contínuo de mesmo tipo, <span style="font-weight: bold;">vejamos</span>:</p> 

                  <p>
                    public void metodo(<span style="font-weight: bold;">byte variavel)</span><br />public void metodo(<span style="font-weight: bold;">byte variavel,byte variavel2</span>)<br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;">public void metodo(<span style="font-weight: bold;">byte variavel,byte variavel2, byte variavel3</span>)</span></span><span style="font-weight: bold;font-size:100%;"><span style="font-weight: bold;"><span style="font-size:100%;"></p> 

                    <p>
                      Ao invez disso podemos usar:<br /></span></span></span><span style="font-size:100%;"><span style="font-size:100%;"><br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;">public void metodo(<span style="font-weight: bold;">byte   variavel</span>)<br />Sendo assim podemos aceitar quantos parametros forem passados,<span style="font-weight: bold;"> independente da quantidade</p> 

                      <p>
                        <span style="font-size:180%;">This:</span></span><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                        <p>
                          <span style="font-weight: bold;">Basicamente ele :</span><br />*Resolve Ambiguidade<br />*Passar o objeto atual como Parametro<br />*Invocar um construtor da mesma classe
                        </p>

                        <p>
                          O this basicamente nada mais é doque a <span style="font-weight: bold;">posição 0 da local variable</span>, so que estamos usando explicitamente ele agora.<br />Quando você estiver trabalhando com instancias, é a mesma coisa que dizer, ESSE OBJETO, essa INSTANCIA QUE ESTOU AGORA.<br /></span></span></span><span style="font-weight: bold;"></p> 

                          <p>
                            Resolvendo ambiguidade:</span><span></p> 

                            <p>
                              public class <span style="font-weight: bold;">Pessoa</span>{<br />private int idade;
                            </p>

                            <p>
                              public void setIdade(int <span style="font-weight: bold;">idade</span>){<br /><span style="font-weight: bold;">this.idade</span> = <span style="font-weight: bold;">idade</span>;
                            </p>

                            <p>
                              }
                            </p>

                            <p>
                              }
                            </p>

                            <p>
                              <span style="font-weight: bold;">Em sintax bytecode temos no Frame setIdade:</span><br />public void setIdade(int);<br />Code:<br />0: aload_0<br />1: iload_1<br />2: putfield #2; //Field idade:I<br />5: return
                            </p>

                            <p>
                              <span style="font-weight: bold;">*aload_0 &#8211; > É uma referência a Constant Pool do Class File, que futuramente será a Runtime Constant Pool e com dynamic linking, será HEAP</span>
                            </p>

                            <p>
                              }
                            </p>

                            <p>
                              </span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqbCUK4Yz9I/AAAAAAAAAYE/spJ8C8hzwMU/s1600-h/this.png"><img style="cursor: pointer; width: 278px; height: 320px;" src="http://localhost/www/wp0/uploads/this.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379200456714670034" border="0" /></a> <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"></p> 

                              <p>
                                Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;">, nesse caso o int é </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span>(int <span style="font-weight: bold;">idade</span>), lembra-se que todo argumento é variavel local ao Frame? Pois bem, Quando os parametros forem passados ao frame <span style="font-weight: bold;">setIdade</span> serão armazenados como variável local ao frame, que nesse é a posição 1 da local variable.</span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><br /><span style="font-weight: bold;"></p> 

                                <p>
                                  Agora sem o this:
                                </p>

                                <p>
                                  </span>public class <span style="font-weight: bold;">Pessoa</span>{<br />private int <span style="font-weight: bold;">idade</span>;
                                </p>

                                <p>
                                  public void setIdade(int <span style="font-weight: bold;">idade</span>){<br /><span style="font-weight: bold;">idade</span> = <span style="font-weight: bold;">idade</span>;
                                </p>

                                <p>
                                  }
                                </p>

                                <p>
                                  }
                                </p>

                                <p>
                                  </span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-weight: bold;">Em sintax bytecode temos no Frame setIdade:</span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span>public void setIdade(int);<br />Code:<br />0: iload_1<br />1: istore_1<br />2: return</p> 

                                  <p>
                                    }</span><span style="font-weight: bold;"></p> 

                                    <p>
                                      </span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqbCYvliUgI/AAAAAAAAAYM/cbbd6tLNSUE/s1600-h/this2.png"><img style="cursor: pointer; width: 278px; height: 320px;" src="http://localhost/www/wp0/uploads/this2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5379200535287190018" border="0" /></a>
                                    </p>

                                    <p>
                                      <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><span style="color: rgb(0, 0, 0);font-family:arial;"> nesse caso o int é </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span>(int <span style="font-weight: bold;">idade</span>), lembra-se que todo argumento é variavel local ao Frame? Pois bem, Quando os parametros forem passados ao frame <span style="font-weight: bold;">setIdade</span> serão armazenados como variável local ao frame</span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span>, que nesse é a posição 1 da local variable.</span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                      <p>
                                        <span style="font-size:130%;">Passar o objeto atual:</span></span><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                        <p>
                                          public class <span style="font-weight: bold;">Pessoa</span>{
                                        </p>

                                        <p>
                                          public void <span style="font-weight: bold;">setIdade</span>(){<br /><span style="font-weight: bold;">setIdade2</span>(<span style="font-weight: bold;">this</span>);
                                        </p>

                                        <p>
                                          }
                                        </p>

                                        <p>
                                          public void setIdade2(<span style="font-weight: bold;">Pessoa pessoa</span>){
                                        </p>

                                        <p>
                                          }
                                        </p>

                                        <p>
                                          public static void <span style="font-weight: bold;">main</span>(String array[]){<br />Pessoa my = new Pessoa();<br />my.<span style="font-weight: bold;">setIdade</span>();
                                        </p>

                                        <p>
                                          }
                                        </p>

                                        <p>
                                          }
                                        </p>

                                        <p>
                                          <span style="font-weight: bold;">Vejamos essa instrução:</span>
                                        </p>

                                        <p>
                                          </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">setIdade2</span>(<span style="font-weight: bold;">this</span>);</span></span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                          <p>
                                            Basicamente aqui eu digo, pega o endereço de memória do OBJETO Que estou no momento e passa como parametros aos argumentos de </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">setIdade2(<span style="font-weight: bold;">Pessoa pessoa</span>).</span></span></span></span></span></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                            <p>
                                              <span style="font-size:180%;">Sobrecarga de Construtores:<br /></span></span><span><span style="font-size:100%;"><span style="font-size:100%;"><br />Existe uma maneira a qual você pode construir seus objetos de acordo com os dados iniciais passados, As vezes em cadastro como exemplo não temos todos os dados em exato momento e esses dados não são tão importantes para a construção daquele objeto em si. <span style="font-weight: bold;"></p> 

                                              <p>
                                                Vejamos exemplo:</span>
                                              </p>

                                              <p>
                                                Em uma loja virtual ao se cadastrar coloca-se alguns dados. Temos 2 participantes jose e maria, maria não sabe o numero da casa dela, mais não é tao importante nesse caso porem seria bom se tivesse. <span style="font-weight: bold;">Vejamos em código:<br /></span><br />public class <span style="font-weight: bold;">Pessoa</span>{
                                              </p>

                                              <p>
                                                private String name;<br />private String endereco;<br />private int numeroCasa;
                                              </p>

                                              <p>
                                                public Pessoa(String <span style="font-weight: bold;">name</span>,String <span style="font-weight: bold;">endereco</span>,int <span style="font-weight: bold;">numeroCasa</span>){ //jose invoca esse construtor<br />this.name = name;<br />this.endereco = endereco;<br />this.numeroCasa = numeroCasa;
                                              </p>

                                              <p>
                                                }
                                              </p>

                                              <p>
                                                public Pessoa(String <span style="font-weight: bold;">name</span>,String <span style="font-weight: bold;">endereco</span>){//maria invoca esse construtor<br />this.name = name;<br />this.endereco = endereco;
                                              </p>

                                              <p>
                                                }
                                              </p>

                                              <p>
                                                public static void main(String array[ ]){
                                              </p>

                                              <p>
                                                Pessoa <span style="font-weight: bold;">jose</span> = new Pessoa(&ldquo;Jose&rdquo;,&ldquo;Rua São João&rdquo;,50);
                                              </p>

                                              <p>
                                                Pessoa <span style="font-weight: bold;">maria</span> = new Pessoa(&ldquo;Maria&rdquo;,&ldquo;Rua das flores&rdquo;);
                                              </p>

                                              <p>
                                                }
                                              </p>

                                              <p>
                                                }<span style="font-weight: bold;"><br /></span></span></span></span><span><span style="font-size:100%;"><span style="font-size:100%;"><br />Veja que no exemplo acima,<span style="font-weight: bold;"> jose aciona um construtor enquanto maria aciona outro construtor diferente de jose.</span> Existe uma verificação de Parametros e argumentos, e assim que é escolhido o mais indicado.</p> 

                                                <p>
                                                  <span style="font-weight: bold;font-size:180%;">Como invocar um Construtor dentro de outro Construtor da mesma classe?</span><span style="font-size:180%;"><span style="font-size:100%;"></p> 

                                                  <p>
                                                    </span></span>Usando a keyword this, A keyword this deve ser a primeira instrução de um construtor, Podemos ter instruções depois da instrução this, mais não antes.
                                                  </p>

                                                  <p>
                                                    <span style="font-weight: bold;">Veja o exemplo:</span>
                                                  </p>

                                                  <p>
                                                    public class <span style="font-weight: bold;">Pessoa</span>{
                                                  </p>

                                                  <p>
                                                    private String <span style="font-weight: bold;">name</span>;<br />private String <span style="font-weight: bold;">endereco</span>;<br />private int <span style="font-weight: bold;">numeroCasa</span>;
                                                  </p>

                                                  <p>
                                                    <span style="font-weight: bold;">private</span> <span style="font-weight: bold;">Pessoa</span>(String name,String endereco,int numeroCasa){<br />this.name= name;<br />this.endereco = endereco;<br />this.numeroCasa = numeroCasa;
                                                  </p>

                                                  <p>
                                                    }
                                                  </p>

                                                  <p>
                                                    <span style="font-weight: bold;">public</span> Pessoa(String name,String endereco){<br /><span style="font-weight: bold;">this</span>(<span style="font-weight: bold;">name</span>,<span style="font-weight: bold;">endereco</span>,<span style="font-weight: bold;"></span>); // Primeira linha do construtor
                                                  </p>

                                                  <p>
                                                    }
                                                  </p>

                                                  <p>
                                                    }
                                                  </p>

                                                  <p>
                                                    public class <span style="font-weight: bold;">Registro</span>{
                                                  </p>

                                                  <p>
                                                    </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><br />public static void <span style="font-weight: bold;">main</span>(String array[ ]){</p> 

                                                    <p>
                                                      Pessoa maria = new <span style="font-weight: bold;">Pessoa</span>(&ldquo;Maria&rdquo;,&ldquo;Rua das flores&rdquo;);<br />}</span></span></span></span></span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                      <p>
                                                        }
                                                      </p>

                                                      <p>
                                                        Nesse exemplo podemos <span style="font-weight: bold;">perceber</span>:<br />1 &#8211; Na classe <span style="font-weight: bold;">Pessoa</span> temos um construtor que tem modificador de acesso <span style="font-weight: bold;">private</span>, oque significa que o acesso a ele só é dado na MESMA CLASSE.<br />2 &#8211; </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">Na classe <span style="font-weight: bold;">Pessoa</span> temos um construtor que tem modificador de acesso <span style="font-weight: bold;">public</span>, oque permite o acesso EXTERNO a classe, e foi uque fiz na Classe Registro</span></span></span></span></span></span>
                                                      </p>

                                                      <p>
                                                        <span style="color: rgb(0, 0, 0);font-family:arial;">Temos dois construtores com mesmo identificador porem com argumentos diferentes, oque </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">CARACTERIZA Overload de Construtor.</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                        <p>
                                                          <span style="font-size:130%;">Classe </span><span style="font-weight: bold;font-size:130%;">Pessoa</span><span style="font-size:130%;">:</span>
                                                        </p>

                                                        <p>
                                                          O construtor de assinatura:
                                                        </p>

                                                        <p>
                                                          </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">public</span> Pessoa(String name,String endereco)<br />É invocado na Classe <span style="font-weight: bold;">Registro</span> pelo objeto <span style="font-weight: bold;">maria</span>, o construtor invoca outro construtor de assinatura:</p> 

                                                          <p>
                                                            </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">private</span> <span style="font-weight: bold;">Pessoa</span>(String name,String endereco,int numeroCasa)</span></span></span></span></span></span>
                                                          </p>

                                                          <p>
                                                            <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">E passa como parametro os que recebeu e mais um valor que foi colocado como default, que seria o endereço de casa(ou seja o 0 &#8211; ZERO).</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">this</span>(<span style="font-weight: bold;">name</span>,<span style="font-weight: bold;">endereco</span>,<span style="font-weight: bold;"></span>);</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"> Como o construtor com modificador de acesso private so pode ser acessado pela mesma classe, foi isso que o construtor com modificador de acesso public fez, acessou ele de dentro da mesma classe.</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><br /><span style="font-weight: bold;font-size:180%;"><br />Construtores são Herdados?<br /></span><br />Não apenas membros de classe são herdados, Construtores não são membros.</p> 

                                                            <p>
                                                              <span style="font-weight: bold;font-size:180%;">Como invocar Construtores da SuperClass?<span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                                              <p>
                                                                </span></span></span><span style="font-size:100%;"><span style="font-size:100%;">Usando a keyword <span style="font-weight: bold;">super</span><span style="font-weight: bold;">() </span>na primeira linha do construtor da SubClass, Passa-se Parametros normais aos argumentos do construtor da SuperClass e </span></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">super</span><span style="font-weight: bold;">()</span></span></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"> deve ser a primeira instrução do construtor da SubClass.</p> 

                                                                <p>
                                                                  <span style="font-weight: bold;">Vejamos o exemplo:</p> 

                                                                  <p>
                                                                    </span>public class <span style="font-weight: bold;">SuperClass</span>{
                                                                  </p>

                                                                  <p>
                                                                    public <span style="font-weight: bold;">SuperClass</span>(<span style="font-weight: bold;">int variable</span>){
                                                                  </p>

                                                                  <p>
                                                                    }
                                                                  </p>

                                                                  <p>
                                                                    }
                                                                  </p>

                                                                  <p>
                                                                    public class <span style="font-weight: bold;">SubClass extends SuperClass</span>{
                                                                  </p>

                                                                  <p>
                                                                    public <span style="font-weight: bold;">SubClass</span>( ){<br /><span style="font-weight: bold;">super(10); //Invocando o Construtor da SuperClass</span>
                                                                  </p>

                                                                  <p>
                                                                    }
                                                                  </p>

                                                                  <p>
                                                                    }<br /></span></span><span style="font-weight: bold;font-size:100%;"></p> 

                                                                    <p>
                                                                      <span style="font-size:180%;">Herança e this,super,SuperClass:</span></span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                      <p>
                                                                        Primeiro fundamento básico, <span style="font-weight: bold;">toda classe quando não especificado explicitamente tem java.lang.Object como SuperClasse Direta.<br /></span>Segundo fundamente básico, <span style="font-weight: bold;">todo objeto criado a partir de um SubClasse também cria um objeto que é tanto SubClasse quanto SuperClasse, isso quer dizer que ao invocar o construtor de uma SubClasse você explicitamente ou implicitamente também invoca o construtor da SuperClasse.<br /></span></span></span></span><span style="font-weight: bold;font-size:100%;"></p> 

                                                                        <p>
                                                                          </span><span style="font-weight: bold;">Vejamos:</p> 

                                                                          <p>
                                                                            </span>public class <span style="font-weight: bold;">Pessoa</span>{
                                                                          </p>

                                                                          <p>
                                                                            private String name;<br />private String endereco;<br />private int numeroCasa;
                                                                          </p>

                                                                          <p>
                                                                            private <span style="font-weight: bold;">Pessoa</span>(String name,String endereco,int numeroCasa){<br />this.name= name;<br />this.endereco = endereco;<br />this.numeroCasa = numeroCasa;
                                                                          </p>

                                                                          <p>
                                                                            }
                                                                          </p>

                                                                          <p>
                                                                            public <span style="font-weight: bold;">Pessoa</span>(String name,String endereco){<br /><span style="font-weight: bold;">this</span>(<span style="font-weight: bold;">name</span>,<span style="font-weight: bold;">endereco,0</span>);
                                                                          </p>

                                                                          <p>
                                                                            }
                                                                          </p>

                                                                          <p>
                                                                            public static void <span style="font-weight: bold;">main</span>(String array[ ]){
                                                                          </p>

                                                                          <p>
                                                                            Pessoa maria = new <span style="font-weight: bold;">Pessoa</span>(&ldquo;Maria&rdquo;,&ldquo;Rua das flores&rdquo;);
                                                                          </p>

                                                                          <p>
                                                                            }
                                                                          </p>

                                                                          <p>
                                                                            }
                                                                          </p>

                                                                          <p>
                                                                            <span style="font-weight: bold;">Perceba que a Classe pessoa explicitamente não é um Object, porem toda classe tem Object como SuperClasse seja Explicitamente ou Implicitamente</span> E Diretamente ou Inderetamente, Vou provar isso através de bytecode.
                                                                          </p>

                                                                          <p>
                                                                            <span style="font-weight: bold;">Vejamos:</span>
                                                                          </p>

                                                                          <p>
                                                                            Logo no incio do arquivo.class temos:<br />Compiled from &ldquo;Pessoa.java&rdquo;<br />public class Pessoa <span style="font-weight: bold;">extends java.lang.Object{</p> 

                                                                            <p>
                                                                              Ou seja esta PROVADO que toda classe tem Object como SuperClasse, seja indiretamente ou Diretamente, Implicitamente ou Explicitamente.
                                                                            </p>

                                                                            <p>
                                                                              Agora dentro de qualquer um dos construtores da classe podemos Perceber que:</span>
                                                                            </p>

                                                                            <p>
                                                                              public Pessoa(java.lang.String, java.lang.String, int);<br />Code:<br />0: aload_0<br />1: invokespecial #1;<span style="font-weight: bold;"> //Method java/lang/Object.&ldquo;init><init>&rdquo;:()V</p> 

                                                                              <p>
                                                                                Essa linha de instrução </init></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">1: invokespecial #1;<span style="font-weight: bold;"> //Method java/lang/Object.&ldquo;init><init>&rdquo;:()V<br />Diz que ao cria-se um Objeto dessa classe também invoca-se o construtor da Classe Object. OQUE QUER DIZER QUE TODA VEZ QUE A JVM CRIA UMA INSTANCIA DA CLASSE ELA TAMBÉM CRIA UMA INSTANCIA DA SUPERCLASSE, SEJA IMPLICITAMENTE DITO COMO SUPER() OU EXPLICITAMENTE FEITO PELO COMPILADOR.<br /></init></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                <p>
                                                                                  <span style="font-weight: bold;font-size:180%;">Oquer faz a palavra super sozinha?</p> 

                                                                                  <p>
                                                                                    </span> Faz referência a SuperClasse da Classe na qual ela é usada, usando o Operador Ponto ou seja Notação de Ponto você pode acessar qualquer membro da SuperClasse. E usando super() com Parenteses você pode acessar o construtor da SuperClasse e entre os Parênteses passar os parametros devidos aos argumentos do construtor.
                                                                                  </p>

                                                                                  <p>
                                                                                    <span style="font-weight: bold;font-size:180%;">Como invocar métodos da SuperClasse?</p> 

                                                                                    <p>
                                                                                      </span> Sabemos que herança significa que a SubClasse tem tudo que a SuperClasse tem porem, em alguns casos é viável para ECONOMIZAR código.
                                                                                    </p>

                                                                                    <p>
                                                                                      public class <span style="font-weight: bold;">SuperDaSuper</span>{
                                                                                    </p>

                                                                                    <p>
                                                                                      public String <span style="font-weight: bold;">metodoSuper</span>(){
                                                                                    </p>

                                                                                    <p>
                                                                                      <span style="font-weight: bold;">return &ldquo;SuperDaSuper&rdquo;;</span>
                                                                                    </p>

                                                                                    <p>
                                                                                      }<br />}
                                                                                    </p>

                                                                                    <p>
                                                                                      public class <span style="font-weight: bold;">SuperClasse</span> <span style="font-weight: bold;">extends</span> <span style="font-weight: bold;">SuperDaSuper</span>{
                                                                                    </p>

                                                                                    <p>
                                                                                      public String <span style="font-weight: bold;">metodoSuper</span>(){
                                                                                    </p>

                                                                                    <p>
                                                                                      <span style="font-weight: bold;">return super.metodoSuper() +&ldquo; SuperClasse&rdquo;;</span>
                                                                                    </p>

                                                                                    <p>
                                                                                      }
                                                                                    </p>

                                                                                    <p>
                                                                                      }</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                      <p>
                                                                                        public class <span style="font-weight: bold;">SubClasse</span> extends <span style="font-weight: bold;">SuperClasse</span>{
                                                                                      </p>

                                                                                      <p>
                                                                                        public String <span style="font-weight: bold;">up</span>(){
                                                                                      </p>

                                                                                      <p>
                                                                                        <span style="font-weight: bold;">return super.metodoSuper() +&ldquo; SubClasse&rdquo;;</span>
                                                                                      </p>

                                                                                      <p>
                                                                                        }
                                                                                      </p>

                                                                                      <p>
                                                                                        public static void main(String array[ ]){<br />SubClasse referencia = new SubClasse();<br /><span style="font-weight: bold;">System.out.println(referencia.up());</span>
                                                                                      </p>

                                                                                      <p>
                                                                                        }<br />}
                                                                                      </p>

                                                                                      <p>
                                                                                        <span style="font-weight: bold;font-size:180%;">Sobrescrita de Métodos:</span>
                                                                                      </p>

                                                                                      <p>
                                                                                        Simplesmente uma SubClasse que troca a implementação de um método da SuperClasse, Lembrando que a <span style="font-weight: bold;">assinatura</span> do método deve ser a mesma(Isso inclui Também Mesmo argumentos em Ordem, Tipo e Quantidade).<br />Então basicamente para um método ser considerado Sobrescrito deve ter mesma Assinatura e diferentes Implementações.<br /></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><br />public class <span style="font-weight: bold;">Funcionario</span>{</p> 

                                                                                        <p>
                                                                                          public void <span style="font-weight: bold;">metodo</span>(int x, double y){
                                                                                        </p>

                                                                                        <p>
                                                                                          }
                                                                                        </p>

                                                                                        <p>
                                                                                          }
                                                                                        </p>

                                                                                        <p>
                                                                                          public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                                        </p>

                                                                                        <p>
                                                                                          public void <span style="font-weight: bold;">metodo</span>(</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">int x, double y</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">){<br />int x = 0; // Mesma assinatura de metodo, troca de implementação</p> 

                                                                                          <p>
                                                                                            }
                                                                                          </p>

                                                                                          <p>
                                                                                            }
                                                                                          </p>

                                                                                          <p>
                                                                                            </span></span></span></span></span></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqpCWJHaJoI/AAAAAAAAAaE/9qsdx0l9wwA/s1600-h/heranca3.png"><img style="cursor: pointer; width: 320px; height: 168px;" src="http://localhost/www/wp0/uploads/heranca3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5380185653019027074" border="0" /></a>
                                                                                          </p>

                                                                                          <p>
                                                                                            <span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;">Clique na imagem para ampliar</span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                            <p>
                                                                                              A classe Gerente tem por Herança o &#8211; metodo() &#8211; Porem nesse caso o método herdado é sobrescrito na classe, VEJA que a implementação de metodo() na Classe <span style="font-weight: bold;">Funcionário</span> é diferente da implementação de metodo() na Classe <span style="font-weight: bold;">Gerente</span>.
                                                                                            </p>

                                                                                            <p>
                                                                                              <span style="font-weight: bold;">O método Sobrescrito não pode ter menos acessibilidade Vejamos:</span>
                                                                                            </p>

                                                                                            <p>
                                                                                              </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">public class <span style="font-weight: bold;">Funcionario</span>{</p> 

                                                                                              <p>
                                                                                                <span style="font-weight: bold;">public</span> void <span style="font-weight: bold;">metodo</span>(int x, double y){
                                                                                              </p>

                                                                                              <p>
                                                                                                }
                                                                                              </p>

                                                                                              <p>
                                                                                                }
                                                                                              </p>

                                                                                              <p>
                                                                                                public class <span style="font-weight: bold;">Gerente</span> extends <span style="font-weight: bold;">Funcionario</span>{
                                                                                              </p>

                                                                                              <p>
                                                                                                <span style="font-weight: bold;">private</span> void <span style="font-weight: bold;">metodo</span>(</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">int x, double y</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">){<br />int x = 0; // Mesma assinatura de metodo, troca de implementação</p> 

                                                                                                <p>
                                                                                                  }
                                                                                                </p>

                                                                                                <p>
                                                                                                  }</span></span></span></span></span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><br />Erro de Compilação, O modificador de acesso do Método Sobrescrito é menos acessível doque a do método Original, em</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">Funcionario temos:<br /></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">public</span> void <span style="font-weight: bold;">metodo</span>(int x, double y) &#8211; > Método da SuperClasse</span></span></span></span></span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"></p> 

                                                                                                  <p>
                                                                                                    EM Gerente </span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;"> temos a assinatura:<br /></span></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-weight: bold;">private</span> void <span style="font-weight: bold;">metodo</span>(</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">int x, double y</span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">) &#8211; > Método Sobrescrito</p> 

                                                                                                    <p>
                                                                                                      </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"></p> 

                                                                                                      <p>
                                                                                                        <span style="font-weight: bold;">ERRO DE COMPILAÇÃO</span>
                                                                                                      </p>

                                                                                                      <p>
                                                                                                        </span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:180%;"><br /></span></span></span></span><span style="font-weight: bold;"><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-size:180%;">É hora da revisão:</span></p> 

                                                                                                        <p>
                                                                                                          </span></span></span><span style="font-weight: bold;"><span style="font-size:100%;"><br /></span></span><span><span style="font-size:100%;">&#8211; Quando você declara um método, você cria a assinatura dele</p> 

                                                                                                          <p>
                                                                                                            &#8211; O bloco de código de um método é considerado a implementação dele<br /></span></span><span style="font-weight: bold;"><span style="font-size:100%;"><br /></span></span><span><span style="font-size:100%;">&#8211; Overload de método são caracterizados por métodos de mesma assinatura porem diferentes argumentos em tipo, ordem ou quantidade.</p> 

                                                                                                            <p>
                                                                                                              &#8211; Método Sobrecarregados se tiverem a mesma assinatura e diferentes argumentos em tipo,ordem ou quantidade podem ter tipo de retorno diferente
                                                                                                            </p>

                                                                                                            <p>
                                                                                                              &#8211; Podemos ter Overload de Construtores, que diz basicamente:<br />Várias maneiras de se construir um Objeto<br /></span></span><span style="font-weight: bold;"><span style="font-size:100%;"><br />&#8211; O this </span></span><span><span style="font-size:100%;">é usado para:<br /></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">*Resolve Ambiguidade<br />*Passar o objeto atual como Parametro<br /></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;">*Invocar um construtor da mesma classe</span></span></span></span></span></span><br /><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;"><span style="font-size:100%;"><br /></span></span></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><span style="font-size:100%;"><span style="font-size:100%;"><span><span style="font-size:100%;">&#8211; A palavra chave this em um construtor deve estar na primeira linha do construtor. Pode haver código depois de this mais não antes</p> 

                                                                                                              <p>
                                                                                                                &#8211; Se você usar this em um construtor para invocar outro, deve passar parametros normais ao construtor invocado
                                                                                                              </p>

                                                                                                              <p>
                                                                                                                &#8211; Construtores não são herdados
                                                                                                              </p>

                                                                                                              <p>
                                                                                                                &#8211; Para invocar o construtor da SuperClasse use a keyword super()
                                                                                                              </p>

                                                                                                              <p>
                                                                                                                &#8211; super() deve estar na primeira linha do construtor da SubClasse
                                                                                                              </p>

                                                                                                              <p>
                                                                                                                &#8211; super sem paranteses te da acesso a membros da SuperClasse e com parenteses ( ), te da acesso ao construtor da SuperClasse
                                                                                                              </p>

                                                                                                              <p>
                                                                                                                &#8211; Para ter Sobrescrita de um método apenas deixe a Mesma assinatura e troque a Implementação do método<br /></span></span><span style="font-weight: bold;"><span style="font-size:100%;"><br /></span></span><span><span style="font-size:100%;">&#8211; Métodos Sobrescritos devem ter mesma assinatura que o método original(isso inclui mesmos Argumentos em ordem,tipo e quantidade de argumentos) além do método sobrescrito não pode ter um modificador de acesso menos acessivel doque o método original.</span></span><span style="font-weight: bold;"><span style="font-size:100%;"><br /></span></span></span></span></span>
                                                                                                              </p>

Java Metodologias de Sistemas Objetos Classes

Java Metodologias de Sistemas Objetos Classes. Linguagem Java.

Sumário: Metodologia de Sistemas,Objetos,Classes

– O fundamento é não so ensinar Orientação a Objetos mais também a Arquitetura de JAVA(aqui eu não vou impor nada, vou dizer da onde vem) Importante intender que esses tutoriais se baseiam totalmente na Plataforma JAVA.
– Não considero um bom tutorial para se aprender, mais por curiosidade. Muitas coisas você pode até não saber como funciona, mais usa, mesmo porque muita gente usa a Lâmpada mais nem imagina como funciona a eletricidade certo?

Advertência: É necessária a leitura do(s) Post(s): Princípios Básicos: Voce Tem que saber e Teoria Geral dos Sistemas, Paradigmas conceituados!

<p>
  <span style="font-weight: bold;font-size:130%;">Oque é uma Metodologia?</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br />É um ciclo de vida no desenvolvimento do seu Programa. Programadores não setam e começam a desenvolver um programa ao invez disso, eles seguem um planejamento, um CICLO DE vida que é seguido.(Temos varios tipos de Metodologias, aqui darei exemplo de um TIPO).</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

  <p>
    <span style="font-weight: bold;font-size:130%;">Oque é escopo?</span><br />Domínio do problema * oque é que voce vai fazer* Qual o motivo daquilo
  </p>

  <p>
    </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;font-size:180%;">Qual será a Metodologia escolhida?</span></p> 

    <p>
      </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;">Eu realmente não tenho muito conhecimento sobre metodologias a fundo. De um modo geral resumi muitas as quais eu ja usei em uma muito simples(Desculpa se ja existe uma com essa ideia abreviada, ISSO não fui eu que inventei, é um RESUMO):</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

      <p>
        </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SphOf4_fInI/AAAAAAAAAE0/AOq9fkgelrg/s1600-h/Metodologias.png"><img style="cursor: pointer; width: 320px; height: 32px;" src="http://localhost/www/wp0/uploads/Metodologias.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132465048265330" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /><span style="font-weight: bold;">Clique na figura para ampliar</p> 

        <p>
          </span><span>Especificações = Classes<br /></span><br /><span style="font-size:100%;"><span style="font-weight: bold;">Análise -></span></span> É a definição concreta do escopo(domínio- Oque é!!!-) do seu problema. Um programa é feito em cima de uma NECESSIDADE(Essa necessidade é determinada no ESCOPO do problema). É um processo da análise de todas as necessidades referentes ao problema.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

          <p>
            <span style="font-size:100%;"><span style="font-weight: bold;">Projeto(Design) &#8211;</span></span> Pega-se todas as necessidades encontradas na etapa de Análise e cria-se ESPECIFICAÇÕES que tem como objeto resolver o domínio do problema.
          </p>

          <p>
            </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Codificação(Desenvolvimento) &#8211;</span> Todas as especificações criadas no estágio de Projeto agora se tornarão OBJETOS.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

            <p>
              <span style="font-weight: bold;">Testes &#8211;</span> Assegura que, a Junção de objetos criados na CODIFICAÇÃO resolve o domínio do problema(as necessidades) que o processo de análise encontrou.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

              <p>
                <span style="font-weight: bold;">Implementação &#8211;</span> Com o programa ja pronto, Existe a disponibilização para os Clientes.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                <p>
                  Trabalharemos aqui da seção Projeto em diante, o processo de Análise é importante(Alias o mais) porem não faz parte do Intuito desse Tutorial:</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                  <p>
                    <span style="font-weight: bold;">Executar e Testar fazem parte da Fase de Testes</span><br /><span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;"></p> 

                    <p>
                      Oque é um programa em java?</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                      <p>
                        </span><span style="color: rgb(0, 0, 0);font-family:arial;">Um Conjunto de Objetos.(Que juntos são capazes de RESOLVER ou dominio do problema(FASE DE ANÁLISE da Metodologia))</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                        <p>
                          <span style="font-weight: bold;">Oque é um Objeto?</span></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />É uma abstração de algo.Qualquer elemento capaz de ter COMPORTAMENTO e CARACTERÍSTICA.(Lembra-se de DADOS E FUNÇÃO do post Teoria Geral dos Sistemas, Paradigmas conceituados!? É a relaçao!!!) &#8211; Todo objeto tem duas coisas,ATRIBUTOS(CARACTERÍSTICAS) MÉTODOS (COMPORTAMENTO) &#8211; So precisa disso agora em mente, um OBJETO TEM 2 coisas.</span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                          <p>
                            <span style="font-weight: bold;">Desenhando e aprendendo:</span></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                            <p>
                              </span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SphOklWCgkI/AAAAAAAAAE8/DxZo7fRlxyQ/s1600-h/Objeto.png"><img style="cursor: pointer; width: 297px; height: 174px;" src="http://localhost/www/wp0/uploads/Objeto-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132545673495106" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /><span style="font-weight: bold;">Isso é um objeto, clique na imagem para ampliar</span></p> 

                              <p>
                                <span style="font-weight: bold;">Oque são Atributos?</span></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />São características do Objeto,O valor atribuido a um atributo é referenciado como o estado do objeto.<br />Vamos a um Exemplo:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />&#8211; Um objeto TV, tem o Atributo &#8211; COR &#8211; sua tv tem uma cor certo?</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                <p>
                                  </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Oque são Métodos?</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">São Comportamento. Vamos a um Exemplo:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />&#8211; um objeto TV, tem o coportamento &#8211; Ligar &#8211; você pode ligar sua tv certo?</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                  <p>
                                    <span style="font-weight: bold;">Desenhando e aprendendo:</span></span> <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphOpAnTOUI/AAAAAAAAAFE/onI4JBnPGeI/s1600-h/ObjetoTv.png"><img style="cursor: pointer; width: 191px; height: 174px;" src="http://localhost/www/wp0/uploads/ObjetoTv.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132621713127746" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Isso é um objetoTv Sem estado no atributo cor que sabe Ligar, clique na imagem para ampliar</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                    <p>
                                      <span style="font-weight: bold;">Onde eu armazeno Atributos no Objeto?</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"> Em Variaveis de Instancia &#8211; Por enquanto so saiba isso, Atributos estão nas variaveis de Instancia.(É pessimo o começo, cada hora eles dão um nome para um coisa, dão a volta ao mundo para não complicar, e COMPLICA MAIS AINDA). Variaveis Atributos guardam o ESTADO DO OBJETO.</p> 

                                      <p>
                                        </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Como eu crio objetos?</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"> Na fase 2 Projeto(Design) &#8211; Temos o conceito de ESPECIFICAÇÃO, cria-se um MOLDE para que seus objetos sigam.Na biologia temos o conceito de classe exemplo: mamíferos, caninos etc(Ou seja todo OBJETO que tenha CARACTERISTA(Atributos em COMUM)). Então cria-se uma classe para dela se CRIAR um objeto.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                        <p>
                                          <span style="font-weight: bold;">Oque é uma classe?</span></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />É uma especificação. Com uma Classe você pode criar Objetos, a Classe é uma especificação para Objetos isso significa, que é como a JVM irá construir os seus Objetos.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"> A jvm pega essa Especificação(Classe) cria os seus objetos e preenche os atributos dos objetos(que vai representar o estado do objeto).</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                          <p>
                                            <span style="font-weight: bold;">Onde moram os Objetos?</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">Isso é um nivel um pouco alto para quem esta aprendendo agora, porem eu acho muito melhor você aprender desenhando doque lendo,lendo,lendo,lendo e so lendo. Basicamente Objeto vivem na HEAP.Temos 2 áreas básicas que você tem que aprender, LOCAL VARIABLE E HEAP.(Local Variable e heap fazem parte da Arquitetura da JVM)</span><span style="color: rgb(0, 0, 0);font-family:arial;">.</p> 

                                            <p>
                                              <span style="font-weight: bold;"> </span></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Desenhando e aprendendo:</span> <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SphObBZIseI/AAAAAAAAAEs/LYNmfL-7tug/s1600-h/heapStack.png"><img style="cursor: pointer; width: 248px; height: 240px;" src="http://localhost/www/wp0/uploads/heapStack.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132381403984354" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /><span style="font-weight: bold;">Toda vez que for fazer algum Objeto, desenhe isso!!!</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                              <p>
                                                <span style="font-weight: bold;font-size:180%;"> </span></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:180%;">Processos em java:</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />Sabemos que um programa em execução vira processo. Todo processo tem ao menos uma thread(Não precisa estudar thread em java para saber isso!!!).</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                <p>
                                                  <span style="font-weight: bold;">Desenhando e aprendendo:</span></span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphOtp-VF7I/AAAAAAAAAFM/C-nvqyu9WMY/s1600-h/processo.png"><img style="cursor: pointer; width: 310px; height: 247px;" src="http://localhost/www/wp0/uploads/processo-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132701535049650" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                  <p>
                                                    <span style="font-weight: bold;">Kernel é o gerenciador de Recursos e tarefas do S.O. so precisa saber isso. Ele que &ldquo;controla&rdquo;.Clique na imagem para ampliar</span>
                                                  </p>

                                                  <p>
                                                    </span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;font-size:130%;">Oque temos basicamente em uma thread?</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;font-size:130%;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />Resumindo e somente para utilidade, toda thread tem uma STACK. Então todo processo tem ao menos uma thread, toda thread tem uma STACK.</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                    <p>
                                                      <span style="font-weight: bold;">Desenhando e aprendendo:</span></span> <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphOxK-jdCI/AAAAAAAAAFU/UyL1XrYH8uk/s1600-h/processoThread.png"><img style="cursor: pointer; width: 280px; height: 320px;" src="http://localhost/www/wp0/uploads/processoThread-1.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132761933968418" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /><span style="font-weight: bold;">Clique na imagem para ampliar</span></p> 

                                                      <p>
                                                        <span style="font-weight: bold;">Oque eu tenho dentro da Stack?</span></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />Toda Stack tem métodos. O método que será executado é aquele que esta no fim da STACK. O primeiro método que aprenderemos é o main. Se você não tiver o main, consequentemente não tem um método no fim da Stack, consequentemente não tem um programa que poderá ser PROCESSO.</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Nesse exemplo sim, AGORA TEMOS UM PROGRAMA QUE PODE SER PROCESSO.</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><a style="color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphO1MwzWTI/AAAAAAAAAFc/l9sL-bLVFxI/s1600-h/ProgramaProcesso.png"><img style="cursor: pointer; width: 280px; height: 320px;" src="http://localhost/www/wp0/uploads/ProgramaProcesso-2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5375132831132637490" border="0" /></a><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-weight: bold;">Clique na imagem para ampliar</span></span> <span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">Qual a relação Heap Local Variable e Stack?</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                        <p>
                                                          </span><span style="color: rgb(0, 0, 0);font-family:arial;">Farei uma coisa ruim, porem farei. Todo Objeto mora em Heap, logo todo processo mesmo que não use, TEM HEAP. Todo processo tem ao menos uma thread, toda thread tem uma STACK. Toda Stack trabalha empilhando Métodos(Toda vez que um método é invocado(Chamado, O método ta na hora de trabalhar!!!), o método entra na STACK.E o método main é invocado automaticamente). Todo método tem uma área que se chama LOCAL VARIABLE.(Só precisa saber disso.)</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                          <p>
                                                            O intuito é, mostrar oque é um objeto, oque é uma classe, oque é um PROCESSO e oque um PROCESSO EM JAVA PRECISA. No começo é meio confuso, mais Conforme o tempo te garanto que o entedimento doque esta fazendo, supera o de muita gente com experiência.</span><span style="color: rgb(0, 0, 0);font-family:arial;"></p> 

                                                            <p>
                                                              <span style="font-weight: bold; color: rgb(0, 0, 0);font-size:180%;">Erros de compilação:</span><br /> Todos os erros de compilação são erros de Sintaxe e Semântica ou seja erros na estrutura da Classe.<br />Exemplo: faltando ; , faltando { } .
                                                            </p>

                                                            <p>
                                                              </span><span style="color: rgb(0, 0, 0);font-family:arial;"><span style="font-size:130%;"><span style="font-weight: bold;">É hora da revisão:</span></span><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Todo processo tem ao menos uma thread(Não precisa saber de threads de java para saber isso)</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Toda thread tem uma Stack</span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0);font-family:arial;"><br />&#8211; Toda Stack tem que ter um método que esta no fim dela, que é oque sera executado(Normalmente usamos o main)</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Local Variable,heap,Stack fazem parte da Arquitetura da JVM</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Classes são especificações para criação de objetos</span><span style="color: rgb(0, 0, 0);font-family:arial;"><br /></span><span style="color: rgb(0, 0, 0);font-family:arial;">&#8211; Variaveis Atributo dizem qual é o estado atual do objeto</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);font-family:arial;">Próxima seção será mão na massa com tudo que vimos.<br />&#8211; Erros de Compilação são de Semântica e Sintaxe</p> 

                                                              <p>
                                                                </span><span style="color: rgb(0, 0, 0);font-family:arial;"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;">CYA DUDES!</span>
                                                              </p>

                                                              <div style="text-align: center; color: rgb(0, 0, 0); font-family: arial;">
                                                              </div>

                                                              <p>
                                                                <a style="color: rgb(0, 0, 0); font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/SphOxK-jdCI/AAAAAAAAAFU/UyL1XrYH8uk/s1600-h/processoThread.png"><br /></a><span style="color: rgb(0, 0, 0);font-family:arial;"> </span> <span style="color: rgb(0, 0, 0);font-family:arial;"></span>
                                                              </p>

Java Livros ebooks pdf

Java Livros ebooks pdf. Linguagem Java. HUMILDADE ACIMA DE TUDO, ninguem é bom o bastante!!!Por isso ajude

Prazer meu nome é Igor, ja estudei nos centros de treinamentos oficiais da Sun microsystem alem de Impacta e outras escolas.

Sun microsystem é a Empresa detentora dos direitos autorais de todo a Plataforma java Entrarei em mais detalhes sobre oque é a Plataforma e oque é a linguagem em proximas postagens.

Meus livros de Referência são:

Head First da Kathy Sierra, para quem não sabe ela trabalhou anos na Sun, E quem fez os livros dos cursos da propria Sun foi ela, Então acredite em mim OS LIVROS QUE A SUN DA TREINAMENTO e o Head First são incrivelmente parecidos.

Java Threads de Scott Oaks & Henry Wong, é realmente o melhor livro de Threads que eu ja li.

Sun, a Propria sun disponibiliza um tutorial ótimo, que eu sempre leio
http://java.sun.com/docs/books/tutorial/index.html

Jvm, http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html – Para muitos que acham que a linguagem em si é importante, Lembre-se que java é um Ecossistema Existem muitas coisas sobre a JVM que quase nenhum programador sabe.

Forum:
http://www.coderanch.com/forums/search/filters/-1
http://www.javaworld.com
http://forums.sun.com/sunsearch.jspa(Nada como estar em casa)

OPCODE
http://www.brics.dk/~mis/dOvs/jvmspec/ref-Java.html

JEDI (Java Education and Development Initiative), iniciativa para desenvolvimento e educação JAVA a distância), existe video Aulas, material didático e tudo de graça. E é uma iniciativa da própria SUN.
http://www.dfjug.org/DFJUG/jedi/index.jsp
Para video aulas:
http://jedi.wv.com.br/

Tiobe -> Ranking das linguagens de programação
*Indica a popularidade das linguagens de programação
http://www.tiobe.com/

Ted -> Novidades sobre o mundo da programação
www.ted.com

Dicas:

1 – Mais importante que ler livro é: – Aprenda a Desenhar – O proprio Head First diz sobre metacognição, seu cerebro trabalho muito melhor com imagens E vai por mim, Tentar aprender java fica MUITO MAIS FACIL DESENHANDO!!!

2 – Não tenha Pressa Sinta prazer pelo oque esta fazendo!

3 – Beba muita agua, quase 75% do corpo humano é agua, assim como qualquer atividade Fisica estudar gasta energia Hidrate seu corpo, antes de cuidar de qualquer Sistema, cuide de você!

4 – Reflita sobre oque esta lendo

5 – Discuta com as pessoas sobre oque aprendeu

6 – Saiba a hora de parar, muita calma!

Tem mais dicas no Head First para quem gostou.

Como ultimas de apresentação gostaria de dizer algo que eu aprendi uma vez em uma palestra sobre java:

– Existe um ciclo, como ele não citou nome eu o chamei de “ciclo do conhecimento”
É o seguinte, você sabe uma coisa Essa coisa você compartilha com 10 pessoas 10 pessoas compartilham com mais 10 pessoas cada uma dessas pessoas algumas pegaram aquilo que você sabia e começaram a refletir .daquilo achou – se “n” coisas erradas na coisa que você compartilhou, Logo aquilo volta para você_ Agora voce tem a coisa que sabia em Versão totalmente melhorada e sabemos que o principio é: EVOLUIR SEMPRE! .Muito ate parecido com o JCP do java(JCP(http://jcp.org/en/home/index) É um grupo de pessoas e empresas que discutem soluções e melhorias para a Plataforma java)

Bom muito prazer!!! E por favor se forem compiar, pelo menos referencie meu blog, A maioria das postagens nesse blog são resumos ou conclusões da integração de muitos livros, e quando eu sei a FONTE eu sempre as coloco.
CYA DUDES!