Programação Java Classe String

Programação Java Classe String. Linguagem Java. Sumário: java.lang.String; – Maneiras de criar Objetos String,Pool de literais,Comparação entre Strings, Concatenação

A classe String se encontra nos pacotes padrões de java(Oque te da a habilidade de em uma forma implicita usar a Classe) e de ta a habilidade de armazenar uma sequencia de caracteres(Toda essa representação deve ficar entre aspas duplas – > “caracteres”).Veja que String é um tipo referência tanto que o primeiro S de String é maiúsculo.

Programação Java Classe String

É importantíssimo saber:
char
– É a representação de um caracter somente, em aspas simples ’ ’

String
– É a representação de um ou mais caracteres, em aspas duplas “ ”

Como Declarar um Objeto String?

Temos 2 maneiras:

1-
Usando new
String myVariable = new String(“test”);

<p>
  </font><font style="color: rgb(0, 0, 0);"> Quando você faz essa declaração você , cria 2 objetos String em memória e coloca os caracteres em uma area reservada na heap para Literais que é chamada de Literal pool.</p> 

  <p>
    </font> <font style="color: rgb(0, 0, 0);"><font style="font-weight: bold;">2-</font> Sem usar a keyword new, A classe String é um tipo diferente em java, a única classe que aceita ser instanciada sem usar new:</font>
  </p>

  <p>
    <font style="color: rgb(0, 0, 0);">String myVariable = &ldquo;test&rdquo;;</p> 

    <p>
      </font><font style="color: rgb(0, 0, 0);">ou</p> 

      <p>
        </font><font style="color: rgb(0, 0, 0);">String myVariable = (&ldquo;test&rdquo;);</p> 

        <p>
          </font><font style="color: rgb(0, 0, 0);"> Quando você faz essa declaração você, cria 1 objeto String em memória <font style="font-weight: bold;">e coloca os caracteres em uma area reservada na heap para Literais que é chamada de Literal pool</font>(Isso se os caracteres ja não existirem no Literal Pool), Para evitar a duplicação desnecessária de objeto String em memória , crie objetos String sem a keyword new.</font> <font style="font-weight: bold;" size="5"><font style="color: rgb(0, 0, 0);"></p> 

          <p>
            Oque é esse Pool de literais?<br /></font></font> <font style="color: rgb(0, 0, 0);"><br />Vamos a um exemplo, Esse exemplo serve tanto para Variaveis de referência Local quanto para variáveis de referência Atributo, toda variável do tipo String tem uma variável atributo chamada(<font style="font-weight: bold;">C</font><font style="font-weight: bold;">omparador de valor C</font>) que tem o endereço de memória dos caracteres no Pool de literais<font style="font-weight: bold;">: &#8211; A classe String mantem um POOL DE LITERAIS &#8211; </font></font> <font style="color: rgb(0, 0, 0);"></p> 

            <p>
              public class <font style="font-weight: bold;">MinhaClasse</font>{
            </p>

            <p>
              </font> <font style="color: rgb(0, 0, 0);">public static void main(String[] array){<br /></font> <font style="color: rgb(0, 0, 0);"><br />String <font style="font-weight: bold;">minhaVariavel</font> =<font style="font-weight: bold;"> &ldquo;test&rdquo;</font>; //Instanciei um objeto String com a representação em<br />//caracteres<br /></font><br /><font style="color: rgb(0, 0, 0);"> }</font><br /><font style="color: rgb(0, 0, 0);">}<br /></font> <font style="color: rgb(0, 0, 0);"><br />Teremos a representação somente da Local Variable referente ao frame de main() e a Heap referente a arquitetura da instância da Jvm operando sobre esse Class File,<br /><font style="font-weight: bold;">Vejamos oque acabamos de fazer</font>:</p> 

              <p>
                </font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJP_n24ExI/AAAAAAAAAQc/zkhvtaaCz-E/s1600-h/heapStack.png"><img style="cursor: pointer; width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJP_n24ExI/AAAAAAAAAQc/zkhvtaaCz-E/s320/heapStack.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377948859483296530" border="0" /></a><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Clique na imagem para ampliar</font>
              </p>

              <p>
                <font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="color: rgb(0, 0, 0);"><br /><font style="font-weight: bold;" size="5">E se eu tiver outra String com o mesmo valor de caracteres?</p> 

                <p>
                  </font>Então temos somente uma representação no Pool de literais de representação de caracteres(Isso somente acontence se instanciarmos o objeto String sem a keyword new):- A classe String mantem um POOL DE LITERAIS &#8211; Se uma String literal ja existe no Pool então uma referência para o Pool será o endereço da Referência ao Comparador,<font style="font-weight: bold;"> Isso para Strings sem o uso da keyword new e com a mesma sequência de caracteres e ordem</p> 

                  <p>
                    </font><br />public class <font style="font-weight: bold;">MinhaClasse</font>{
                  </p>

                  <p>
                    public static void main(String[] array){<br />String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;</font>;<br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;</font>;
                  </p>

                  <p>
                    }<br />}
                  </p>

                  <p>
                    </font></font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJRDbUP0JI/AAAAAAAAAQk/gvtfrHwf3tU/s1600-h/heapStack2.png"><img style="cursor: pointer; width: 320px; height: 178px;" src="http://1.bp.blogspot.com/_CdmD2AaXIBs/SqJRDbUP0JI/AAAAAAAAAQk/gvtfrHwf3tU/s320/heapStack2.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377950024347930770" border="0" /></a><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><font size="3"><br />Clique na imagem para ampliar,Toda vez que você cria um literal String a jvm checa o pool de Literal primeiro, se a string não existir no pool de literal então é colocado no pool a nova representação(Isso sem usar a keyword new).</p> 

                    <p>
                      <font size="5">Mais exemplo:</font>
                    </p>

                    <p>
                      </font></font><font style="color: rgb(0, 0, 0);" face="arial"><font size="3">public class <font style="font-weight: bold;">MinhaClasse</font>{</p> 

                      <p>
                        public static void main(String[] array){<br />String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;</font>;<br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">&ldquo;gol&rdquo;</font>;
                      </p>

                      <p>
                        }<br />}</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                        <p>
                          Vejamos oque aconteceu:
                        </p>

                        <p>
                          </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJRsrYcN5I/AAAAAAAAAQs/sK4nNNidW9U/s1600-h/heapStack3.png"><img style="cursor: pointer; width: 320px; height: 189px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJRsrYcN5I/AAAAAAAAAQs/sK4nNNidW9U/s320/heapStack3.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377950733035124626" border="0" /></a>
                        </p>

                        <p>
                          <font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><font size="3"><br />Clique na imagem para ampliar,</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">A manipulação é feita por um algoritmo da Classe.</p> 

                          <p>
                            <font size="3"><font size="5">E com a keyword new?</font><br /></font></font><font style="color: rgb(0, 0, 0);" face="arial"><font size="3"> Objetos String com a keyword new, não se referem a objetos na Pool de literais porem pode ser feito com o método da classe String intern().</p> 

                            <p>
                              public class <font style="font-weight: bold;">MinhaClasse</font>{
                            </p>

                            <p>
                              public static void main(String[] array){<br />String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;</font><br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">new String(&ldquo;test&rdquo;);</font>
                            </p>

                            <p>
                              }<br />}</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"></p> 

                              <p>
                                Vejamos oque aconteceu:
                              </p>

                              <p>
                                </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJSh5s_JNI/AAAAAAAAAQ0/wJBG83GUoBY/s1600-h/heapStack4.png"><img style="cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJSh5s_JNI/AAAAAAAAAQ0/wJBG83GUoBY/s320/heapStack4.png" alt="Programação Java Classe String" id="BLOGGER_PHOTO_ID_5377951647412462802" border="0" /></a><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><font size="3"><br />Clique na imagem para ampliar,</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">A manipulação é feita por um algoritmo da Classe.<br /></font>
                              </p>

                              <p>
                                <font style="font-weight: bold; color: rgb(0, 0, 0);" size="5" face="arial">Comparação entre String:</font>
                              </p>

                              <p>
                                <font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;">Temos 2 maneiras básicas de comparação:</font><br /><font style="font-weight: bold;">1-</font> o sinal de igual<font style="font-weight: bold;">(Operador == )</font><br /><font style="font-weight: bold;">2</font><font style="font-weight: bold;">&#8211;</font> o <font style="font-weight: bold;">método equals()</font></p> 

                                <p>
                                  <font style="font-weight: bold;" size="5">O operador == (igual):<br /></font> Avalia o endereço de memória das Strings dentro do comparador de valor C, vamos a um exemplo:
                                </p>

                                <p>
                                  <font style="font-weight: bold;" size="4">Instanciando um Objeto String sem a keyword new:</font>
                                </p>

                                <p>
                                  public class <font style="font-weight: bold;">MinhaClasse</font>{<br />public static void main(String[] array){
                                </p>

                                <p>
                                  String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;</font><br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;<br /></font><br />}<br />} <font style="font-weight: bold;" size="3"></p> 

                                  <p>
                                    minhaVariavel == minhaVariavel2 ? </font><br />Sim a resposta é true, vejamos o porque:<br /></font><br /><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJT7DoaZqI/AAAAAAAAAQ8/a8lqj06cII8/s1600-h/heapStack5.png"><img style="cursor: pointer; width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJT7DoaZqI/AAAAAAAAAQ8/a8lqj06cII8/s320/heapStack5.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377953179085989538" border="0" /></a><br /><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><font size="3">Clique na imagem para ampliar,</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Perceba que o teste é feito no Comparador de valor C, Agora me responde você, 0xA2 = 0xA2?</font>
                                  </p>

                                  <p>
                                    <font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;" size="5">Instanciando um objeto String com a keyword new:</font></p> 

                                    <p>
                                      public class <font style="font-weight: bold;">MinhaClasse</font>{
                                    </p>

                                    <p>
                                      public static void main(String[] array){<br />String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;</font><br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">new String(&ldquo;test&rdquo;);</font>
                                    </p>

                                    <p>
                                      }<br />}
                                    </p>

                                    <p>
                                      <font style="font-weight: bold;" size="4">minhaVariavel == minhaVariavel2 ? </font><br />Não a resposta é false, vejamos o porque:
                                    </p>

                                    <p>
                                      </font><a style="font-family: arial; color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJUtnbQsJI/AAAAAAAAARE/c8TMDhIyiOk/s1600-h/heapStack6.png"><img style="cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_CdmD2AaXIBs/SqJUtnbQsJI/AAAAAAAAARE/c8TMDhIyiOk/s320/heapStack6.png" alt="Exemplos Java,Linguagem Java, Programação, Java" id="BLOGGER_PHOTO_ID_5377954047687962770" border="0" /></a><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial"><font size="3">Clique na imagem para ampliar,</font></font><font style="font-weight: bold; color: rgb(0, 0, 0);" face="arial">Perceba que o teste é feito no Comparador de valor C, Agora me responde você, 0xA2 = 0xA3?</font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><br /><font style="font-weight: bold;" size="5"><br />Usando o método equals():</font><br />Retorna true se ambos tem o mesmo conteudo, ou seja a mesma sequência e ordem de caracteres.</p> 

                                      <p>
                                        </font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;" size="5">Instanciando um Objeto String sem a keyword new:</p> 

                                        <p>
                                          </font></font><font style="color: rgb(0, 0, 0);" size="3" face="arial">public class <font style="font-weight: bold;">MinhaClasse</font>{<br />public static void main(String[] array){</p> 

                                          <p>
                                            String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;</font><br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;<br /></font><br />}<br />} <font style="font-weight: bold;" size="5"></p> 

                                            <p>
                                              <font size="3">minhaVariavel.equals(minhaVariavel2)?<br />Sim a resposta é true, os caracteres &ldquo;test&rdquo; nessa sequência e ordem são iguais a esse: &ldquo;test&rdquo;? Sim claro.</font>
                                            </p>

                                            <p>
                                              </font></font><br /><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;" size="5">Instanciando um objeto String com a keyword new:</p> 

                                              <p>
                                                </font></font><font style="color: rgb(0, 0, 0);" size="3" face="arial">public static void main(String[] array){<br />String <font style="font-weight: bold;">minhaVariavel</font> = <font style="font-weight: bold;">&ldquo;test&rdquo;;</font><br />String <font style="font-weight: bold;">minhaVariavel2</font> = <font style="font-weight: bold;">new String(&ldquo;test&rdquo;);</font></p> 

                                                <p>
                                                  }<br />}
                                                </p>

                                                <p>
                                                  <font style="font-weight: bold;" size="5">minhaVariavel.equals(minhaVariavel2)?</p> 

                                                  <p>
                                                    </font>Sim a resposta é true, os caracteres &ldquo;test&rdquo; nessa sequência e ordem são iguais a esse: &ldquo;test&rdquo; ? Sim claro.<br /></font><font style="color: rgb(0, 0, 0);" size="3" face="arial"><font style="font-weight: bold;" size="5"></p> 

                                                    <p>
                                                      <font size="3"><font size="4"><font size="3">Concatenação de String:</font></p> 

                                                      <p>
                                                        </font></font></font><font size="3"><font size="3"> <font size="3">O operador(+ somar) é usado para concatenar Strings, veja o exemplo:</p> 

                                                        <p>
                                                          String myVariable = &ldquo;He&rdquo;;<br />String myVariable1 = &ldquo;llo&rdquo;;<br />String myVariable2 = myVariable + myVariable1;</font>
                                                        </p>

                                                        <p>
                                                          <font style="font-weight: bold;" size="3"><font size="3">Qual o valor de myVariable2?<br /><font size="3">&ldquo;Hello&rdquo;!!!</font></font></p> 

                                                          <p>
                                                            <font size="5">Convertendo String em Tipos Primitivos:</font><br /></font><font size="3"> Se você quer converter um objeto String em tipos Primitivos pode usar uma classe associada com o tipo primitivo. Cada tipo primitivo tem uma classe associada com ela:<br /></font><font style="font-weight: bold;" size="3"><br />double &#8211; > Double<br />int &#8211; > Integer<br />etc</p> 

                                                            <p>
                                                              *Veja que Classes começam com letra maiúscula<br /></font><font size="3">E todas essas Classes tem método utilitários que fazem essa conversão, exemplo:<br /></font><font style="font-weight: bold;" size="3"><br />String d = &ldquo;2&rdquo;;<br />double variable = Double.parseDouble(d);</p> 

                                                              <p>
                                                                Agora variable vale 2.0
                                                              </p>

                                                              <p>
                                                                <font size="4"><font size="4">É hora da revisão:</font></p> 

                                                                <p>
                                                                  </font></font><font size="3"><font size="3"> <font size="3">&#8211; Temos 2 maneiras de se instanciar objetos String, Usando a keyword new ou não usando<br />&#8211; Toda vez que instanciamos um objeto String sem a keyword new, mantemos a representação de caracteres dentro de um pool, onde ela não sera duplicada se ja tiver uma representação em igual ordem e representação<br />&#8211; Se instanciar objeto String com a keyword new, mesmo que ja haja a representação no pool em ordem e sequência mesmo assim sera duplicada a sequência(gasto de memória)<br />&#8211; O operador ==(igual) avalia endereços de memória, o método equals() avalia o conteúdo dos objetos<br />&#8211; Concatenação é a junção do conteúdo de uma String com o conteúdo de outra<br />&#8211; É importantíssimo saber:<br />char &#8211; É a representação de um caracter somente, em aspas simples &rsquo; &rsquo;<br />String &#8211; É a representação de um ou mais caracteres, em aspas duplas &ldquo; &rdquo;</p> 

                                                                  <p>
                                                                    &#8211; Todo objeto String pode ser convertido em um numero literal ou um caracter(char), usando a classe associada ao tipo literal<br /></font></font></font></font></font><font style="font-weight: bold;" size="3"><font size="3"><br />Próximo post Operadores Relacionais, Condicionais e Controle de fluxo!!!</font><br /><font size="4">Cya DUDES!!!</font><br /></font></font>
                                                                  </p>