Um trecho de palestra com um mentor como parte do curso Codegym University. Inscreva-se no curso completo.
"Saudações, amigo. Era uma vez, você aprendeu que para escrever uma string de caracteres em código, você precisa colocá-los entre aspas duplas."
"Sim, e isso nos dá uma string literal . Não faz muito tempo que descobri isso."
"Em nossa profissão, isso foi há muito tempo. Mas esse não é o ponto agora. Em vez disso, diga-me o que fazer se precisarmos de aspas dentro de uma string literal?"
"Hmm... Uma string contendo aspas — o que poderia ser mais fácil. Tenho certeza de que há alguma maneira..."
"Sim. Digamos que queremos exibir o texto "Friends" was nominated for an "Oscar"
. Como faríamos isso?"
"Para ser sincero, não faço ideia. Não consigo pensar em nada."
"Você não será capaz de chegar a uma solução por meio da lógica. Deixe-me apenas mostrar o que fazer.
Código | Notas |
---|---|
|
Esta opção não funcionará!" |
"Esta opção não funcionará, porque o compilador interpreta isso como um código totalmente diferente:
Código | Notas |
---|---|
|
Esta opção não funcionará!" |
"Depois que o compilador encontra aspas duplas no código, ele trata o que segue como o início de uma string literal. A próxima aspa dupla indica o fim da string literal."
"Então, como você escreve aspas duplas dentro de um literal?"
"Existe uma maneira. Chama-se caracteres de escape . Basta escrever as aspas dentro da string de texto. E antes das aspas, você adiciona o símbolo \ ( barra invertida ).
"É assim que a string literal se parece quando escrita corretamente:
Código | Notas |
---|---|
|
Isso vai funcionar! |
"O compilador interpretará tudo corretamente e não considerará as aspas após a barra invertida como aspas normais.
"Além disso, se você exibir esta string na tela, as aspas com barras invertidas serão processadas corretamente e o texto será exibido sem nenhuma barra invertida:"Friends" was nominated for an "Oscar"
"Bem, eu não vou dizer que isso é super conveniente..."
"Mas o que você pode fazer, essas são as regras. Outro ponto importante. Uma aspa precedida por uma barra invertida representa um único caractere: estamos simplesmente usando uma notação elegante que não interfere na capacidade do compilador de reconhecer strings literais em nosso código. Você pode atribuir aspas a uma char
variável:
Código | Notas |
---|---|
|
\" é um personagem, não dois |
|
Isso também é possível: aspas duplas dentro de aspas simples |
Situações comuns que ocorrem ao escapar de caracteres
"Além das aspas duplas, existem muitos outros caracteres que o compilador manipula de maneira especial. Por exemplo, uma quebra de linha.
"Como adicionamos uma quebra de linha a um literal? Também existe uma combinação especial para isso:
\n
"Se você precisar adicionar uma quebra de linha a uma string literal, basta adicionar alguns caracteres" \n
.
Exemplo:
Código | Saída do console |
---|---|
|
|
"Há um total de 8 combinações especiais como esta, que também são chamadas de sequências de escape . Aqui estão elas:
Código | Descrição |
---|---|
\t |
Inserir um caractere de tabulação |
\b |
Inserir um caractere de backspace |
\n |
Inserir um caractere de nova linha |
\r |
Inserir um caractere de retorno de carro |
\f |
Inserir um caractere de feed de página |
\' |
Inserir uma aspa simples |
\" |
Insira aspas duplas |
\\ |
Inserir uma barra invertida |
"Você já me mostrou dois deles. O que os outros 6 significam?"
"Vou explicar tudo agora.
\t
é um caractere de tabulação
Quando este texto aparece no texto, é equivalente a pressionar a Tab
tecla durante a digitação. Desloca o texto que o segue e permite alinhar o texto.
Exemplo:
Código | Saída do console |
---|---|
|
|
\b
significa 'voltar um caractere'
Essa sequência em uma string equivale a pressionar a Backspace
tecla no teclado. Ele remove o caractere que o precede:
Código | Saída do console |
---|---|
|
|
\r
é o caractere de retorno de carro
Este caractere move o cursor para o início da linha atual sem alterar o texto (depende da versão do JDK). O que quer que seja exibido a seguir substituirá a string existente.
Exemplo:
Código | Saída do console |
---|---|
|
World!ngs |
\f
é um caractere de feed de página
Este símbolo chegou até nós desde os dias das primeiras impressoras matriciais. A saída dessa sequência para uma impressora faria com que a impressora simplesmente alimentasse a folha atual, sem imprimir nenhum texto, até que uma nova página começasse.
Agora chamaríamos isso de quebra de página ou nova página .
\\
é uma barra invertida
Tudo é direto aqui. Se usarmos uma barra invertida para escapar dos caracteres em nosso texto, como escreveremos o próprio caractere de barra invertida na string?
É simples: adicione uma barra invertida ao texto — você deve escrever duas seguidas.
Exemplo:
Código | Saída do console |
---|---|
|
O compilador gritará com você por caracteres de escape desconhecidos. |
|
É assim que se faz certo! |
"Usar barras duplas faz sentido. Mas não consegui memorizar todo o resto imediatamente. Vou ter que confiar nas suas dicas."
"Gradualmente, você se lembrará do que precisa. Não se preocupe. E para todo o resto, existe o Google.
Codificação Unicode
"Você já sabe que cada caractere exibido na tela corresponde a um código numérico específico. Um conjunto padronizado desses códigos é chamado de codificação .
"Era uma vez, quando os computadores foram recentemente inventados, sete bits (menos de um byte) eram suficientes para codificar cada caractere. A primeira codificação continha apenas 128 caracteres. Essa codificação era chamada de ASCII . "
"É um nome estranho."
"Não há nada de estranho nisso. É uma abreviação. ASCII significa American Standard Code for Information Interchange — uma tabela de códigos americanos padrão para caracteres imprimíveis e alguns códigos especiais."
"Ele consiste em 33 caracteres de controle não imprimíveis (que afetam como o texto e os espaços são processados) e 95 caracteres imprimíveis, incluindo números, letras latinas maiúsculas e minúsculas e vários sinais de pontuação.
"À medida que os computadores cresciam em popularidade, cada país começou a lançar sua própria codificação. Normalmente, eles tomavam o ASCII como ponto de partida e substituíam os caracteres ASCII raramente usados por símbolos de seus respectivos alfabetos.
"Com o tempo, surgiu uma ideia: criar uma única codificação que contenha todos os caracteres de todas as codificações do mundo.
"Assim, em 1993, a codificação Unicode foi criada e a linguagem Java se tornou a primeira linguagem de programação que usou essa codificação como padrão para armazenar texto. Agora, o Unicode é o padrão para toda a indústria de TI.
"Embora o próprio Unicode seja o padrão, ele possui várias representações ou formatos de transformação Unicode (UTF): UTF-8, UTF-16 e UTF-32, etc.
"Java usa uma versão avançada da codificação Unicode — UTF-16: cada caractere é codificado em 16 bits (2 bytes). Ele pode acomodar até 65.536 caracteres! Você pode encontrar quase todos os caracteres de todos os alfabetos do mundo nessa codificação. "
"Espero não precisar saber de cor?"
"Se você quiser, vá em frente!"
"Ok, tudo bem. Vou usar esta regra: você não pode saber tudo, mas pode pesquisar tudo no Google."
"Adotar uma abordagem racional é tudo. Portanto, para escrever um caractere Unicode em seu programa usando seu código, você precisa escrever \u
+ o código em hexadecimal . Por exemplo,\u00A9
Código | Saída do console |
---|---|
|
|
Unicode: ponto de código
"640 kilobytes deveriam ser suficientes para todos! Ou não". Bill Gates uma vez disse isso. Ou não. Pelo menos esta citação é atribuída a ele."
"Haha. 640 kilobytes não são suficientes nem para carregar o cérebro de um robô de limpeza."
"A vida é difícil e, com o tempo, a codificação UTF-16 começou a ser inadequada. Acontece que existem muitos idiomas asiáticos e eles têm muitos glifos. E todos esses glifos simplesmente não podem ser compactados em 2 bytes ."
"Então, o que fazemos?"
"Use mais bytes ! Mas o tipo char tem apenas 2 bytes e alterá-lo para 4 não é tão fácil: bilhões de linhas de código Java foram escritas em todo o mundo, o que seria interrompido se o tipo char de repente se tornasse 4 bytes por Java máquina. Portanto, não podemos alterar o tipo de char!
"Existe outra abordagem. Lembre-se de como escapamos dos caracteres colocando uma barra invertida na frente deles. Basicamente, codificamos um único caractere usando vários caracteres. Os criadores de Java decidiram usar a mesma abordagem.
"Alguns caracteres que aparecem visualmente como um único caractere são codificados como dois char
s em uma string:
Código | Saída do console |
---|---|
|
🔊 |
"Agora seu programa Java pode até enviar emojis para o console 😎"
"Eu definitivamente vou usar isso para me divertir!"
GO TO FULL VERSION