Tipos de Dados em java

Tipos de Dados em java. Linguagem Java. Pontos importantes:
1 -Tipos da dados em java são divididos em
2 grandes Categorias:
Tipos Primitivos
Tipos Referência(Falaremos no Proximo Post)

2 – Todos os tipos primitivos são considerados Valores Literais

3 – Todos os tipos primitivos armazenam os Bits realmente dos valores

4 – Todos as representações de tipos primitivos são palavras com letras minúsculas pois, todos são Keywords

5 – O operador – = (igual) – em java significa RECEBE.
int x = 0;
O inteiro x RECEBE 0(zero)

LEMBRE DOQUE VIMOS ANTERIORMENTE?

SIGUA ISSO QUE você se dará bem:

Exemplos Java,Linguagem Java, Programação, Java

Esse tipo, será mostrado um deles aqui, que é o tipo PRIMITIVO

Isso é Simplesmente uma passagem de valores, oque estiver a direita do Operador(= igual) é atribuido ao que estiver a esquerda do Operador(= igual):

Exemplos Java,Linguagem Java, Programação, Java

Tipos Primitivos:
(Os valores são armazenados em Bits), como o exemplo acima:
10 Em Decimal = 0000 0000 0000 0000 0000 0000 0000 1010 em Binário

Temos 4 categorias de dados em Tipos Primitivos:
*** Todas as 4 categorias são considerados valores literais, pois armazenam o real valor em bits.

– Tipo Inteiro= byte,short, int,long
– Tipo Ponto-Flutuante = float e double
– Tipo Textual = char
– Tipo Logico = boolean

Inteiro:
Armazenam valores inteiros. Podem ser representados em formatos:
decimais,octais ou hexadecimais:

2 -> Decimal
075 -> o 0 – zero – a esquerda indica que é Octal
0xBA -> o 0x -zero x – a esquerda indica que é Hexadecimal

Tamanho

Nome ou Tipo

Range

8 bits

byte

– 2 ^ 7 ate 2 ^ 7 -1

16 bits

short

– 2 ^ 15 ate 2 ^ 15 -1

32 bits

int

– 2 ^ 31 ate 2 ^ 31 -1

64 bits

long

– 2 ^ 63 ate 2 ^ 63 -1

<p>
  *byte e short forão inventados para preservação de memoria.
</p>

<p>
  Quando eu for usar long:
</p>

<p>
  Quando você especificar um valor e quer que seja long, use a letra L do lado direito do valor, int é default ou seja se não especificar o compilador irá intender como inteiro. O &ldquo;l&rdquo; pode ser maiusculo ou minusculo.
</p>

<p>
  long meuvalor = 20; -> ocorreu Promoção de int para long<br />long meuValor = 20L; -> colocamos um long em uma variavel do tipo long<br />long meuValor = 20l; -> colocamos um long em uma variavel do tipo long
</p>

<p>
  </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/Sp7fh6zh8LI/AAAAAAAAAGk/1Cf-3UsCObA/s1600-h/IntegralValues.png"><img style="cursor: pointer; width: 320px; height: 115px;" src="http://localhost/www/wp0/uploads/IntegralValues.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980778941018290" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

  <p>
    Pontos Flutuantes:<br />Um valor é considerado Ponto Fluantes quando tem a letra(e ou E), ou tiver a letra(f ou F) ou a letra(d ou D):
  </p>

  <p>
    e ou E = expoente<br />f ou F = float<br />d ou D = double
  </p>

  <p>
    Ou quando são usados para armazenar valores decimais.O Default é double, Sempre use ponto(.), É padrão nos USA usar ponto.
  </p>

  <p>
    Exemplos:
  </p>

  <p>
    10.0 &#8211; Um valor de ponto Flutuante, double<br />10.0D &#8211; Um valor de ponto Flutuante, double<br />2.999F &#8211; Um valor de ponto Flutuante, float<br />6.0E25 &#8211; Um valor de ponto Flutuante, double = 60000000000000000000000000.0<br />6.0E25 &#8211; É igual a 6.0E+25
  </p>

  <p>
    </span>
  </p>

  <table style="width: 418px; height: 184px; color: rgb(0, 0, 0);" border="1" cellpadding="4" cellspacing="0">
    <col width="85"> <col width="85"> <col width="85"> <tr valign="top">
      <td style="font-weight: bold;" width="33%">
        <p>
          <span style="color: rgb(0, 0, 0);"><span style="font-family:arial;"><span style="font-size:100%;">Tamanho</span></span></span>
        </p>
      </td>

      <td style="font-weight: bold;" width="33%">
        <p>
          Nome ou Tipo
        </p>
      </td>

      <td style="font-weight: bold;" width="33%">
        <p>
          Range
        </p>
      </td>
    </tr>

    <tr valign="top">
      <td width="33%">
        <p>
          32 bits
        </p>
      </td>

      <td width="33%">
        <p>
          float
        </p>
      </td>

      <td width="33%">
        <p>
          -11.40129846432481707e-45 ate 3.40282346638528860e+38
        </p>
      </td>
    </tr>

    <tr valign="top">
      <td width="33%">
        <p>
          64 bits
        </p>
      </td>

      <td width="33%">
        <p>
          double
        </p>
      </td>

      <td width="33%">
        <p>
          4.94065645841246544e-324d ate<br />1.79769313486231570e+308d
        </p>
      </td>
    </tr>
  </table>

  <p>
    <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><br />Quando eu for declarar um float:<br />Sempre coloque o F do lado direito do valor para espeficar que é um float senão não compila.(F maiusculo ou minusculo da na mesma).<br />Porque do f?<br />float é menor que double logo, um float cabe em um float porem um Double não cabe em um float. É a mesma coisa que cast</p> 

    <p>
      float variable = 0.0F;<br />float variable = (float) 0.0; -> mesma coisa
    </p>

    <p>
      </span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7fl4HWODI/AAAAAAAAAGs/nbNuVHn-22I/s1600-h/pontosFlutuantesdia.png"><img style="cursor: pointer; width: 320px; height: 182px;" src="http://localhost/www/wp0/uploads/pontosFlutuantesdia.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980846938306610" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"></p> 

      <p>
        <span style="font-size:130%;"><span style="font-weight: bold;">Textual:</span></span><br />É usado para armazenar um simples caracter inclusive caracteres Unicode não assinados. Todos tem 16 bits(sem Sinal).
      </p>

      <p>
        Para usar char oque eu preciso?<br />Especificar o seu caracter dentro de &ldquo;
      </p>

      <p>
        Um char não armazena a real caracter, mais sim os bits representantes dela.
      </p>

      <p>
        char cacaracter = &rsquo;t&rsquo;;
      </p>

      <p>
        Exemplos:
      </p>

      <p>
        &rsquo;t&rsquo; &#8211; Tabulação
      </p>

      <p>
        <span style="font-weight: bold;font-size:130%;">Logico:</span><br />São aceitos somente valores booleanos(true ou false), um dos dois.
      </p>

      <p>
        boolean meuValor = true;
      </p>

      <p>
        Um Exemplo prático:
      </p>

      <p>
        public class MinhaClasse{ //Esse é um comentario ignorado pelo compilador
      </p>

      <p>
        public static void main(String[] array){<br />int x = 20;
      </p>

      <p>
        }//fim do metodo main
      </p>

      <p>
        }
      </p>

      <p>
        Se você mandar executar isso oque acontece?<br />1 &#8211; Seu programa vira processo<br />2 &#8211; O class Loader da JVM carregará sua classe<br />3 &#8211; Todo processo tem uma thread, toda thread tem uma STACK, Toda Stack tem:<br />&#8211; Operand Stack<br />&#8211; Local Variable<br />&#8211; Uma Referência para Constant POOL<br />A jvm jogará o 20 na Operand Stack<br />4 &#8211; Esse 20 será armazenado nas Local Variable Referente ao método main(Uma coisa que quero deixar claro é que, em Stack damos o Nome de Frame ao métodos quando estão sendo usados.)<br />5 &#8211; Não tem mais codigo no code_block do método main, a JVM termina seu processo.
      </p>

      <p>
        Usando: javap -c Temos em bytecode:
      </p>

      <p>
        Compiled from "MinhaClasse.java&rdquo;<br />public class MinhaClasse extends java.lang.Object{<br />public MinhaClasse();<br />Code:<br />0: aload_0<br />1: invokespecial #1; //Method java/lang/Object.&ldquo;<init>&rdquo;:()V<br />4: return
      </p>

      <p>
        public static void main(java.lang.String[]);<br />Code:<br />0: bipush 20<br />2: istore_1<br />3: return
      </p>

      <p>
        }
      </p>

      <p>
        Agora vamos desenhar:
      </p>

      <p>
        </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7fqgc8j4I/AAAAAAAAAG0/fZUiO6p3DuY/s1600-h/VariavelLocal.png"><img style="cursor: pointer; width: 262px; height: 320px;" src="http://localhost/www/wp0/uploads/VariavelLocal.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980926485794690" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

        <p>
          Você empurrou o numero 20 que é do tipo inteiro(ou seja 32 bits), e mandou armazenar em (int x &#8211; que é do tipo inteiro, ou seja 32 bits)  32 bits cabem em 32 bits? SIM! então você obteve:
        </p>

        <p>
          </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CdmD2AaXIBs/Sp7ftff6J8I/AAAAAAAAAG8/GlWdiIxibFg/s1600-h/VariavelLocal2.png"><img style="cursor: pointer; width: 262px; height: 320px;" src="http://localhost/www/wp0/uploads/VariavelLocal2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980977769392066" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

          <p>
            Ou isso se fica mais facil:
          </p>

          <p>
            </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/Sp7fWg0Ql3I/AAAAAAAAAGM/HcjV7nLbZLk/s1600-h/coube.png"><img style="cursor: pointer; width: 310px; height: 148px;" src="http://localhost/www/wp0/uploads/coube.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980582986192754" border="0" /></a></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

            <p>
              Porque se eu fizer int x = 32L; da ERRO?<br />1 &#8211; um int tem 32 bits<br />2 &#8211; 32L é um long, long tem 64 bits
            </p>

            <p>
              Olha oque você fez:
            </p>

            <p>
              </init></span><span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CdmD2AaXIBs/Sp7fZ0zCjnI/AAAAAAAAAGU/mPpLmfAxLXU/s1600-h/coube2.png"><img style="cursor: pointer; width: 320px; height: 154px;" src="http://localhost/www/wp0/uploads/coube2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5376980639889395314" border="0" /></a></span> <span style="color: rgb(0, 0, 0);font-family:arial;font-size:100%;"><init></p> 

              <p>
                Mesmo que fosse:<br />int x = 0.0F;<br />Não daria certo, int tem 32 bits, float tem 32 bits. SO que Pontos Flutuantes trabalham diferente de Integrais, eles usam na verdade mais de um Slot em memoria, mais por representação não fica viavel fazer.
              </p>

              <p>
                <span style="font-size:130%;"><span style="font-weight: bold;">É hora da revisão:</span></span>
              </p>

              <p>
                &#8211; Cuidados com a representação dos formatos dos valores dos TIPOS INTEGRAIS, podem ser em 3 tipos:<br />2 -> Decimal<br />075 -> o 0 &#8211; zero &#8211; a esquerda indica que é Octal<br />0xBA -> o 0x -zero x &#8211; a esquerda indica que é Hexadecimal
              </p>

              <p>
                &#8211; Promoção:
              </p>

              <p>
                long meuvalor = 20; -> ocorreu Promoção de int para long<br />long meuValor = 20L; -> colocamos um long em uma variavel do tipo long<br />long meuValor = 20l; -> colocamos um long em uma variavel do tipo long
              </p>

              <p>
                &#8211; Um valor é considerado Ponto Fluantes quando tem a letra(e ou E), ou tiver a letra(f ou F) ou a letra(d ou D),ou quando são usados para armazenar valores decimais.O Default é double, Sempre use ponto(.), É padrão nos USA usar ponto.
              </p>

              <p>
                &#8211; Sempre que quiser representar um valor do tipo Ponto flutuante float, use o (F ou f), para haver cast, ja que double é default.
              </p>

              <p>
                &#8211; Um char aparentemente apresenta um caracter porem ele é uma representação em bits de um caracter
              </p>

              <p>
                &#8211; Tipos booleanos só aceitam dois tipos de valores, OU true OU false.
              </p>

              <p>
                &#8211; Em Valores do tipo Inteiro, o padrão é int
              </p>

              <p>
                &#8211; Em Valores do tipo Ponto Flutuante, o padrão em double
              </p>

              <p>
                &#8211; O operador igual(=) Significa em java recebe,<br />int a = 8;<br />O Inteiro a RECEBE 8
              </p>

              <p>
                Curiosidades:
              </p>

              <p>
                &mdash;&mdash;->Porque o byte tem o valor elevado a 7 e não a 8?<br />Leva-se em conta que 1 byte são 8 bits, Porem o range de valores de byte é de &#8211; 2 ^ 7 a 2 ^ 7 -1, porque disso?
              </p>

              <p>
                Porque elevado a 7 e não a 8?<br />1 Bit é usado para guardar o sinal(+ ou -), se um Byte tem 8 Bits, e 1 Bit é usado para guardar sinal(+ ou -) só resta 7 Bits para representar um número.
              </p>

              <p>
                Decimal Binário<br />125 1111101(7 Bits)
              </p>

              <p>
                Porem para representar em java isso é precisa do Bit de sinal:<br />01111101 &#8211; 8 Bits = +125<br />11111101 &#8211; 8 Bits = -125
              </p>

              <p>
                Vamos a outro exemplo:
              </p>

              <p>
                Decimal Binário<br />128 10000000(8 Bits)
              </p>

              <p>
                Porem para representar em java isso é precisa do Bit de sinal:<br />010000000 &#8211; 9 Bits = +128<br />110000000 &#8211; 9 Bits = -128
              </p>

              <p>
                PERCEBA QUE 9 BITS JA NÃO FAZ PARTE DO RANGE DE BYTE, portanto esse numero não pode ser um BYTE.
              </p>

              <p>
                Porque -1 do range?<br />Pois o 0 é incluso no range.<br />O Byte tem um range de -2 ^ 7 a 2 ^ 7 -1 significa:<br />&#8211; 125, -124, -123, -122 . &#8211; 2,- 1, 0, +1,+2 +125
              </p>

              <p>
                &mdash;&mdash;->Be Careful!!! Bears Shouldn&rsquo;t Ingest Large Fury Dogs.<br />Source: Head First katty Siera
              </p>

              <p>
                Be = boolean<br />Careful = char<br />Bears = byte<br />Shouldn&rsquo;t = short<br />Ingest = int<br />Large = long<br />Fury = float<br />Dogs = double
              </p>

              <p>
                &mdash;&mdash;->Quer ver como char armazena realmente Bits e usa como conversão para letras?<br />char x = 100;
              </p>

              <p>
                Se você mandar imprimir na saida Padrão sairá: d
              </p>

              <p>
                &mdash;&mdash;-> O tipo char é inteiro literal, outro exemplo disso?
              </p>

              <p>
                int x = &lsquo;c&rsquo;;
              </p>

              <p>
                Se você mandar imprimir na saida Padrão sairá: 99
              </p>

              <p>
                </init></span>
              </p>