{"componentChunkName":"component---src-templates-blog-post-js","path":"/java-iniciante/","result":{"data":{"markdownRemark":{"html":"<h2 id=\"Historia\" style=\"position:relative;\">História<a href=\"#Historia\" aria-label=\"Historia 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>Com sua primeira versão lançada em 1995 por <strong>James Gosling</strong> pela <strong>Sun Microsystems</strong> a linguagem <strong>Java</strong> se popularizou muito pois usava uma síntaxe que tentava se assemelhar com C/C++ porém sem algumas das dificuldades que uma linguagem de nível mais baixo trás consigo. Ela trouxe uma abordagem diferente das linguagens que eram convencionadas à época com o lançamento da <strong>JVM</strong> (Java Virtual Machine), um ambiente virtual onde o código é executado e a possíbilidade de executar o código em múltiplas plataformas não mais havendo a necessidade de compilar versões específicas, não que seja algo exclusivo do <strong>Java</strong> o próprio <strong>Erlang</strong> já fazia isso em 1986 com a sua <strong>virtual Machine</strong>, <strong>JAM</strong> e posteriormente com a <strong>BEAM</strong>, com isso o <strong>Java</strong> adotou o slogan <em>“Write once, run anywhere”</em> (Escreva uma vez, rode em qualquer lugar). Outro ponto muito importante foi a adoção de um paradigma orientado a objetos (POO), pois era muito mais comum e utilizado o paradigma procedural apesar do C++ já possuir a possibilidade de utilizar o paradigma orientado a objetos, isso trouxe mais flexibilidade e dinâmismo ao código e por fim o terceiro ponto que considero que foi uma grande vantagem foi a utilização de um <strong>Garbage Collector</strong>, que consiste em um mecânismo que faz o controle de memória do código, era um problema muito comum na linguagem C onde o desenvolvedor precisa lidar com alocação e liberação de memória no código, o que nem sempre é fácil ou trivial de se fazer e que acabava causando “vazamentos” de memória em aplicações. Tudo isso fez com que o <strong>Java</strong> se tornasse muito popular para desenvolvimento de aplicações que rodassem embarcadas em outras aplicações, os <strong>applets</strong>, desenvolvimento <strong>desktop</strong>, <strong>mobile</strong> e <strong>web</strong>.</p>\n<p>Em 2005 a <strong>Oracle</strong> adquiriu a <strong>Sun</strong> por US$7.4 bilhões e prometeu continuar desenvolvendo e melhorando a linguagem, algo que era uma cobrança recorrente da comunidade pois lançamentos de melhorias demoravam muito. Até o momento desse artigo o <strong>Java</strong> está na versão 11LTS com previsão da versão 17LTS em 14 de setembro de 2021.</p>\n<h2 id=\"Instalacao\" style=\"position:relative;\">Instalação<a href=\"#Instalacao\" aria-label=\"Instalacao 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>Para instalar basta seguir essas orientações de acordo com o seu sistema operacional:</p>\n<p><a href=\"https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-A7E27B90-A28D-4237-9383-A58B416071CA\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Windows</a></p>\n<p><a href=\"https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-linux-platforms.htm#JSJIG-GUID-737A84E4-2EFF-4D38-8E60-3E29D1B884B8\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Linux</a></p>\n<p><a href=\"https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-macos.htm#JSJIG-GUID-2FE451B0-9572-4E38-A1A5-568B77B146DE\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Mac</a></p>\n<h2 id=\"Iniciando-um-projeto\" style=\"position:relative;\">Iniciando um projeto<a href=\"#Iniciando-um-projeto\" aria-label=\"Iniciando um projeto 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>Nesses exemplos eu irei usar a IDE <strong>IntelliJ</strong> para criar o projeto e rodar os exemplos, a escolha é pela facilidade que essa IDE oferece de configuração e o suporte para o <strong>Java</strong>.</p>\n<p>Poderíamos também criar os arquivos <em>.java</em> e compilá-los diretamente por linha de comando com o <em>javac</em> porém o intuito é fazer da forma mais parecida com o que é feito no dia a dia de um desenvolvedor.</p>\n<p>Primeiramente é necessário instalar o <a href=\"https://www.jetbrains.com/help/idea/installation-guide.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">IntelliJ</a>, após abrí-lo clique em <strong>New Project</strong> como na imagem abaixo:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 75.4601226993865%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA9UlEQVQoz+2Sy0oEMRBF+0PUlbgSO93pd1eqKkl1Mj3DrP0P/X+wZgKDKxVXLoRDURBOuDekmnjjKBy3INlxmAEnZUVdbgCgA0TA1dHiaEUG8jqr4PaYzumQkdgR225obW/7oW6sYhr7bNpXO77F/A50DoKSfExpP4HKHR4nfxwwtqtvZr1Yj3ZJO3nRIAXmGIIEL+Qjqu8jhw3QV0+TPI5yV+O9oQeD/eJKC021ABVmIC2ideb1ynUZF6hiypKyI4/sNbax/UvdKCX2F5i2U/mQ91OQVN6g7YbG9mV+S6WOtkIOn+UfcpFv/Mt/WqZw+cO/kz8AIXTE3kFWKlUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Tela New Project\"\n        title=\"Tela New Project\"\n        data-src=\"/static/7cc0abbe6b92e5ef679c923026a935a3/a6d36/novo-projeto-intellij.png\"\n        data-srcset=\"/static/7cc0abbe6b92e5ef679c923026a935a3/222b7/novo-projeto-intellij.png 163w,\n/static/7cc0abbe6b92e5ef679c923026a935a3/ff46a/novo-projeto-intellij.png 325w,\n/static/7cc0abbe6b92e5ef679c923026a935a3/a6d36/novo-projeto-intellij.png 650w,\n/static/7cc0abbe6b92e5ef679c923026a935a3/2e195/novo-projeto-intellij.png 782w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Após isso irá aparecer várias opções mas por enquanto basta deixar selecionado a opção <strong>Java</strong> e clicar em <strong>Next</strong>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 101.840490797546%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAABYlAAAWJQFJUiTwAAABe0lEQVQ4y7WUzUrEMBCA+zgK6qKI7jZtMj+ZpGm7KMr6c/AgHn0BD159b6cbKLqtiojwEcIwX5NMJi2ou+muHmR9h2lD7S2GHr2gDwqwfANKLGTz3D+9+dsXHnil7j6EIE0bu7WEwCJANAWJHFJhmTlI7WxpjKnMymIZ0ymmRRWPbTwsef8MpuydwWIJBTapu7xq2jWH5MivapX7FbeLEg/O7dESZjlcwkkJBcUoXa9nULMGrh1YYIfsADP2CzSzoJTaiwstUuUwYxyYYcTqe6xuWxpJPUu0QDlU/aiNsrHOWDCj80sZdkK/kKu/yOZf5U8VmRZsJ1QD1bnyDnWi969Y5I9pQ8KsjNr0LHlBTeLQSJPIB20h/URm21G0K2sopE4fBoeomqJ5efNjTvZ1MiOjVy362PiYSKIynmKUtZ1n5Gq72x2m1RqCs2eevZh6gOox8lXBpleirBycW6tjXrPc7qj4sRn0eVbE1y4+hs01NrHtyEctqv6n3gFm5ivUD2R7ewAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Tela New Project\"\n        title=\"Tela New Project\"\n        data-src=\"/static/c5834354272934f5d074df58bf72da8a/a6d36/novo-projeto-intellij2.png\"\n        data-srcset=\"/static/c5834354272934f5d074df58bf72da8a/222b7/novo-projeto-intellij2.png 163w,\n/static/c5834354272934f5d074df58bf72da8a/ff46a/novo-projeto-intellij2.png 325w,\n/static/c5834354272934f5d074df58bf72da8a/a6d36/novo-projeto-intellij2.png 650w,\n/static/c5834354272934f5d074df58bf72da8a/c946b/novo-projeto-intellij2.png 805w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Na próxima tela selecione a opção <strong>Create project from template</strong> e a opção <strong>Command Line App</strong> ficará disponível para clicar, isso já criará um programa <strong>Java</strong> executável.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 102.45398773006133%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAwklEQVQ4y+2TTQvCMAyG+7+aNh/ruk23wTzIVBCcelE8iP5/jHqZHuYQvAkP4aHJC8mhxoesKPKQJiTEQkh+JJywiU1Xrq7l4lwtL9n8zM1xBAeenXC6NjRpk2aX1BupO6o6rrajqPdYtMYCWLCPCtYpdjRgwDOgfINnDRMgf4Onf/gf/nHYkejXVFSe3pcPYZQgaaZwiH0kRG3Zl73kPaztAXToLk4dwTnw2O+a4cN0QreIeeFjheXKp6W6vqT5ROsNEhMwFLwX61IAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Tela New Project\"\n        title=\"Tela New Project\"\n        data-src=\"/static/9cf4a4e45dcd6de92bd373bfe0fc6178/a6d36/novo-projeto-intellij3.png\"\n        data-srcset=\"/static/9cf4a4e45dcd6de92bd373bfe0fc6178/222b7/novo-projeto-intellij3.png 163w,\n/static/9cf4a4e45dcd6de92bd373bfe0fc6178/ff46a/novo-projeto-intellij3.png 325w,\n/static/9cf4a4e45dcd6de92bd373bfe0fc6178/a6d36/novo-projeto-intellij3.png 650w,\n/static/9cf4a4e45dcd6de92bd373bfe0fc6178/2ad15/novo-projeto-intellij3.png 801w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>E por fim é necessário nomear o projeto, definir a pasta onde será salvo e o nome do pacote base. Os dois primeiros são simples de entender mas o terceiro é necessário pois todo programa <strong>Java</strong> é organizado em pacotes onde o código fica e este nome deve ser único por aplicação então foi convencionado de que o nome do pacote deveria ser o a <strong>URL</strong> da empresa ao contrário nesse caso ficou assim: <strong>br.com.company</strong>.</p>\n<p>E após isso basta clicar em <strong>Finish</strong> o projeto será criado.</p>\n<h2 id=\"Entendendo-o-primeiro-projeto\" style=\"position:relative;\">Entendendo o primeiro projeto<a href=\"#Entendendo-o-primeiro-projeto\" aria-label=\"Entendendo o primeiro projeto 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>Quando um projeto novo é criado automaticamente é criado a classe <strong>Main.java</strong> com o seguinte código:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">package</span> <span class=\"token namespace\">br<span class=\"token punctuation\">.</span>com<span class=\"token punctuation\">.</span>company</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Main</span> <span class=\"token punctuation\">{</span>\n\n    <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 punctuation\">{</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Essa é a sintaxe básica de um programa <strong>Java</strong> pois todo programa executável em <strong>Java</strong> necessita ter um método de entrada chamado <strong>main</strong> que seja <strong>public static void</strong>, entenderemos melhor o que isso significa adiante, e que receba um <strong>array</strong> de <strong>String</strong>, também entenderemos mais adiante o que isso significa, mas saiba que sem isso o programa não consegue ser executado pois no momento da execução de um programa o <strong>Java</strong> tenta localizar um método que siga esse modelo para iniciar.</p>\n<p>Note também que na primeira linha do código aparece o nome do pacote.</p>\n<h2 id=\"Variaveis\" style=\"position:relative;\">Variáveis<a href=\"#Variaveis\" aria-label=\"Variaveis 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>Variáveis são posições de memória que são capazes de reter e representar expressões, elas existem em tempo de execução de um programa e tem nomes que são escolhidos pelo desenvolvedor para as identificar.</p>\n<p>Esclarecendo melhor a explicação acima, uma variável nada mais é do que algo onde podemos colocar um valor e depois podemos trocar por outro, 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\">int</span> numero <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\nnumero <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>No trecho acima foi criado uma variável com nome “numero”, por debaixo dos panos o <strong>Java</strong> irá reservar um espaço em memória para guardar o valor que foi definido, primeiramente com o número 1 e em seguida foi adicionado outro valor para a variável “numero” com o valor 2. Nesse momento outro espaço de memória é criado e nele é guardado o valor 2. Isso só é possível pois estamos usando uma variável e como o seu nome dá a entender o seu valor pode ser mudado.</p>\n<p>Perceba também que antes da a variável “numero” tem a palavra <strong>int</strong>, isso acontece pois o <strong>Java</strong> é uma linguagem fortemente tipada, isso significa que tudo deve possuir um identificador de qual tipo é, nesse caso <strong>int</strong> representa os números inteiros, existem outros tipos e os veremos mais adiante.</p>\n<p>Para criar uma variável é necessário informar o seu tipo, um nome e um valor:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">tipo  nome     valor\n<span class=\"token keyword\">int</span>   numero <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Porém a partir do <strong>Java 11</strong> foi adicionado inferência de tipo, que significa que não precisamos dizer qual é o tipo de uma variável que a própria linguagem irá saber 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> numero <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Basta adicionar a palavra reservada <strong>var</strong> que ele implicitamente irá entender que estamos trabalhando com um tipo numérico.</p>\n<p>Porém o <strong>Java</strong> continua sendo fortemente tipado o que significa que uma variável não pode ser definida de um tipo e depois receber outro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//Exemplo de código que não funciona</span>\n<span class=\"token keyword\">int</span> numero <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\nnumero <span class=\"token operator\">=</span> <span class=\"token string\">\"a\"</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Esse código não será compilado pela linguagem e receberemos uma mensagem de erro.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">var</span> numero <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\nnumero <span class=\"token operator\">=</span> <span class=\"token string\">\"a\"</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Esse código também não será compilado e também receberemos uma mensagem de erro pois mesmo sem dizer qual o tipo da variável “numero” quando atribuímos o valor “1” para ela o próprio compilador já sabe que implicitamente essa variável é de um tipo numérico e sendo assim não poderia receber outro valor que não fosse um tipo numérico.</p>\n<h2 id=\"Constantes\" style=\"position:relative;\">Constantes<a href=\"#Constantes\" aria-label=\"Constantes 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>Nem sempre teremos valores que são mutáveis e as vezes a intenção é que não seja possível que esse valor se altere. Por exemplo imaginando que exista um programa que faça contas matemáticas e utilize o número π (PI) para calcular a circunferência de um círculo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">double</span> pi <span class=\"token operator\">=</span> <span class=\"token number\">3.14159265359</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">double</span> circunferencia <span class=\"token operator\">=</span> pi <span class=\"token operator\">*</span> diametro <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token operator\">*</span> pi <span class=\"token operator\">*</span> raio<span class=\"token punctuation\">;</span></code></pre></div>\n<p>Agora suponha que por algum descuido alguém mude o valor da variável <strong>pi</strong>, todos os lugares que usarem essa variável serão afetadas e o resultado estará errado o que pode causar inúmeros problemas como no exemplo abaixo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">double</span> pi <span class=\"token operator\">=</span> <span class=\"token number\">3.14159265359</span><span class=\"token punctuation\">;</span>\npi <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">double</span> circunferencia <span class=\"token operator\">=</span> pi <span class=\"token operator\">*</span> diametro <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token operator\">*</span> pi <span class=\"token operator\">*</span> raio<span class=\"token punctuation\">;</span></code></pre></div>\n<p>Para solucionar esse tipo de situação existem as <strong>constantes</strong> que são como variáveis porém o seu valor é definido uma única vez e não pode ser alterado. No <strong>Java</strong> não existe uma declaração explícita para uma constante como existem em outras linguagem, veja abaixo o exemplo de uma constante com <strong>JavaScript</strong>:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> pi <span class=\"token operator\">=</span> <span class=\"token number\">3.14159265359</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>No exemplo acima a palavra reservada <strong>const</strong> já indica que aquele valor não pode ser mudado, mas como estamos falando de <strong>Java</strong> vamos entender como ele lida com isso já que não possui uma palavra reservada para constantes.</p>\n<p>No <strong>Java</strong> existem palavras reservadas que são usadas pela linguagem para alguns fins, entre elas existem duas que iremos destacar, a palavra reservada <strong>final</strong> e a palavra reservada <strong>static</strong>. A palavra reservada <strong>final</strong> é usada quando queremos que algo não possa ser modificado, seja uma variável, método ou classe (mais pra frente será explicado melhor) o que já parece ser um caminho pois com a palavra <strong>final</strong> uma variável declarada não poderá ser modificada. A palavra reservada <strong>static</strong> serve para indicar que algo pertence ao seu tipo e não a sua instância, eu sei que essa definição é meio confusa de entender ainda mais por que ainda não foi apresentado classes e instâncias, mas pense que isso significa que esse “algo”, variável, classe ou método pode ser usado em outros pontos do programa sem que aja a necessidade de algumas burocracias que a linguagem exige. Colocando isso em prática uma constante ficaria assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">double</span> PI <span class=\"token operator\">=</span> <span class=\"token number\">3.14159265359</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">double</span> circunferencia <span class=\"token operator\">=</span> PI <span class=\"token operator\">*</span> diametro <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token operator\">*</span> PI <span class=\"token operator\">*</span> raio<span class=\"token punctuation\">;</span></code></pre></div>\n<p>Por convenção toda constante é escrita em letras maiúsculas e agora se por algum motivo alguém tentar alterar o valor da constante <strong>PI</strong> o compilador irá exibir uma mensagem de erro:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//Exemplo de código que não compila</span>\n<span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">double</span> PI <span class=\"token operator\">=</span> <span class=\"token number\">3.14159265359</span><span class=\"token punctuation\">;</span>\nPI <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">double</span> circunferencia <span class=\"token operator\">=</span> PI <span class=\"token operator\">*</span> diametro <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token operator\">*</span> PI <span class=\"token operator\">*</span> raio<span class=\"token punctuation\">;</span></code></pre></div>\n<p>No exemplo acima criamos a constante <strong>PI</strong> porém no dia a dia podemos fazer uso da constante <strong>Math.PI</strong> do pacote <strong>java.lang.Math</strong>.</p>\n<h2 id=\"Tipos-primitivos\" style=\"position:relative;\">Tipos primitivos<a href=\"#Tipos-primitivos\" aria-label=\"Tipos primitivos 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>Como dito anteriormente a linguagem <strong>Java</strong> é um linguagem fortemente tipada, isso significa que tudo, variáveis, constantes, métodos e classes são um tipo de dado. Existem dois tipos fundamentais no <strong>Java</strong>, os tipos primitivos e os tipos não primitivos. Aqui iremos ver o que são os dois e qual a controvérsia que existe sobre os tipos primitivos.</p>\n<p>Um tipo primitivo é um valor diretamente guardado em memória, não é um objeto e sim o valor em si.</p>\n<p>Parece ser contraditório já que a abordagem da linguagem é ser orientada a objetos e haver tipos primitivos, que são valores armazenados diretamente na memória, porém essa foi uma estratégia adotada pela equipe de desenvolvimento do <strong>Java</strong>, vamos entender quais são os tipos primitivos e quais valores podemos atribuir a eles:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------\nTipo                  <span class=\"token operator\">|</span> Primitivo <span class=\"token operator\">|</span>              Menor           <span class=\"token operator\">|</span>             Maior            <span class=\"token operator\">|</span> Valor Padrão <span class=\"token operator\">|</span> Tamanho   <span class=\"token operator\">|</span> Exemplo\n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------\n                      <span class=\"token operator\">|</span>   byte    <span class=\"token operator\">|</span>              -128            <span class=\"token operator\">|</span>              <span class=\"token number\">127</span>             <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">8</span> bits  <span class=\"token operator\">|</span> byte b <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>byte<span class=\"token punctuation\">)</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\nInteiro               <span class=\"token operator\">|</span>   short   <span class=\"token operator\">|</span>             -32768           <span class=\"token operator\">|</span>             <span class=\"token number\">32767</span>            <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">16</span> bits <span class=\"token operator\">|</span> short s <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>short<span class=\"token punctuation\">)</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                      <span class=\"token operator\">|</span>   int     <span class=\"token operator\">|</span>          -2.147.483.648      <span class=\"token operator\">|</span>          <span class=\"token number\">2.147</span>.483.647       <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">32</span> bits <span class=\"token operator\">|</span> int i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                      <span class=\"token operator\">|</span>   long    <span class=\"token operator\">|</span>  -9.223.372.036.854.770.000  <span class=\"token operator\">|</span>   <span class=\"token number\">9.223</span>.372.036.854.770.000  <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">64</span> bits <span class=\"token operator\">|</span> long l <span class=\"token operator\">=</span> 1l<span class=\"token punctuation\">;</span>\n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------\nPonto Flutuante       <span class=\"token operator\">|</span>   float   <span class=\"token operator\">|</span>           -1,4024E-37        <span class=\"token operator\">|</span>         <span class=\"token number\">3</span>.40282347E+38       <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">32</span> bits <span class=\"token operator\">|</span> float f <span class=\"token operator\">=</span> <span class=\"token number\">1</span>.1f<span class=\"token punctuation\">;</span>\n                      <span class=\"token operator\">|</span>   double  <span class=\"token operator\">|</span>           -4,94E-307         <span class=\"token operator\">|</span>   <span class=\"token number\">1</span>.79769313486231570E+308   <span class=\"token operator\">|</span>      <span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   <span class=\"token number\">64</span> bits <span class=\"token operator\">|</span> double d <span class=\"token operator\">=</span> <span class=\"token number\">1.1</span><span class=\"token punctuation\">;</span> ou double d <span class=\"token operator\">=</span> <span class=\"token number\">1</span>.1d<span class=\"token punctuation\">;</span>\n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------\nCaractere             <span class=\"token operator\">|</span>   char    <span class=\"token operator\">|</span>               <span class=\"token number\">0</span>              <span class=\"token operator\">|</span>            <span class=\"token number\">65535</span>             <span class=\"token operator\">|</span>     <span class=\"token punctuation\">\\</span><span class=\"token number\">0</span>       <span class=\"token operator\">|</span>   16bits  <span class=\"token operator\">|</span> char c <span class=\"token operator\">=</span> <span class=\"token string\">'a'</span><span class=\"token punctuation\">;</span> ou char c <span class=\"token operator\">=</span> <span class=\"token number\">194</span><span class=\"token punctuation\">;</span>\n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------\nBooleano              <span class=\"token operator\">|</span>   boolean <span class=\"token operator\">|</span>             <span class=\"token boolean\">false</span>            <span class=\"token operator\">|</span>             <span class=\"token boolean\">true</span>             <span class=\"token operator\">|</span>    <span class=\"token boolean\">false</span>     <span class=\"token operator\">|</span>   <span class=\"token number\">1</span> bit   <span class=\"token operator\">|</span> boolean b <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>------------------------------<span class=\"token operator\">|</span>--------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------</code></pre></div>\n<h2 id=\"Tipos-nao-primitivos\" style=\"position:relative;\">Tipos não primitivos<a href=\"#Tipos-nao-primitivos\" aria-label=\"Tipos nao primitivos 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>Os tipos não primitivos são as classes e com isso é possível usar o paradigma de orientação a objetos, como herança, sobrecarga, sobrescrita e encapsulamento.\nO <strong>Java</strong> possui várias classes que podemos usar e no exemplo abaixo iremos ver a classe <strong>String</strong> que representa um conjunto de caractéres e é usado para textos:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">String</span> texto <span class=\"token operator\">=</span> <span class=\"token string\">\"Olá Mundo\"</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Como se trata de uma classe quando criamos uma variável do tipo <strong>String</strong> é criado um objeto e ganhamos ações (métodos) que podemos usar para trabalhar com textos, exemplo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token class-name\">String</span> texto <span class=\"token operator\">=</span> <span class=\"token string\">\"Olá Mundo\"</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>texto<span class=\"token punctuation\">.</span><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</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>texto<span class=\"token punctuation\">.</span><span class=\"token function\">toLowerCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>E se executarmos esse código a saída será:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">OLÁ MUNDO\nolá mundo</code></pre></div>\n<p>Foi usado o método <em>println(string)</em> da classe <strong>System</strong> que é método usado para exibir (printar) um texto no console.</p>\n<h2 id=\"Operadores-aritmeticos\" style=\"position:relative;\">Operadores aritméticos<a href=\"#Operadores-aritmeticos\" aria-label=\"Operadores aritmeticos 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>Operadores aritméticos são usados quando é necessário executar operações matemáticas com variáveis e valores.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------<span class=\"token operator\">|</span>---------------------------------\nOperação              <span class=\"token operator\">|</span> Operador  <span class=\"token operator\">|</span> Exemplo                            <span class=\"token operator\">|</span> Descrição                       \n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------<span class=\"token operator\">|</span>---------------------------------\nAdição                <span class=\"token operator\">|</span>     +     <span class=\"token operator\">|</span>             x + y                  <span class=\"token operator\">|</span> Adição de valores               \nSubtração             <span class=\"token operator\">|</span>     -     <span class=\"token operator\">|</span>             x - y                  <span class=\"token operator\">|</span> Subtração de valores            \nMultiplicação         <span class=\"token operator\">|</span>     *     <span class=\"token operator\">|</span>             x * y                  <span class=\"token operator\">|</span> Multiplicação de valores        \nDivisão               <span class=\"token operator\">|</span>     /     <span class=\"token operator\">|</span>             x / y                  <span class=\"token operator\">|</span> Divisão de valores              \nMódulo                <span class=\"token operator\">|</span>     %     <span class=\"token operator\">|</span>             x % y                  <span class=\"token operator\">|</span> Retorna o resto de uma divisão  \nIncremento            <span class=\"token operator\">|</span>    ++     <span class=\"token operator\">|</span>           x++ ou ++x               <span class=\"token operator\">|</span> Incrementa o valor em <span class=\"token number\">1</span>         \nDecremento            <span class=\"token operator\">|</span>    __     <span class=\"token operator\">|</span>           x-- ou --x               <span class=\"token operator\">|</span> Decrementa o valor em <span class=\"token number\">1</span>         \n----------------------<span class=\"token operator\">|</span>-----------<span class=\"token operator\">|</span>------------------------------------<span class=\"token operator\">|</span>---------------------------------</code></pre></div>\n<h2 id=\"Operador-de-atribuicao\" style=\"position:relative;\">Operador de atribuição<a href=\"#Operador-de-atribuicao\" aria-label=\"Operador de atribuicao 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>Nos exemplos anteriores já foi usado o operador de atribuição e como o próprio nome já diz ele é um operador usado para atribuir algum valor, o operador mais comum de atribuição é o <strong>=</strong> (igual) onde uma variável recebe um valor mas existem outros operadores e iremos ver os mais usados;</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">----------<span class=\"token operator\">|</span>---------------------<span class=\"token operator\">|</span>------------------------------------------------------------------------------\nOperador  <span class=\"token operator\">|</span> Exemplo             <span class=\"token operator\">|</span> Descrição          \n----------<span class=\"token operator\">|</span>---------------------<span class=\"token operator\">|</span>------------------------------------------------------------------------------\n<span class=\"token operator\">=</span>         <span class=\"token operator\">|</span>  x <span class=\"token operator\">=</span> <span class=\"token number\">5</span>              <span class=\"token operator\">|</span> Atribui o valor <span class=\"token number\">5</span> para variável x\n<span class=\"token operator\">+=</span>        <span class=\"token operator\">|</span>  <span class=\"token assign-left variable\">x</span><span class=\"token operator\">+=</span> <span class=\"token number\">5</span> ou x <span class=\"token operator\">=</span> x + <span class=\"token number\">5</span> <span class=\"token operator\">|</span> Adiciona o valor <span class=\"token number\">5</span> para a variável x             \n-<span class=\"token operator\">=</span>        <span class=\"token operator\">|</span>  x-<span class=\"token operator\">=</span> <span class=\"token number\">5</span> ou x <span class=\"token operator\">=</span> x - <span class=\"token number\">5</span> <span class=\"token operator\">|</span> Subtrai o valor <span class=\"token number\">5</span> para a variável x\n*<span class=\"token operator\">=</span>        <span class=\"token operator\">|</span>  x*<span class=\"token operator\">=</span> <span class=\"token number\">5</span> ou x <span class=\"token operator\">=</span> x * <span class=\"token number\">5</span> <span class=\"token operator\">|</span> Multiplica o valor de x em <span class=\"token number\">5</span> vezes              \n/<span class=\"token operator\">=</span>        <span class=\"token operator\">|</span>  x/<span class=\"token operator\">=</span> <span class=\"token number\">5</span> ou x <span class=\"token operator\">=</span> x / <span class=\"token number\">5</span> <span class=\"token operator\">|</span> Divide o valor de x pelo número <span class=\"token number\">5</span> e guarda o resultado na variável x   \n%<span class=\"token operator\">=</span>        <span class=\"token operator\">|</span>  x%<span class=\"token operator\">=</span> <span class=\"token number\">5</span> ou x <span class=\"token operator\">=</span> x % <span class=\"token number\">5</span> <span class=\"token operator\">|</span> Divide o valor de x pelo número <span class=\"token number\">5</span> e guarda o resto da divisão na variável x             \n----------<span class=\"token operator\">|</span>---------------------<span class=\"token operator\">|</span>------------------------------------------------------------------------------</code></pre></div>\n<p>Um adendo aqui é que a temos o que é chamado de açúcar sintáxico em alguns operadores onde podemos escrever de forma mais resumida a expressão, onde <strong>x+= 5</strong> tem o mesmo resultado que <strong>x = x + 5</strong>, as duas expressões fazem a mesma coisa mas a primeira é mais sucinta de escrever.</p>\n<h2 id=\"Operadores-de-comparacao\" style=\"position:relative;\">Operadores de comparação<a href=\"#Operadores-de-comparacao\" aria-label=\"Operadores de comparacao 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>Os operadores de comparação são utilizados para comparar valores e são muito usados em <strong>condicionais</strong> que serão mostradas mais adiante:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>----------<span class=\"token operator\">|</span>------------------------------------------------------------\nOperador  <span class=\"token operator\">|</span> Nome           <span class=\"token operator\">|</span> Exemplo  <span class=\"token operator\">|</span> Descrição          \n----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>----------<span class=\"token operator\">|</span>------------------------------------------------------------\n<span class=\"token operator\">==</span>        <span class=\"token operator\">|</span> Igualdade      <span class=\"token operator\">|</span>  x <span class=\"token operator\">==</span> y  <span class=\"token operator\">|</span> Compara se o valor de x é igual ao valor de y\n<span class=\"token operator\">!=</span>        <span class=\"token operator\">|</span> Não igualdade  <span class=\"token operator\">|</span>  x <span class=\"token operator\">!=</span> y  <span class=\"token operator\">|</span> Operador usado para afirmar que dois valores não são iguais\n<span class=\"token operator\">></span>         <span class=\"token operator\">|</span> Maior que      <span class=\"token operator\">|</span>  x <span class=\"token operator\">></span> y   <span class=\"token operator\">|</span> Compara se o valor de x é maior que o valor de y\n<span class=\"token operator\">&lt;</span>         <span class=\"token operator\">|</span> Menor que      <span class=\"token operator\">|</span>  x <span class=\"token operator\">&lt;</span> y   <span class=\"token operator\">|</span> Compara se o valor de x é menor que o valor de y\n<span class=\"token operator\">></span><span class=\"token operator\">=</span>        <span class=\"token operator\">|</span> Maior igual    <span class=\"token operator\">|</span>  x <span class=\"token operator\">></span><span class=\"token operator\">=</span> y  <span class=\"token operator\">|</span> Compara se o valor de x é maior ou igual que o valor de y\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">=</span>        <span class=\"token operator\">|</span> Menor igual    <span class=\"token operator\">|</span>  x <span class=\"token operator\">&lt;</span><span class=\"token operator\">=</span> y  <span class=\"token operator\">|</span> Compara se o valor de x é menor ou igual que o valor de y\n----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>----------<span class=\"token operator\">|</span>------------------------------------------------------------</code></pre></div>\n<p>Existem outros operadores, porém foram demonstrados os mais usados no dia-a-dia.</p>\n<h2 id=\"Operadores-Logicos\" style=\"position:relative;\">Operadores Lógicos<a href=\"#Operadores-Logicos\" aria-label=\"Operadores Logicos 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>Antes de entender os operadores lógicos vale a pena comentar sobre a tabela verdade, que é um dispositivo utilizado no estudo da lógica matemática. Com o uso desta tabela é possível definir o valor lógico de uma proposição, isto é, saber quando uma sentença é verdadeira ou falsa.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>-----------------<span class=\"token operator\">|</span>--------------------------------------------------------------------\nConectivo <span class=\"token operator\">|</span> Símbolo        <span class=\"token operator\">|</span> Operação lógica <span class=\"token operator\">|</span> Valor lógico          \n----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>-----------------<span class=\"token operator\">|</span>--------------------------------------------------------------------\nnão       <span class=\"token operator\">|</span>       ~        <span class=\"token operator\">|</span>  negação        <span class=\"token operator\">|</span> Terá valor falso quando a proposição <span class=\"token keyword\">for</span> verdadeira ou vice-versa\ne         <span class=\"token operator\">|</span>       ^        <span class=\"token operator\">|</span>  conjunção      <span class=\"token operator\">|</span> Será verdadeira quando todas as proposições forem verdadeiras\nou        <span class=\"token operator\">|</span>       <span class=\"token function\">v</span>        <span class=\"token operator\">|</span>  disjunção      <span class=\"token operator\">|</span> Será verdadeira se pelo menos uma das proposições <span class=\"token keyword\">for</span> verdadeira\n----------<span class=\"token operator\">|</span>----------------<span class=\"token operator\">|</span>-----------------<span class=\"token operator\">|</span>--------------------------------------------------------------------</code></pre></div>\n<p>Para ilustrar melhor vamos ao seguinte exemplo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token number\">1</span> <span class=\"token operator\">&lt;</span> <span class=\"token number\">2</span> <span class=\"token operator\">^</span> <span class=\"token number\">2</span> <span class=\"token operator\">></span> <span class=\"token number\">1</span></code></pre></div>\n<p>A seguinte expressão pode ser lida: O número 1 é menor do que 2 <strong>E</strong> o número 2 é maior do que 1 o que torna essa expressão como <strong>VERDADEIRA</strong>.</p>\n<p>Uma forma de simplificar a tabela verdade seria desse modo:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">--<span class=\"token operator\">|</span>---<span class=\"token operator\">|</span>-----<span class=\"token operator\">|</span>---------     ---<span class=\"token operator\">|</span>-----\np <span class=\"token operator\">|</span> q <span class=\"token operator\">|</span> p^q <span class=\"token operator\">|</span> p <span class=\"token function\">v</span> q         p <span class=\"token operator\">|</span> ~p\n--<span class=\"token operator\">|</span>---<span class=\"token operator\">|</span>-----<span class=\"token operator\">|</span>---------     ---<span class=\"token operator\">|</span>----\nV <span class=\"token operator\">|</span> V <span class=\"token operator\">|</span>  V  <span class=\"token operator\">|</span>   V           V <span class=\"token operator\">|</span>  F\nV <span class=\"token operator\">|</span> F <span class=\"token operator\">|</span>  F  <span class=\"token operator\">|</span>   V           F <span class=\"token operator\">|</span>  V\nF <span class=\"token operator\">|</span> V <span class=\"token operator\">|</span>  F  <span class=\"token operator\">|</span>   V\nF <span class=\"token operator\">|</span> F <span class=\"token operator\">|</span>  F  <span class=\"token operator\">|</span>   F\n--<span class=\"token operator\">|</span>---<span class=\"token operator\">|</span>---------------</code></pre></div>\n<p>Agora trazendo isso para a linguagem <strong>Java</strong>, o que muda são os símbolos mas a lógica permanece a mesma e ao invés de termos o resultado dessas expressões como <strong>verdadeira</strong> ou <strong>falsa</strong> é usado <strong>true</strong> ou <strong>false</strong> e esse tipo de variável é do tipo <strong>boolean</strong>, um adendo que vale ressaltar é que essa lógica se chama Lógica Booleana em homenagem a George Boole que introduziu o tema em 1847. </p>\n<p>Porém no <strong>Java</strong> não são usados os símbolos <strong>~</strong>, <strong>^</strong>, <strong>v</strong> para expressões booleanas, com exceção do operador <strong>^</strong> que é usado para outro operador lógico que não veremos aqui mas que para fins de conhecimento é o XOR ou chamado de <strong>OU Exclusivo</strong>; então para negação é usado o símbolo <strong>!</strong> (exclamação), para conjunção é usado o símbolo <strong>&#x26;</strong> (E comercial) e para disjunção é usado o simbolo <strong>|</strong> (pipe) como no exemplo abaixo:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">boolean</span> verdadeiroConjuncao <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token punctuation\">(</span><span class=\"token number\">2</span> <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">boolean</span> falsoConjuncao <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">==</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token punctuation\">(</span><span class=\"token number\">2</span> <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">boolean</span> verdadeiroDisjuncao <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">></span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">boolean</span> falsoDisjuncao <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">></span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token number\">2</span> <span class=\"token operator\">></span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">boolean</span> negacao <span class=\"token operator\">=</span> <span class=\"token operator\">!</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\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>Começamos hoje uma série de artigos introdutórios ao <strong>Java</strong>, foi passado um pouco da história e conceitos básicos da linguagem no próximo artigo será apresentado o tema <strong>condicionais e laços de repetição</strong>.</p>","fields":{"slug":"/java-iniciante/"},"frontmatter":{"date":"06 de setembro de 2021","description":"Iniciando na programação backend com Java","title":"Primeiros passos com Java","tags":["Java","Beginner"],"author":"Guilherme Alves","image":{"id":"edbfdada-13aa-5c10-ac33-b72640c9a13e","publicURL":"/static/8bf38453c3e171a13b42e74b8b75cb2c/ArtigoI.png","childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB6UlEQVQ4y4VT227iMBB1bOeekEBgBYUgARJFKotQ1EXtPnR54JFu0f7/v5ydceLI3Uv7MLKdmTlz5sxESM+DNY9NCEiloYshdBBCRxFUkkJKCTfWjffsnUzYD30QvdWghAwjSO1D5YO2CPkUgap/ALsm+gcFmiqcVJRtkSQzgIqLfAJkGYv3gdKw0dSiDkNiSK1XEyhqXXqijzNMPfm3VC5DVw+tFHScmERNDHWWQzosvT/ad3OFSznwfeMQHxhL4xNz9y3doRia5CgGA5RFgbqusdvt8GUywWI+N/e72RSLxQI12XK5xP7hAZvNBtVo1IL2LHnKDnpEK9I0DX6+vuJ4POLHywuu1ysOhwO+PT7i+/MzLpeL8Z/PZzydTgiILWstrYZ2ZbgSM1ytVphOp5gTuyWxZVbr9RqT8RgF+e9mM3PGcWziy+YEj3ZWWA3fLSVPmAYSBAE0T5jurNf/dA1pV9PmCdm8RiDbfGGDVbeHA9KyqiqMhkNjY2I2LEsoAreT5FjOWVM3v243bO/vkWVpC8gsSkqIST+XZUh7GJH5NHl3/5ix7lhvt1vc3t7wdb/vV8cA8oTzPKcqmbE0SZCQRgmdfE/T1NztNx6e+bOc1bFkhKuJ6pix4BbIgHfGQOzXtv3OhHP+BspyNcNFOMuPAAAAAElFTkSuQmCC","aspectRatio":1.4096916299559472,"src":"/static/8bf38453c3e171a13b42e74b8b75cb2c/0823f/ArtigoI.png","srcSet":"/static/8bf38453c3e171a13b42e74b8b75cb2c/c67b7/ArtigoI.png 320w,\n/static/8bf38453c3e171a13b42e74b8b75cb2c/d3930/ArtigoI.png 640w,\n/static/8bf38453c3e171a13b42e74b8b75cb2c/0823f/ArtigoI.png 1280w,\n/static/8bf38453c3e171a13b42e74b8b75cb2c/b3c49/ArtigoI.png 1745w","sizes":"(max-width: 1280px) 100vw, 1280px"}}}},"timeToRead":13}},"pageContext":{"slug":"/java-iniciante/","previous":{"fields":{"slug":"/kotlin-javalin-exposed-fuel/"},"frontmatter":{"title":"Criando uma API com Kotlin e Javalin","date":"14 jun, 2021"}},"next":{"fields":{"slug":"/java-iniciante-pt2/"},"frontmatter":{"title":"Primeiros passos com Java II","date":"13 set, 2021"}}}},"staticQueryHashes":["63159454"]}