{"id":149,"date":"2019-07-03T14:30:45","date_gmt":"2019-07-03T14:30:45","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=149"},"modified":"2019-07-03T14:31:36","modified_gmt":"2019-07-03T14:31:36","slug":"aprendendo-java-para-certificacao-2","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/aprendendo-java-para-certificacao-2\/","title":{"rendered":"Aprendendo Java Para Certifica\u00e7\u00e3o #2"},"content":{"rendered":"\n<p class=\"has-text-color has-vivid-cyan-blue-color wp-block-paragraph\"><strong>Classes versus Arquivos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na maioria das vezes, cada classe\nJava \u00e9 definida pelo arquivo *.java. Normalmente \u00e9 p\u00fablica, que significa que\nqualquer c\u00f3digo pode invoc\u00e1-la. Curiosamente, Java n\u00e3o requer que a classe seja\np\u00fablica. Se voc\u00ea n\u00e3o sabe ou n\u00e3o lembra as declara\u00e7\u00f5es de uma classe visite: <a href=\"http:\/\/bit.ly\/2FOXbOb\">http:\/\/bit.ly\/2FOXbOb<\/a>. Um exemplo de classe\nsem declara\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Animal{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String\nname;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode colocar duas classes\nno mesmo arquivo. Quando \u00e9 feito isto, no m\u00e1ximo uma das classes \u00e9 permitido\nser p\u00fablica. Exemplo:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class Animal{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private\nString name;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Animal2{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea tem uma classe p\u00fablica\no arquivo deve ter o mesmo nome, pegando o exemplo anterior, se voc\u00ea nomear o\narquivo para Animal2 o programa n\u00e3o ir\u00e1 compilar. <\/p>\n\n\n\n<p class=\"has-text-color has-vivid-cyan-blue-color wp-block-paragraph\"><strong>Escrevendo um M\u00e9todo main()<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um programa Java come\u00e7a executando\no m\u00e9todo main(). Um m\u00e9todo main() \u00e9 uma ponte entre o come\u00e7o dos processos do\nJava, o qual manipula a Java Virtual Machine(JVM), e o come\u00e7o do c\u00f3digo do programador.\nA JVM conversa com o sistema operacional para alocar mem\u00f3ria e tempo de CPU,\nacessos de arquivos e assim por diante. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O m\u00e9todo main() nos prende\nneste processo, mantendo o nosso c\u00f3digo rodando. Uma simples classe com um m\u00e9todo\nmain() se aparece assim:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class Zoo{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public\nstatic void main(String[] args){<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo n\u00e3o faz nada \u00fatil.\nN\u00e3o h\u00e1 outra instru\u00e7\u00e3o a n\u00e3o ser o come\u00e7o (o ponto de partida). Todo c\u00f3digo\nJava deve ter esta instru\u00e7\u00e3o, sen\u00e3o n\u00e3o ir\u00e1 fazer compila\u00e7\u00e3o do programa. Para\ncompilar este exemplo deve-se fazer a seguinte instru\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javac Zoo.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se n\u00e3o aparecer nenhum erro, voc\u00ea\nconseguiu compilar e executar um programa Java. Se apareceu algum erro, veja se\nvoc\u00ea tem o JDK instalado. Fiz um v\u00eddeo mostrando a instala\u00e7\u00e3o do JDK <a href=\"http:\/\/bit.ly\/aula3CJ\">http:\/\/bit.ly\/aula3CJ<\/a> e outro mostrando a compila\u00e7\u00e3o\ne execu\u00e7\u00e3o <a href=\"http:\/\/bit.ly\/aula4CJ\">http:\/\/bit.ly\/aula4CJ<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para compilar um programa voc\u00ea\ndeve ter um arquivo .java. O nome do arquivo deve ser o mesmo da classe. O\nresultado da compila\u00e7\u00e3o ser\u00e1 um arquivo bytecode com o mesmo nome, mas com a\nextens\u00e3o .class. Bytecode \u00e9 a instru\u00e7\u00e3o para a JVM saber o que deve ser feito. Para\nexecutar o programa depois de compilado n\u00e3o se deve colocar nenhuma extens\u00e3o\ndepois da palavra java, como no exemplo: java Zoo. \u00c9 errado colocar por exemplo,\njava Zoo.class ou java Zoo.java. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos revisar as regras:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Cada arquivo deve ter uma \u00fanica classe\nprincipal, mesmo aqueles que tem mais de uma classe, a principal ser\u00e1 a\np\u00fablica.<\/li><li>O nome do arquivo deve ser o mesmo da classe e\ndeve ter extens\u00e3o .java. <\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos dar uma olhada novamente\nno m\u00e9todo main(). A keyword public \u00e9 o que chamamos de modificador de acesso(access\nmodifier). Esta declara\u00e7\u00e3o exp\u00f5e o arquivo para que outros o invoque, ou seja,\npossa ser acessado de qualquer parte do programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A keyword static permite que o\nm\u00e9todo seja invocado apenas pelo nome da classe, por exemplo, Zoo.main(). Desta\nmaneira o Java n\u00e3o precisa criar um objeto para chamar o m\u00e9todo main(). N\u00e3o sabe\no que \u00e9 um objeto? Veja o artigo <a href=\"http:\/\/bit.ly\/2FNRIqG\">http:\/\/bit.ly\/2FNRIqG<\/a>.\nSe o m\u00e9todo main() n\u00e3o estiver presente na classe principal do programa, voc\u00ea\nver\u00e1 uma mensagem de erro. Se o m\u00e9todo main n\u00e3o for static, um erro tamb\u00e9m ser\u00e1\napresentado. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A keyword void representa um\ntipo de retorno(return type). Um m\u00e9todo que n\u00e3o retorna nenhum tipo de dado\npara o seu invocador. N\u00f3s temos no m\u00e9todo main() uma lista de par\u00e2metros que \u00e9\num array do Java o String[] args. H\u00e1 outras maneiras de escrever este array,\nString args[] ou String&#8230; args; o compilador aceita qualquer um deles. A\nvari\u00e1vel args representa os valores que a lista cont\u00e9m, estes valores podem ser\nlidos quando a JVM inicia. A vari\u00e1vel n\u00e3o precisa chamar args, mas por padr\u00e3o\ntodos deixam com este nome. Os [] representa o array. Um array \u00e9 uma lista de\ntamanho fixa que cont\u00e9m valores do mesmo tipo. A outra representa\u00e7\u00e3o de um\narray \u00e9 o (&#8230;) que \u00e9 chamado de varargs. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Agora vamos fazer alguns\ntestes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class Zoo{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public\nstatic void main(String[] args){<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(args[0]);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(args[1]);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">args[0] acesse o primeiro elemento\nde um array. Um array come\u00e7a a ser contado do zero. Execute o programa:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javac Zoo.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java Zoo Bronx Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A sa\u00edda dever ser:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bronx<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O programa identificou corretamente\nas duas palavras passadas como argumento. Os espa\u00e7os entre elas s\u00e3o utilizados\npara separar os argumentos. Se precisar de espa\u00e7o em uma palavra do argumento\nvoc\u00ea precisa usar aspas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javac Zoo.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java Zoo \u201cSan Diego\u201d Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A sa\u00edda deve ser:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">San Diego<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todos os argumentos s\u00e3o tratados\ncomo objetos String, mesmo que representem outros tipos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javac Zoo.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java Zoo Zoo 2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A sa\u00edda deve ser:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O programa espera dois argumentos\ne se eu passar s\u00f3 um. O que acontece?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javac Zoo.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java Zoo Zoo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Java ir\u00e1 ler o primeiro argumento,\nmas quando for ler o segundo&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"782\" height=\"160\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/1-2.png\" alt=\"\" class=\"wp-image-150\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/1-2.png 782w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/1-2-300x61.png 300w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/1-2-768x157.png 768w\" sizes=\"auto, (max-width: 782px) 100vw, 782px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Gera uma exce\u00e7\u00e3o porque n\u00e3o h\u00e1\nnada no segundo argumento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lembrando que para compilar um programa voc\u00ea deve ter instalado na m\u00e1quina o JDK, mas se for s\u00f3 executar um programa voc\u00ea precisa apenas do JRE, que \u00e9 o Java padr\u00e3o que todos instalam na m\u00e1quina. Para executar um programa Java basta a m\u00e1quina ter o Java instalado, n\u00e3o importa qual o sistema operacional esta m\u00e1quina estiver operando j\u00e1 que o programa roda na JVM.<\/p>\n\n\n\n<p class=\"has-background has-pale-cyan-blue-background-color wp-block-paragraph\">Livro fonte:&nbsp;<strong>OCA: Oracle&nbsp;Certified&nbsp;Associate&nbsp;Java SE 8&nbsp;Programmer&nbsp;I&nbsp;Study&nbsp;Guide:&nbsp;Exam&nbsp;1Z0-808 (English&nbsp;Edition)<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/amzn.to\/2JjU9Cn\">https:\/\/amzn.to\/2JjU9Cn<\/a><\/p>\n\n\n\n<p class=\"has-background has-pale-cyan-blue-background-color wp-block-paragraph\"><strong>&nbsp;Curso de Desenvolvimento Web Completo&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&gt;&gt;&gt;&nbsp;<a href=\"http:\/\/bit.ly\/2FnB5Sp\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/bit.ly\/2FnB5Sp<\/a>&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"has-background has-pale-cyan-blue-background-color wp-block-paragraph\"><strong><br>&nbsp;Curso Java Para Iniciantes&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&gt;&gt;&gt;&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/bit.ly\/java-swing\" target=\"_blank\">http:\/\/bit.ly\/java-swing<\/a>&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#java&nbsp;#certifica\u00e7\u00e3o&nbsp;<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Classes versus Arquivos Na maioria das vezes, cada classe Java \u00e9 definida pelo arquivo *.java. Normalmente \u00e9 p\u00fablica, que significa que qualquer c\u00f3digo pode invoc\u00e1-la. Curiosamente, Java n\u00e3o requer que a classe seja p\u00fablica. Se voc\u00ea n\u00e3o sabe ou n\u00e3o lembra as declara\u00e7\u00f5es de uma classe visite: http:\/\/bit.ly\/2FOXbOb. Um exemplo de classe sem declara\u00e7\u00e3o. class [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":144,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,1],"tags":[39,5],"class_list":["post-149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-certificacao","category-java","tag-certificacao","tag-java"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":4,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/149\/revisions\/154"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/144"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}