{"componentChunkName":"component---src-templates-blog-post-js","path":"/java-iniciante-pt2/","result":{"data":{"markdownRemark":{"html":"<p>No <a href=\"https://programadev.com.br/java-iniciante/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">artigo</a> anterior foi apresentado a linguagem Java, foi abordado um pouco da história, como criar um projeto <strong>Java</strong> no <strong>IntelliJ</strong>, variáveis, contantes, tipos e operadores.</p>\n<p>Dando continuidade nesse artigo será abordado as estruturas de controle do <strong>Java</strong> como condicionais, laços de repetição e <strong>arrays</strong>. No final desse artigo você será capaz de entender o propósito de cada uma dessas estruturas de controle, saberá como usá-las e também será abordado o tema <strong>arrays</strong> e como eles se relacionam com laços de repetição.</p>\n<h2 id=\"IfElse\" style=\"position:relative;\">If/Else<a href=\"#IfElse\" aria-label=\"IfElse permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>A primeira estrutura de controle a ser abordada será a estrutura de controle condicional <strong>If/Else</strong> que pode ser traduzido para <strong>Se/Senão</strong>. Essa estrutura faz uso direto da lógica <strong>Booleana</strong> que foi vista no primeiro artigo para que alguma decisão seja tomada no código.</p>\n<p>A estrutura <strong>if/else</strong> funciona a partir de um valor <em>booleano</em> onde caso seja verdadeiro entrará na primeira condição e caso não seja verdadeiro entrará na segunda opção:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>declaração<span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Para entender melhor vamos explorar um exemplo básico onde temos um software que precisa avaliar se uma pessoa é maior de 18 anos e caso seja irá exibir uma mensagem e caso não seja irá exibir outra, vamos também aproveitar para começar a ver algumas bibliotecas padrão do Java que nos auxiliam como a API <em>java.time</em>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">LocalDate</span> dataNascimento <span class=\"token operator\">=</span> <span class=\"token class-name\">LocalDate</span><span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span><span class=\"token number\">1986</span><span class=\"token punctuation\">,</span> <span class=\"token number\">03</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> dataHoje <span class=\"token operator\">=</span> <span class=\"token class-name\">LocalDate</span><span class=\"token punctuation\">.</span><span class=\"token function\">now</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token class-name\">Period</span> period <span class=\"token operator\">=</span> <span class=\"token class-name\">Period</span><span class=\"token punctuation\">.</span><span class=\"token function\">between</span><span class=\"token punctuation\">(</span>dataNascimento<span class=\"token punctuation\">,</span> dataHoje<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">18</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"É maior de idade\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Não é maior de idade\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Fim da execução\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Entendo o código acima temos a utilização da classe <strong>LocalDate</strong> que vem do pacote <em>java.time</em> que foi inserido no <strong>Java 8</strong> e facilita muito o trabalho com datas, fazemos uso do método <em>of</em>, não se preocupe agora em entender o que é um método mas saiba que ele representa uma ação que será executada, onde é passado o ano, mês e dia e então é atribuído a uma variável chamada <strong>dataNascimento</strong>, logo abaixo é usado novamente a classe <strong>LocalDate</strong> porém com o método <em>now</em> que é usado quando queremos capturar a data atual e por fim atribuímos ele na variável <strong>dataHoje</strong>, note que foi utilizado a palavra reservada <strong>var</strong> ao invés da classe <strong>LocalDate</strong> que é um recurso do <strong>Java 9</strong> e foi deixado aqui pra exemplo, em um caso real é bom manter um padrão onde deixamos todas as variáveis com <strong>var</strong> ou com o seu retorno para não haver confusão no código. Por fim logo abaixo foi utilizado a classe <strong>Period</strong> e o método <em>between</em> que faz a comparação entre duas data e conseguimos extrair o período entre elas.</p>\n<p>A classe <strong>Period</strong> possui algumas informações que podemos trabalhar e entre elas trás o período de anos entre as duas datas e com isso conseguimos aplicar a lógica que pretendemos, que é verificar se pela data de nascimento já se passaram 18 anos ou não, então focando no trecho que interessa para entender a estrutura <strong>if</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">18</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Se fossemos ler esse trecho poderíamos ler da seguinte forma: <strong>Se for verdade que o período de anos é maior do que 18 então…</strong></p>\n<p>Dessa forma caso isso seja verdade então o código a ser executado será o que estiver entre as chaves:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">18</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"É maior de idade\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>E para entender a estrutura <strong>else</strong> basta entender que caso a condição dentro do bloco <strong>if</strong> não seja verdadeira quem será executado será o que estiver entre chaves após a palavra <strong>else</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">18</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"É maior de idade\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Não é maior de idade\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Então rodando o exemplo acima de uma pessoa com data de nascimento em 25 de Março de 1986 (35 anos) a saída no terminal será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">É maior de idade\nFim da execução</code></pre></div>\n<p>Repassando mais uma vez passo a passo a execução do código dando foco ao bloco <strong>if/else</strong>:</p>\n<ul>\n<li>1° Dentro do bloco <strong>if</strong> foi avaliado se 35 é maior do que 18.</li>\n<li>2° Isso sendo verdade <strong>true</strong> ele “entrou” dentro da primeira condição e executou o que tinha lá dentro, nesse caso o print com a frase <strong>É maior de idade</strong>.</li>\n<li>3° Não será executado o que tem dentro do <strong>else</strong> já que o primeiro bloco foi executado.</li>\n<li>4° Prosseguiu com o programa e printou a frase <strong>Fim da execução</strong>.</li>\n</ul>\n<p>Um último ponto importante do <strong>if/else</strong> no <strong>Java</strong> é que as chaves <strong>{}</strong> no if não são obrigatórias porém caso sejam omitidas somente a primeira linha após o <strong>if</strong> será executada como sendo parte do bloco <strong>if</strong>, isso facilita a escrita mas pode gerar confusões e bugs onde comportamentos que só deveriam ser executados dentro do <strong>if</strong> aparentemente estão sendo executados fora:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">40</span><span class=\"token punctuation\">)</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Executa lógica do if\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Só pode executar se for maior de 40\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Fim da execução\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Olhando para o código acima parece que a intenção é executar os dois prints somente se for maior de 40 anos, porém rodando esse código a saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Só pode executar se <span class=\"token keyword\">for</span> maior de <span class=\"token number\">40</span>\nFim da execução</code></pre></div>\n<p>Isso ocorreu por que somente a primeira linha após o <strong>if</strong> foi considerada ao bloco, é como se para o compilador o código estivesse assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>period<span class=\"token punctuation\">.</span><span class=\"token function\">getYears</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">40</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Executa lógica do if\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Só pode executar se for maior de 40\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Fim da execução\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E nesse caso foi avaliado que 35 não é maior do que 40 e não foi executado a primeira linha porém o programa prosseguiu e executou a linha que o desenvolvedor não queria que fosse executada caso a idade fosse menor do que 40, gerando um bug no código que nem sempre é fácil de entender a primeira vista.</p>\n<h2 id=\"Switch\" style=\"position:relative;\">Switch<a href=\"#Switch\" aria-label=\"Switch permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Agora vamos imaginar que você é um desenvolvedor em uma empresa de pagamentos eletrônicos e você precisa receber os pagamentos de diversas bandeiras de cartão e processá-los, nesse exemplo hipotético você poderia usar uma estrutura <strong>if/else if/if</strong> para processar essa lógica:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">String</span> cartao <span class=\"token operator\">=</span> <span class=\"token string\">\"Master\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">.</span><span class=\"token function\">equals</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Master\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Master\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">.</span><span class=\"token function\">equals</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Visa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Visa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">.</span><span class=\"token function\">equals</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Amex\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Amex\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">.</span><span class=\"token function\">equals</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Elo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Elo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Não sei o cartão\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>A estrutura <strong>if/else if/else</strong> não foi abordada no tópico anterior por um motivo, esse código é difícil de ler e dar manutenção e eu considero uma má prática.</p>\n<p>Pensando nisso existe a estrutura <strong>switch</strong> onde existe um pouco mais de legibilidade do código, apresentando a estrutura <strong>switch</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">switch</span><span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>declaração<span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">case</span> <span class=\"token operator\">*</span>condição<span class=\"token operator\">*</span><span class=\"token operator\">:</span>\n    <span class=\"token comment\">//Ação</span>\n    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n    <span class=\"token comment\">//Ação</span>\n    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>A estrutura do <strong>switch</strong> é maior mas não é complicada, na inicialização do bloco <strong>switch</strong> informamos o dado que deve ser avaliado, e aqui entra um ponto importante do <strong>switch</strong> já que ele trabalha com outros tipos de dados diferentemente do <strong>if/else</strong> que só trabalha com <strong>boolean</strong>, podendo trabalhar com os tipos primitivos byte, short, char, e int, também trabalha com <strong>Enums</strong>, ainda não chegamos nesse assunto mas em breve chegaremos, <strong>Strings</strong> e as classes <strong>Wrappers</strong> <strong>Character</strong>, <strong>Byte</strong>, <strong>Short</strong>, e <strong>Integer</strong>, também não chegamos nelas mas logo será abordado.</p>\n<p>Voltando ao <strong>switch</strong>, informamos o que será avaliado e caso seja algum dos valores que determinamos nas cláusulas <strong>case</strong> o código é executado, por fim caso nenhum dos <strong>case</strong> seja executado a cláusula <strong>default</strong> é executada, vamos ver como ficaria o exemplo de cartões utilizando essa abordagem:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">String</span> cartao <span class=\"token operator\">=</span> <span class=\"token string\">\"Master\"</span><span class=\"token punctuation\">;</span>\n        \n<span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Master\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Master\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Visa\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Visa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Amex\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Amex\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Elo\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Elo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Não sei o cartão\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Executando esse código a saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Processa Master</code></pre></div>\n<p>O código fica mais fácil de ler, você pode estar se perguntando: O que significa o <strong>break</strong> dentro do <strong>switch</strong>?</p>\n<p>Ele serve como cláusula de escape do bloco <strong>switch</strong>, isso significa que se não fosse adicionado o <strong>break</strong> em cada <strong>case</strong> a partir do momento em que um <strong>case</strong> fosse executado todos os abaixo seriam executados, vamos tirar o <strong>break</strong> e executar o código para deixar claro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">String</span> cartao <span class=\"token operator\">=</span> <span class=\"token string\">\"Master\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>cartao<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Master\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Master\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Visa\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Visa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Amex\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Amex\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token string\">\"Elo\"</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processa Elo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Não sei o cartão\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>A saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Processa Master\nProcessa Visa\nProcessa Amex\nProcessa Elo\nNão sei o cartão</code></pre></div>\n<p>Como o valor era <strong>Master</strong> e ele era o primeiro <strong>case</strong> após ele ser executado todos os outros <strong>case</strong> foram executados e até mesmo o <strong>default</strong> foi executado.</p>\n<p>Outra combinação possível é a situação onde mais de um <strong>case</strong> possui o mesmo processamento, vamos imaginar que queremos processar os meses do ano que tem 30 dias ou 31 dias podemos fazer assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"> <span class=\"token keyword\">int</span> mes <span class=\"token operator\">=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>mes<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">1</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">3</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">5</span><span class=\"token operator\">:</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">7</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">8</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">10</span><span class=\"token operator\">:</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">12</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Mês com 31 dias\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">4</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">6</span><span class=\"token operator\">:</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">9</span><span class=\"token operator\">:</span> <span class=\"token keyword\">case</span> <span class=\"token number\">11</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Mês com 30 dias\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">case</span> <span class=\"token number\">2</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Fevereiro pode ter 28 ou 29 dias\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Mês inválido\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>A saída desse programa será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Mês com <span class=\"token number\">31</span> dias</code></pre></div>\n<p>É possível aninhar cláusulas <strong>case</strong> mas tomando cuidado para isso não ferir a legibilidade do código.</p>\n<h2 id=\"While\" style=\"position:relative;\">While<a href=\"#While\" aria-label=\"While permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>O bloco <strong>while</strong> inaugura um tipo diferente de estrutura de controle, pois ele é uma estrutura de repetição e ele pode ser traduzido como <strong>enquanto</strong>, isso significa que ele irá se repetir enquanto uma condição for verdadeira, então podemos entender que o bloco <strong>while</strong> trabalha com <strong>booleanos</strong>. Para ficar mais claro segue a declaração do bloco <strong>while</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>condição<span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Como podemos ver é bem curta a declaração dele.</p>\n<p>Então vamos imaginar um problema simples onde queremos mostrar na tela os números de 0 à 5, o <strong>while</strong> poderia ser usado nesses casos:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span> indice <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>indice <span class=\"token operator\">&lt;=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>indice<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    indice<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Rodando o código termos como saída:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token number\">0</span>\n<span class=\"token number\">1</span>\n<span class=\"token number\">2</span>\n<span class=\"token number\">3</span>\n<span class=\"token number\">4</span>\n<span class=\"token number\">5</span></code></pre></div>\n<p>O interessante nesse código é que foi feito uso de pós-incremento com o operador <strong>++</strong>, então analisando passo-a-passo o código:</p>\n<ul>\n<li>1° A variável <strong>indice</strong> começa com o valor 0.</li>\n<li>2° O bloco <strong>while</strong> faz a checagem se o valor de <strong>indice</strong> é menor ou igual a 5, se for executa o que estiver dentro do bloco <strong>while</strong>.</li>\n<li>3° Dentro do bloco <strong>while</strong> printa na tela o valor atual da variável <strong>indice</strong>.</li>\n<li>4° Pós-incrementa o valor da variável <strong>indice</strong> em 1 então nesse momento ela irá valer 1.</li>\n<li>5° Retorna para o início do bloco <strong>while</strong> e verifica se o valor da variável <strong>indice</strong> é menor ou igual a 5, se for executa tudo de novo e se não for sai do laço de repetição. </li>\n</ul>\n<p>O laço <strong>while</strong> também é muito usado quando se trabalha com <strong>Iterators</strong> que são coleções de dados no <strong>Java</strong> ligadas umas as outras onde cada uma sabe se existe um próximo na lista, mas não veremos isso por enquanto pois hoje em dia os <strong>Iterators</strong> perderam um pouco da força que tinham pois existem outras formas que as versões mais novas do <strong>Java</strong> lidam com esse tipo de estrutura de dados.</p>\n<h2 id=\"DoWhile\" style=\"position:relative;\">Do/While<a href=\"#DoWhile\" aria-label=\"DoWhile permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Agora iremos entender a estrutura <strong>Do/While</strong>, que seria algo mais parecido com <strong>Faça/Enquanto</strong> traduzindo literalmente para o português, apesar da palavra <strong>while</strong> existir a ideia dele é um pouco diferente da estrutura <strong>while</strong> do tópico acima. A ideia por trás desse laço de repetição é que uma ação seja executada primeiramente e após isso seja avaliado se deve ser repetida ou não, a declaração dele é assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">do</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token operator\">*</span>declaração<span class=\"token operator\">*</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>expressão<span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>No trecho de código acima existe a inicialização do bloco com a palavra <strong>do</strong>, então o que estiver dentro desse bloco será executado pelo menos uma vez e após isso existe a palavra <strong>while</strong> onde será avaliada alguma expressão <strong>booleana</strong> e caso seja <strong>true</strong> irá repetir o que estiver dentro do bloco <strong>do</strong>.</p>\n<p>Vamos pensar em um exemplo onde queremos mostrar na tela os números de 0 até 10 usando a estrutura <strong>do/while</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span> contador <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">do</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Contador é: \"</span> <span class=\"token operator\">+</span> contador<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    contador<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>contador <span class=\"token operator\">&lt;</span> <span class=\"token number\">11</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Finalizado programa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Rodando esse programa a saída na tela será assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Contador é: <span class=\"token number\">0</span>\nContador é: <span class=\"token number\">1</span>\nContador é: <span class=\"token number\">2</span>\nContador é: <span class=\"token number\">3</span>\nContador é: <span class=\"token number\">4</span>\nContador é: <span class=\"token number\">5</span>\nContador é: <span class=\"token number\">6</span>\nContador é: <span class=\"token number\">7</span>\nContador é: <span class=\"token number\">8</span>\nContador é: <span class=\"token number\">9</span>\nContador é: <span class=\"token number\">10</span>\nFinalizado programa</code></pre></div>\n<p>Perceba que no início do código o bloco <strong>do</strong> é executado de primeira, imprime na tela a mensagem, após isso o valor da variável <strong>contador</strong> é incrementada, na sequência é avaliado dentro do <strong>while</strong> se o valor da variável <strong>contador</strong> é menor do que 11 e caso seja verdade (<strong>true</strong>) é repetido o fluxo dentro do bloco <strong>do</strong>, quando a variável <strong>contador</strong> chega o valor 11 o programa sai da estrutura <strong>do/while</strong> e o programa continua.</p>\n<p>Para deixar um exemplo um pouco mais real ao invés de ficar percorrendo por números, vamos imaginar um programa que simule um despertador, ele irá tocar a primeira vez e depois irá verificar se está no modo soneca, caso ainda esteja irá tocar até que a pessoa desligue o alarme.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">InterruptedException</span> <span class=\"token punctuation\">{</span>\n\n    <span class=\"token keyword\">do</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"SOAR ALARME: dim! drim! alarme de relógio\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token function\">despertadorEstaNaSoneca</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Finalizado programa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">boolean</span> <span class=\"token function\">despertadorEstaNaSoneca</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">InterruptedException</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">Thread</span><span class=\"token punctuation\">.</span><span class=\"token function\">sleep</span><span class=\"token punctuation\">(</span><span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Random</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">nextBoolean</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Explicando o código acima temos o bloco <strong>do</strong> que inicia o despertador, na sequência temos um método chamado <em>despertadorEstaNaSoneca</em> que verifica se ainda está na soneca e devolve um <strong>booleano</strong>, ele usa o <strong>Thread.sleep(1000);</strong> para esperar um segundo e depois executa o <strong>new Random().nextBoolean();</strong> que escolhe se será <strong>true</strong> ou <strong>false</strong> randomicamente, isso significa que aleatoriamente vai ser escolhido se será <strong>true</strong> ou <strong>false</strong>, enquanto o <em>despertadorEstaNaSoneca</em> rodar e for <strong>true</strong> o bloco <strong>do</strong> irá se repetir. Não se preocupe muito com toda a sintaxe pois tudo isso será explicado mais pra frente, no momento em que foi rodado esse programa a saída foi:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">SOAR ALARME: dim<span class=\"token operator\">!</span> drim<span class=\"token operator\">!</span> alarme de relógio\nSOAR ALARME: dim<span class=\"token operator\">!</span> drim<span class=\"token operator\">!</span> alarme de relógio\nFinalizado programa</code></pre></div>\n<p>Se for executado de novo esse programava pode haver mudança pois como é escolhido de forma aleatoria se é <strong>true</strong> ou <strong>false</strong> pode ser que demore mais.</p>\n<h2 id=\"For\" style=\"position:relative;\">For<a href=\"#For\" aria-label=\"For permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>O laço de repetição <strong>for</strong> é uma estrutura de repetição para situações onde é conhecido quantas vezes é necessário repetir uma tarefa. Em comparação com <strong>while</strong> e <strong>do/while</strong> onde o laço será repetido até que uma condição seja atendida a declaração do <strong>for</strong> já pede de antemão que seja informado a quantidade de vezes que será executado o código:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>declaração <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> declaração <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> declaração <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// código a ser executado</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Entendendo cada parte da declaração:</p>\n<ul>\n<li>A primeira declaração é executada uma vez dentro do bloco <strong>for</strong> e é a inicialização da variável de controle.</li>\n<li>A segunda declaração define a condição que será executada no bloco <strong>for</strong>.</li>\n<li>A terceira declaração será executada sempre que houver uma repetição no bloco <strong>for</strong>.</li>\n</ul>\n<p>Adicionando um exemplo mais prático iremos imprimir na tela os números de 0 até 10:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> indice <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> indice <span class=\"token operator\">&lt;=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span> indice<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>indice<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>E a saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token number\">0</span>\n<span class=\"token number\">1</span>\n<span class=\"token number\">2</span>\n<span class=\"token number\">3</span>\n<span class=\"token number\">4</span>\n<span class=\"token number\">5</span>\n<span class=\"token number\">6</span>\n<span class=\"token number\">7</span>\n<span class=\"token number\">8</span>\n<span class=\"token number\">9</span>\n<span class=\"token number\">10</span></code></pre></div>\n<p>Podemos ver que as três condições do bloco <strong>for</strong> foram atendidas, primeiro iniciamos uma variável chamada <em>indice</em> com valor 0, depois foi definido a condição de parada desse bloco sendo o valor da variável <em>indice</em> menor ou igual a 10 e por fim declaramos que a cada fez que o bloco for repetido o valor de <em>indice</em> deve ser incrementado em 1 e dentro do bloco mandamos imprimir o valor atual da variável <em>indice</em>.</p>\n<p>É muito útil esse laço de repetição quando estamos trabalhando com listas do <strong>Java</strong> pois essa estrutura de dados já possui formas para sabermos o seu tamanho total, no exemplo abaixo fica um pouco mais claro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">var</span> lista <span class=\"token operator\">=</span> <span class=\"token class-name\">List</span><span class=\"token punctuation\">.</span><span class=\"token function\">of</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Arroz\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Feijão\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Macarrão\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Óleo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> indice <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> indice <span class=\"token operator\">&lt;</span> lista<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> indice<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>lista<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>indice<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>No código acima simulamos que temos uma lita de mercado e no laço <strong>for</strong> fazemos uso do método <strong>size</strong> que já diz qual é o tamanho dessa lista e dentro do bloco <strong>for</strong> mandamos imprimir o valor da lista de acordo com o índice. Valendo ressaltar que ainda não foi abordado listas e coleções de dados mas adiantando que listas no <strong>Java</strong> são coleções de dados que começam com o seu índice em 0.</p>\n<p>Executando esse código a saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Arroz\nFeijão\nMacarrão\nÓleo</code></pre></div>\n<p>Existe outra forma de executar o laço <strong>for</strong> que é chamado de <strong>Enhanced-for</strong> ou <strong>for melhorado</strong> em tradução livre e é assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span> l <span class=\"token operator\">:</span> lista<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Ele possui uma forma mais curta para escrever o código <strong>for</strong> porém ele só é possível de ser feito em coleções de dados que tenham o método <strong>size</strong> implementado pois por debaixo dos panos ele vai executar um <strong>for</strong> tradicional, ele é mais uma facilidade para o desenvolvedor.</p>\n<h2 id=\"BreakContinue\" style=\"position:relative;\">Break/Continue<a href=\"#BreakContinue\" aria-label=\"BreakContinue permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Agora que foi apresentado as estruturas de controles e repetições iremos ver as cláusulas <strong>break</strong> e <strong>continue</strong>, o <strong>break</strong> foi previamente apresentado na explicação do <strong>switch</strong> e agora ele será aprofundado em detalhes.</p>\n<p>Imagine a seguinte situação onde você, como desenvolvedor, precisa escrever um código onde você possui uma lista e se houver algum valor específico nessa lista você precisa que pare todo o processamento ou dependendo do valor você quer ignorar e ir para o próximo valor, como poderia ser feito isso? É isso que o <strong>break</strong> e o <strong>continue</strong> fazem, vamos abordar primeiramente o <strong>break</strong>.</p>\n<p>A cláusula <strong>break</strong> interrompe um laço de repetição ou no caso do switch para sair do bloco, vamos ver no exemplo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"i = \"</span> <span class=\"token operator\">+</span> i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>i <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Vai sair do for no valor 5\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"proxima iteracao\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Finalizou\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E a saída desse programa será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">i <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">3</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">4</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">5</span>\nVai sair <span class=\"token keyword\">do</span> loop no valor <span class=\"token number\">5</span>\nFinalizou</code></pre></div>\n<p>Se não houvesse o <strong>break</strong> nesse código ele iria imprimir até o valor 10 pra depois finalizar mas o <strong>break</strong> forçou o encerramento dele, o mesmo podemos fazer com <strong>while</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">&lt;=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"i = \"</span> <span class=\"token operator\">+</span> i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>i <span class=\"token operator\">==</span> <span class=\"token number\">7</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Vai sair do while no valor 7\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    i<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>E teremos como saída:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">i <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">3</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">4</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">5</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">7</span>\nVai sair <span class=\"token keyword\">do</span> <span class=\"token keyword\">while</span> no valor <span class=\"token number\">7</span>\nFinalizou</code></pre></div>\n<p>Mas e se precisarmos somente ignorar algum valor mas sem parar o processamento?</p>\n<p>Para esse caso entra a cláusula <strong>continue</strong> que vai pular aquela iteração e passar para a próxima, vamos ver no exemplo abaixo para ficar mais claro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>i <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Vai pular no valor 5\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"i = \"</span> <span class=\"token operator\">+</span> i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Proxima iteracao\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Finalizou\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E teremos como saída:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">i <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">3</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">4</span>\nProxima iteracao\nVai pular no valor <span class=\"token number\">5</span>\ni <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">7</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">8</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">9</span>\nProxima iteracao\ni <span class=\"token operator\">=</span> <span class=\"token number\">10</span>\nProxima iteracao\nFinalizou</code></pre></div>\n<p>Aqui podemos ver que no momento em que a variável <strong>i</strong> estava com valor 5 a cláusula <strong>continue</strong> pulou para o próximo valor e continuou o processamento. </p>\n<h2 id=\"Arrays\" style=\"position:relative;\">Arrays<a href=\"#Arrays\" aria-label=\"Arrays permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p><strong>Arrays</strong> em <strong>Java</strong> são uma forma de guardar múltiplos valores em uma única variável e isso é algo muito útil para trabalhar com coleções de dados, conjuntos ou listas.</p>\n<p>Existe duas formas de inicializar um <strong>array</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> array <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Aqui podemos ver a sintaxe de um array onde é obrigatório definir o tipo desse array, o seu tamanho inicial e é necessário os colchetes <strong>[]</strong>, podemos também declarar um <strong>array</strong> da seguinte forma:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span> outroArray<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Onde os colchetes <strong>[]</strong> estão após o nome da variável mas não é muito usual e também agora podemos declarar um <strong>array</strong> sem precisar dizer explicitamente o seu tipo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">var</span> arraySemTipoExplicito <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Apesar desse <strong>array</strong> não possuir o seu explicitamente tipado na variável o compilador consegue inferir o seu tipo então apesar da variável <em>arraySemTipoExplicito</em> não ter um tipo declarado o compilador entende que é um <strong>array</strong> de <strong>int</strong> com 10 posições.</p>\n<p>Um ponto em comum com essas três declarações é que quando criamos um array utilizando a palavra reservada <strong>new</strong>, que é a palavra usada para criarmos em memória o <strong>array</strong>, é obrigatório informar o tamanho que esse <strong>array</strong> vai ter pois é necessário reservar espaços na memória para guardar os valores que podem ser preenchidos.</p>\n<p>Após criar um <strong>array</strong> podemos inserir valores em cada posição dele e para isso temos que entender como um array é indexado. O índice de um array sempre começa em 0 então um array de 10 posições é acessível de 0 até 9, isso é muito importante pois se tentarmos acessar um posição inválida dentro de um <strong>array</strong> será lançado um erro no programa.</p>\n<p>Então para adicionar valores em cada posição do <strong>array</strong> pode ser feito dessa maneira:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">array<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">8</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">9</span><span class=\"token punctuation\">;</span>\narray<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Caso adicionemos valor em um índice que não existe:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">array<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>No momento da execução será lançado o seguinte erro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">Exception</span> in thread <span class=\"token string\">\"main\"</span> java<span class=\"token punctuation\">.</span>lang<span class=\"token punctuation\">.</span><span class=\"token class-name\">ArrayIndexOutOfBoundsException</span><span class=\"token operator\">:</span> <span class=\"token class-name\">Index</span> <span class=\"token number\">10</span> out of bounds <span class=\"token keyword\">for</span> length <span class=\"token number\">10</span></code></pre></div>\n<p>Porém existe uma outra maneira para inicializar um <strong>array</strong> e iremos ver agora:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arrayInicializado <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>A diferença é basicamente que já criamos um <strong>array</strong> com os valores definidos.</p>\n<p>Como todo <strong>array</strong> possui indices podemos acessar os seus valores através dos indices:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>arrayInicializado<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token number\">4</span></code></pre></div>\n<p>Seguindo a mesma lógica conseguimos alterar um valor dentro de um <strong>array</strong> pelo índice também:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">arrayInicializado<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n<span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>arrayInicializado<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E agora o valor que inicialmente era 1 agora será 10.</p>\n<p>Outra propriedade muito útil dos <strong>arrays</strong> é que quando nós criamos um <strong>array</strong> precisamos definir o seu tamanho, seja com <strong>new int[10]</strong> ou com os valores dentro de chaves <strong>{}</strong> e como <strong>arrays</strong> tem tamanho fixo nós temos condições de saber o seu tamanho sendo então muito usado para laços de repetição do tipo <strong>for</strong>, bastando com que seja usada a propriedade <strong>length</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> indice <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> indice <span class=\"token operator\">&lt;</span> arrayInicializado<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> indice<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>arrayInicializado<span class=\"token punctuation\">[</span>indice<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Ou podemos fazer uso do <strong>Enhanced-for</strong> também nesses casos:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> valor<span class=\"token operator\">:</span> arrayInicializado<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>valor<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>A diferença está no tamanho desse <strong>for</strong> e que não precisamos acessar o <strong>array</strong> no índice (<em>arrayInicializado[indice]</em>).</p>\n<p>Vimos até o momento o modo mais comum de utilizar <strong>arrays</strong>, porém <strong>arrays</strong> podem ser multidimensionais isso significa que são <strong>arrays</strong> dentro de <strong>arrays</strong> não é algo muito comum mas dependendo do contexto pode ser utilizado porém sinceramente em minha experiência não é algo que se vê todo dia mas é bom ter esse conhecimento caso necessite resolver problemas ou caso se depare com algo assim em algum momento, então no exemplo iremos criar um <strong>array</strong> de duas dimensões:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arrayDimensional <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token punctuation\">{</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">7</span><span class=\"token punctuation\">}</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>A primeira coisa que podemos notar é que precisamos adicionar dois colchetes <strong>[]</strong> na declaração da variável <strong>arrayDimensional</strong> e para cada <strong>array</strong> envolvemos com chaves <strong>{}</strong>, mas também poderíamos ter feito assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> outroArrayDimensional <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Para acessar, inserir ou alterar os valores dentro de um <strong>array</strong> multidimensional é necessário informar os dois valores, o primeiro para indicar qual <strong>array</strong> será utilizado e outro valor para informar qual o índice queremos acessar desse <strong>array</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>arrayDimensional<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Então nesse exemplo queremos acessar o primeiro <strong>array</strong>, lembrando que os índices sempre começam em 0, e dentro do primeiro <strong>array</strong> queremos o terceiro elemento, nesse caso o valor 3.</p>\n<p>Se fosse necessário fazer um <strong>for</strong> em <strong>array</strong> multidimensional é possível e ficaria desse jeito:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> arrayDimensional<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;</span> arrayDimensional<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>arrayDimensional<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Nesse caso não é possível fazer uso do <strong>Enhanced-for</strong> pois é necessário trabalhar com os índices para acessar os dois <strong>arrays</strong>.</p>\n<p>Podemos ver que é possível então trabalhar com <strong>arrays</strong> tridimensionais ou até com mais dimensões porém como podemos ver no código acima a legibilidade começa a ficar comprometida e para cada dimensão a mais no <strong>array</strong> precisaríamos aninhar outro laço <strong>for</strong> o que pode comprometer também a performance do programa dependendo da quantidade de elementos que cada <strong>array</strong> contenha.</p>\n<h2 id=\"Conclusao\" style=\"position:relative;\">Conclusão<a href=\"#Conclusao\" aria-label=\"Conclusao permalink\" class=\"anchor after\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a></h2>\n<p>Nesse artigo foi apresentado as estruturas de controle como <strong>if/else</strong> e <strong>switch</strong> vimos como criá-los e como usá-los, também vimos as estruturas de repetição com os laços <strong>while</strong>, <strong>do/while</strong> e <strong>for</strong> como podemos trabalhar com eles e em quais momentos usar cada um. Entendemos também as cláusulas <strong>break</strong> e <strong>continue</strong> como elas podem ser úteis quando precisamos interromper um processamento ou então ignorar um processamento mas sem parar o fluxo e por fim foi apresentado a estrutura de dados <strong>array</strong> e como podemos criá-los, acessar seus valores e percorrer seus dados com o laço <strong>for</strong>.</p>\n<p>O link para o projeto que está no <a href=\"https://github.com/guilhermegarcia86/helloworld\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub</a></p>","fields":{"slug":"/java-iniciante-pt2/"},"frontmatter":{"date":"13 de setembro de 2021","description":"Iniciando na programação backend com Java","title":"Primeiros passos com Java II","tags":["Java","Beginner"],"author":"Guilherme Alves","image":{"id":"98bb809b-739c-5630-870f-afa069443215","publicURL":"/static/b8f38a191988eeac03188a92bcafc1ba/ArtigoII.png","childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB5ElEQVQ4y3WT204iQRCGp0/DHJkZQYwYcI0E44IH1IR4s3DNhZh9/3f5t6qmGwbiXlT6VP3XV1XdkdYaWrWmlIKKImhrYesL2F4PNklh8gKG/cRXyZxN/L1pP0ZhEZx5baoaupdAOwdTVm2QjpD4qwCiTiwKhwdHvlQ17ZzIbNmH8WL6jFLrHwQPUb0xjc1ySjeBIUI3uJTUu1mckh7T7RD6TRLjA2sMbJrJJUcp26L0QqYjak5Ej4KdVOM4bgtLwv8z9nPWnay7okLIB1W/j6auMZ1O8fvxEVejK0wnE5nfjMeY0JzXv25v8bRcYjabYTgctqLnXVae0NJzWa1W2O12eHl+xubPRuaLxQLvb29Yr9fYbrfYf31hu9ngnXylYUSsz2vIkZIkEQqOPL6+xpjIRqORjBdNgyLPMRgMUFcVetSolPyzxSsUvYrI1z/qPk7eZEp2djSyxdRpppcLZ/VM0hTFxyeKmwli7xMFJ0OdZdE+1ZIpmIiNaZu6kc6HwMZfvr+7w9/vb8wfHoReBJmopmakFO1AaVrKhEmdOz54EuU132GQ+XyO/X6PJdU4fFsR5A6XZYmiKMTyLENGxmNOkdkyv8fGtQ6fIDydg2C3JkwgxSban8RYiM8lfanpsfZB/B/tTDWBS63PpgAAAABJRU5ErkJggg==","aspectRatio":1.4096916299559472,"src":"/static/b8f38a191988eeac03188a92bcafc1ba/0823f/ArtigoII.png","srcSet":"/static/b8f38a191988eeac03188a92bcafc1ba/c67b7/ArtigoII.png 320w,\n/static/b8f38a191988eeac03188a92bcafc1ba/d3930/ArtigoII.png 640w,\n/static/b8f38a191988eeac03188a92bcafc1ba/0823f/ArtigoII.png 1280w,\n/static/b8f38a191988eeac03188a92bcafc1ba/cec22/ArtigoII.png 1746w","sizes":"(max-width: 1280px) 100vw, 1280px"}}}},"timeToRead":20}},"pageContext":{"slug":"/java-iniciante-pt2/","previous":{"fields":{"slug":"/java-iniciante/"},"frontmatter":{"title":"Primeiros passos com Java","date":"06 set, 2021"}},"next":{"fields":{"slug":"/java-iniciante-pt3/"},"frontmatter":{"title":"Primeiros passos com Java III","date":"27 set, 2021"}}}},"staticQueryHashes":["63159454"]}