CodeGym/Blogue Java/Random-PT/Caracteres de Escape Java
John Squirrels
Nível 41
San Francisco

Caracteres de Escape Java

Publicado no grupo Random-PT
Oi! Nas lições anteriores, já conhecemos as strings de texto, que são representadas pela classe String em Java. Como você provavelmente se lembra, uma string é uma sequência de caracteres. Esses caracteres podem ser quaisquer letras, numerais, sinais de pontuação e assim por diante. O principal ao criar uma string é que toda a sequência deve estar entre aspas:
public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Mas o que fazemos se precisarmos criar uma string que deve conter aspas? Por exemplo, suponha que queremos contar ao mundo sobre seu livro favorito:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
Parece que o compilador está insatisfeito com alguma coisa! O que você acha que pode ser o problema? E o que isso tem a ver com aspas? Na verdade, é tudo muito simples. O compilador interpreta as aspas de uma maneira muito específica, ou seja, espera que as strings sejam agrupadas nelas. E toda vez que o compilador vir ", ele espera que as aspas sejam seguidas por uma segunda aspa, e que o conteúdo entre elas seja o texto de uma string a ser criada pelo compilador. No nosso caso, as aspas ao redor a palavra "Crepúsculo" estão dentro de outras aspas . Quando o compilador chega a este pedaço de texto, ele simplesmente não entende o que se espera que ele faça. As aspas sugerem que uma string deve ser criada. Mas é isso que o compilador é fazendo! Aqui está o porquê: simplesmente falando, o compilador fica confuso sobre o que se espera que ele faça. "Outra aspa? Isso é algum tipo de erro? Já estou criando uma string! Ou devo criar outra? Argh!...:/" Precisamos deixar o compilador saber quando uma aspa é um comando ( "criar uma string!") e quando é simplesmente um caractere ("exibe a palavra "Crepúsculo" junto com aspas!"). Para fazer isso, Java usa escape de caracteres . Isso é feito usando um símbolo especial: \ . Este símbolo é normalmente chamado de "barra invertida". Em Java, uma barra invertida combinada com um caractere a ser "escapado" é chamada de sequência de controle . Por exemplo, \"é uma sequência de controle para exibição de aspas na tela. Ao encontrar essa construção em seu código, o compilador entenderá que se trata apenas de uma aspa que deve ser exibida na tela. Vamos tentar mudar nosso código com o livro:
public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
Usamos \ para escapar de nossas duas aspas "internas". Vamos tentar executar o método main() ... Saída do console:
My favorite book is "Twilight" by Stephanie Meyer
Excelente! O código funcionou exatamente como queríamos! As aspas não são de forma alguma os únicos caracteres que podemos precisar escapar. Suponha que queremos contar a alguém sobre nosso trabalho:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("My work files are in D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Outro erro! Você consegue adivinhar por quê? Mais uma vez, o compilador não sabe o que fazer. Afinal, o compilador não conhece \ como nada além de uma sequência de controle ! Ele espera que a barra invertida seja seguida por um determinado caractere que deve, de alguma forma, interpretar de uma maneira especial (como uma aspa). Mas, neste caso, \ é seguido por letras comuns. Então o compilador está confuso novamente. O que deveríamos fazer? Exatamente a mesma coisa de antes: apenas adicionamos outro \ ao nosso \ !
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("My work files are in D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Vamos ver o que obtemos: Saída do console:
My work files are in D:\Work Projects\java
Super! O compilador determina imediatamente que \ são caracteres comuns que devem ser exibidos junto com o resto. Java tem muitas sequências de controle. Aqui está a lista completa:
  • \t - aba.
  • \b - backspace (um retrocesso no texto ou exclusão de um único caractere).
  • \n - nova linha.
  • \r - retorno de carro. ()
  • \f - feed de formulário.
  • \' aspas simples.
  • \" aspas duplas.
  • \\ barra invertida.
Assim, se o compilador encontrar \n no texto, ele entende que não é apenas um símbolo e uma letra para exibir no console, mas sim um comando especial para "mover para uma nova linha!". Por exemplo, isso pode ser útil se quisermos exibir parte de um poema:
public class Main {
   public static void main(String[] args) {
       String byron = new String ("She walks in beauty, like the night, \nOf cloudless climes and starry skies\nAnd all that's best of dark and bright\nMeet in her aspect and her eyes...");
       System.out.println(byron);
   }
}
Aqui está o que obtemos: Saída do console:
She walks in beauty, like the night,
Of cloudless climes and starry skies
And all that's best of dark and bright
Meet in her aspect and her eyes...
Apenas o que queríamos! O compilador reconheceu a sequência de escape e produziu um trecho do poema em 4 linhas.

Escape de caracteres Unicode

Outro tópico importante que você precisa conhecer em relação aos caracteres de escape é o Unicode. Unicode é uma codificação de caracteres padrão que inclui os símbolos de quase todas as línguas escritas do mundo. Em outras palavras, é uma lista de códigos especiais que representam quase todos os caracteres de qualquer idioma! Naturalmente, esta é uma lista muito longa e ninguém a memoriza :) Se quiser saber de onde veio e por que se tornou necessário, leia este artigo informativo: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Todos os códigos de caracteres Unicode têm a forma " u+<dígito hexadecimal>". Por exemplo, o conhecido símbolo de direitos autorais é representado por u00A9. Portanto, se você precisar usar esse caractere ao trabalhar com texto em Java, poderá escapá-lo em seu texto! Por exemplo, queremos para informar a todos que CodeGym possui os direitos autorais desta lição:
public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Saída do console:
"Escaping characters", © 2019 CodeGym
Ótimo, deu tudo certo! Mas não se trata apenas de símbolos especiais! Você pode usar Unicode e caracteres de escape para codificar texto escrito simultaneamente em diferentes idiomas. E até texto escrito em vários dialetos diferentes do mesmo idioma!
public class Main {
   public static void main(String[] args) {

       System.out.println("\u004d\u0061\u006f \u005a\u0065\u0064\u006f\u006e\u0067 " +

               "\u0028\u0054\u0072\u0061\u0064\u0069\u0074\u0069\u006f\u006e\u0061\u006c " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6fa4\u6771\u002c " +

               "\u0053\u0069\u006d\u0070\u006c\u0069\u0066\u0069\u0065\u0064 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6cfd\u4e1c\u002c " +

               "\u0050\u0069\u006e\u0079\u0069\u006e\u003a \u004d\u00e1\u006f " +

               "\u005a\u00e9\u0064\u014d\u006e\u0067\u0029 \u0077\u0061\u0073 \u0061 " +

               "\u0032\u0030\u0074\u0068\u002d\u0063\u0065\u006e\u0074\u0075\u0072\u0079 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065 " +

                "\u0073\u0074\u0061\u0074\u0065\u0073\u006d\u0061\u006e\u002c " +

               "\u0070\u006f\u006c\u0069\u0074\u0069\u0063\u0069\u0061\u006e\u002c " +

               "\u0061\u006e\u0064 \u0074\u0068\u0065 \u0063\u0068\u0069\u0065\u0066 " +

               "\u0074\u0068\u0065\u006f\u0072\u0065\u0074\u0069\u0063\u0069\u0061\u006e " +

               "\u006f\u0066 \u004d\u0061\u006f\u0069\u0073\u006d\u002e");
   }
}
Saída do console:
Mao Zedong (Traditional Chinese: 毛澤東, Simplified Chinese: 毛泽东, Pinyin: Máo Zédōng) was a 20th-century Chinese statesman, politician, and the chief theoretician of Maoism.
Neste exemplo, usamos códigos de caracteres para construir uma string que consiste em inglês e três (!) tipos diferentes de caracteres chineses — tradicional, simplificado e latino (Pinyin). E isso resume tudo! Agora você já sabe o suficiente sobre caracteres de escape para usar essa ótima ferramenta em seu trabalho :) Para reforçar o que você aprendeu, sugerimos que você assista a uma vídeo aula do nosso Curso de Java
Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário