{"id":529,"date":"2019-10-28T10:56:34","date_gmt":"2019-10-28T13:56:34","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=529"},"modified":"2019-10-28T10:56:36","modified_gmt":"2019-10-28T13:56:36","slug":"aprendendo-java-para-certificacao-8","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/aprendendo-java-para-certificacao-8\/","title":{"rendered":"Aprendendo Java Para Certifica\u00e7\u00e3o #8"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Identificadores<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Java tem regras para identificadores\ne elas se aplicam para dar nomes as vari\u00e1veis, m\u00e9todos, classes e campos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existem apenas tr\u00eas itens que\nvoc\u00ea deve se lembrar.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Os nomes devem come\u00e7ar com letra ou com os s\u00edmbolos\n$ ou _, ali\u00e1s estes dois s\u00edmbolos s\u00e3o os \u00fanicos que voc\u00ea pode utilizar em um\nnome.<\/li><li>Os n\u00fameros podem serem adicionados ao nome, mas\nn\u00e3o como primeira car\u00e1cter do nome.<\/li><li>Os nomes n\u00e3o devem ser iguais as palavras que o\nJava utiliza (s\u00e3o as palavras reservadas). O Java \u00e9 case sensitive com isto\nvoc\u00ea pode fazer varia\u00e7\u00f5es de palavras com o mesmo nome. Mas isto n\u00e3o \u00e9 uma boa\nideia.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0O exame n\u00e3o exige que voc\u00ea decore todas as palavras reservadas, mas as mais comuns \u00e9 bom voc\u00ea saber como por exemplo, class, abstract, os identificados das vari\u00e1veis primitivas e assim por diante.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"224\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-1.png\" alt=\"\" class=\"wp-image-530\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-1.png 567w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-1-300x119.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Outra t\u00e9cnica para dar nome aos\nidentificadores \u00e9 utilizar o CamelCase. Por exemplo, thisIsMyClass. A t\u00e9cnica\nconsiste em voc\u00ea adicionar a letra mai\u00fascula na nova palavra que est\u00e1 se\niniciando no identificador. \u00c9 mais f\u00e1cil ler desta maneira thisIsMyClass ou desta\nthisismyclass?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algumas regras que os programadores\nseguem s\u00e3o as seguintes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nome de vari\u00e1veis e m\u00e9todos come\u00e7am com a letra\nmin\u00fascula e seguem a t\u00e9cnica CamelCase.<\/li><li>Nome de classe come\u00e7am com a letra mai\u00fascula e seguem\na t\u00e9cnica CamelCase.<\/li><li>Apesar de poder utilizar o s\u00edmbolo $ para\ncome\u00e7ar a nomear um identificador n\u00e3o \u00e9 uma boa ideia, porque o compilador\nutiliza este s\u00edmbolo para alguns arquivos.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Vari\u00e1veis Locais<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Uma vari\u00e1vel local \u00e9 definida dentro de um\nm\u00e9todo. <\/li><li>Vari\u00e1veis locais precisam ser iniciadas antes\nde ser utilizadas. <\/li><li>Elas n\u00e3o t\u00eam valores padr\u00f5es e tem valores\naleat\u00f3rios antes de serem inicializadas.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O compilador n\u00e3o vai deixar voc\u00ea ler uma vari\u00e1vel que n\u00e3o foi inicializada. Por exemplo, o c\u00f3digo a seguir gera um erro de compila\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public int notValid(){\n    int y = 10;\n    int x;\n    int reply = x + y; \/\/n\u00e3o compila\n    return reply;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veja que o x n\u00e3o foi inicializado\ne quando o compilador verificar isto apontar\u00e1 o erro. A mensagem ser\u00e1: variable x might not have been initialized.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos ver mais um exemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void findAnswer(boolean check){\n    int answer;\n    int onlyOneBranch;\n    if(check){\n        onlyOneBranch = 1;\n\tanswer = 1;\n    }else{\n\tanswer = 2;\n    }\n    System.out.println(answer);\n    System.out.println(onlyOneBranch); \/\/n\u00e3o compila\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veja que as duas vari\u00e1veis int\nn\u00e3o foram inicializadas. Mas por que s\u00f3 a vari\u00e1vel onlyOneBranch n\u00e3o compila?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O compilador \u00e9 inteligente o bastante\npara saber que a vari\u00e1vel answer vai ter o valor atribu\u00eddo 1 ou 2, s\u00f3 que a onlyOneBranch\nn\u00e3o segue o mesmo princ\u00edpio, por isto o compilador gera um erro de compila\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inst\u00e2ncias e Vari\u00e1veis de Classe<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vari\u00e1veis que n\u00e3o s\u00e3o locais\ns\u00e3o conhecidas como vari\u00e1veis de inst\u00e2ncia ou vari\u00e1veis de classe. Vari\u00e1veis de\ninst\u00e2ncia s\u00e3o tamb\u00e9m chamadas de campos. Vari\u00e1veis de classe s\u00e3o compartilhadas\npor m\u00faltiplos objetos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inst\u00e2ncias e vari\u00e1veis de\nclasse n\u00e3o precisam ser inicializadas. Estas vari\u00e1veis possuem tipos padr\u00f5es de\ninicializa\u00e7\u00e3o. Voc\u00ea precisa saber os valores padr\u00f5es destas vari\u00e1veis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando n\u00e3o houver valor atribu\u00eddo a estas vari\u00e1veis o compilador sempre ir\u00e1 utilizar o valor da tabela. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"178\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-2.png\" alt=\"\" class=\"wp-image-531\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-2.png 473w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/10\/image-2-300x113.png 300w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Entendendo Escopo de Vari\u00e1vel<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vimos que vari\u00e1veis locais s\u00e3o\ndeclaradas dentro de m\u00e9todos. Quantas vari\u00e1veis locais voc\u00ea v\u00ea neste m\u00e9todo?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public void eat(int piecesOfCheese){<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int\nbitesOfCheese = 1;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">} <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1 duas vari\u00e1veis locais. bitesOfCheese\n\u00e9 declarada entro do m\u00e9todo e piecesOfCheese \u00e9 chamada por par\u00e2metro. Ambas\nvari\u00e1veis est\u00e3o dentro do escopo do m\u00e9todo. Isto significa que elas n\u00e3o podem\nser utilizadas fora do m\u00e9todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vari\u00e1veis locais nunca tem um escopo maior do que a do m\u00e9todo que ela est\u00e1 inserida. Contudo, ela pode ter um escopo menor. Por exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void eatIfHungry(boolean hungry){\n    if(hungry){\n        int bitesOfCheese = 1;\n    } \/\/bitesOfCheese saiu do seu escopo\n    System.out.println(bitesOfCheese); \/\/n\u00e3o compila\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A vari\u00e1vel hungry tem mesmo\nescopo do m\u00e9todo, bitesOfCheese tem um escopo menor. A vari\u00e1vel bitesOfCheese\ns\u00f3 pode ser utilizada dentro do escopo do if.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como voc\u00ea pode ter notado o\nescopo (\u00e1rea de atua\u00e7\u00e3o) s\u00e3o limitados pelas as chaves ({}).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tome cuidado no exame com os escopos, podem aparecer quest\u00f5es que podem tentar te confundir utilizando os escopos. Vamos a um exemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void eatMore(boolean hungry, int amountOfFood){\n    int roomInBelly = 5;\n    if(hungry){\n        boolean timeToEat = true;\n\twhile(amountOfFood > 0){\n            int amountEaten = 2;\n            roomInBelly = roomInBelly \u2013 amountEaten;\n            amountOfFood = amountOfFood \u2013 amountEaten;\n        }\n    }\n    System.out.println(amountOfFood);\n} <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quando voc\u00ea ver um c\u00f3digo deste\na primeira coisa \u00e9 identificar os blocos de c\u00f3digo (escopos). Neste caso h\u00e1\ntr\u00eas blocos, basta ver as aberturas e fechamentos das chaves. Neste exemplo\ntudo est\u00e1 correto, n\u00e3o h\u00e1 nada que possa dar um erro de compila\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos ver mais um c\u00f3digo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Mouse{\n\tstatic int MAX_LENGTH = 5;\n\tint length;\n\tpublic void grow(int inches){\n\t    if(length &lt; MAX_LENGTH){\n\t        int newSize = length + inches;\n\t\tlength = newSize;\n            }\n        }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lembrando que vari\u00e1veis de\ninst\u00e2ncia s\u00e3o tamb\u00e9m chamadas de campos. Vari\u00e1veis de classe s\u00e3o compartilhadas\npor m\u00faltiplos objetos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nesta classe n\u00f3s temos uma\nclasse de vari\u00e1vel(MAX_LENGTH), uma inst\u00e2ncia de vari\u00e1vel(length) e duas\nvari\u00e1veis locais(inches e newSize). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MAX_LENGTH \u00e9 uma classe de\nvari\u00e1vel porque tem a palavra static na sua declara\u00e7\u00e3o. Esta vari\u00e1vel permanece\nat\u00e9 o fim do programa. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">length \u00e9 uma vari\u00e1vel de\ninst\u00e2ncia, esta vari\u00e1vel s\u00f3 pode ser utilizada dentro do escopo do Mouse e esta\nvari\u00e1vel vai existir enquanto o objeto Mouse existir. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A vari\u00e1vel local inches s\u00f3\npode ser utilizada dentro do escopo grow e vai existir at\u00e9 o fim da execu\u00e7\u00e3o do\nm\u00e9todo grow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A vari\u00e1vel newSize s\u00f3 pode ser\nutilizada dentro do bloco if e vai existir at\u00e9 o fim da execu\u00e7\u00e3o do if.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos relembrar as regras do\nescopo.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Vari\u00e1vel local: vari\u00e1vel que fica dentro do escopo que inicia com a abertura da chave({) e termina com o fechamento da chave(}).<\/li><li>Vari\u00e1vel de inst\u00e2ncia: vari\u00e1vel inicia com a cria\u00e7\u00e3o do objeto e terminar\u00e1 quando o garbage collector fazer a limpeza.<\/li><li>Vari\u00e1vel de classe: vari\u00e1vel inicia com o in\u00edcio do programa e termina quando o programa \u00e9 fechado.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2764\ufe0f Curso Java Para Iniciantes<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"http:\/\/bit.ly\/java-swing\">http:\/\/bit.ly\/java-swing<\/a><\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc4d Curso de Desenvolvimento Web Completo<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"http:\/\/bit.ly\/2FnB5Sp\">http:\/\/bit.ly\/2FnB5Sp<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Identificadores O Java tem regras para identificadores e elas se aplicam para dar nomes as vari\u00e1veis, m\u00e9todos, classes e campos. Existem apenas tr\u00eas itens que voc\u00ea deve se lembrar. Os nomes devem come\u00e7ar com letra ou com os s\u00edmbolos $ ou _, ali\u00e1s estes dois s\u00edmbolos s\u00e3o os \u00fanicos que voc\u00ea pode utilizar em um [&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":[],"class_list":["post-529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-certificacao","category-java"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/529","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=529"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/529\/revisions"}],"predecessor-version":[{"id":532,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/529\/revisions\/532"}],"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=529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}