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>