Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Comparando Strings em Java | Strings
Introdução ao Java

Comparando Strings em Java

Deslize para mostrar o menu

A comparação é onde o Java começa a se comportar de maneira um pouco mais "baixo nível" do que o esperado. Parece óbvio que strings poderiam ser comparadas da mesma forma que números — usando ==. Afinal, se duas strings parecem idênticas, por que não seriam iguais?

O Problema com ==

Se você usar == com literais de string, parece funcionar bem a princípio:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "Latte"; System.out.println(order1 == order2); } }

Ambas as variáveis apontam para o mesmo objeto no string pool interno do Java — quando o mesmo literal aparece novamente, o Java reutiliza o existente. Portanto, == retorna true.

Agora, vamos alterar um pouco a forma como as strings são criadas:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1 == order2); } }

Usar new String() instrui o Java a criar um objeto completamente separado a cada vez — mesmo que o conteúdo seja idêntico. Como == compara endereços de memória, e não o texto, ele retorna false.

Regra principal: == não verifica o texto dentro da string — ele checa se ambas as variáveis apontam para o exato mesmo objeto na memória.

equals() — Comparação do Conteúdo Real

Para comparar o texto real dentro de duas strings, utilize .equals(). Esse método ignora completamente a memória e foca apenas nos caracteres:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1.equals(order2)); } }

Mesmo que order1 e order2 sejam objetos separados na memória, .equals() compara seu conteúdo e retorna true.

Sensibilidade a maiúsculas e minúsculas com equals()

Java diferencia maiúsculas de minúsculas, portanto, até mesmo uma letra com diferença de caixa torna as strings diferentes:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "latte"; System.out.println(order1.equals(order2)); } }

"Latte" e "latte" são consideradas strings diferentes, portanto o resultado é false.

equalsIgnoreCase() — Comparação Sem Considerar Maiúsculas ou Minúsculas

Para comparar strings ignorando diferenças entre letras maiúsculas e minúsculas, utilize .equalsIgnoreCase():

Main.java

Main.java

12345678910
package com.example; public class Main { public static void main(String[] args) { String order = "Latte"; System.out.println(order.equalsIgnoreCase("LATTE")); } }

.equalsIgnoreCase() considera "Latte" e "LATTE" como idênticos e retorna true.

question mark

O que o operador == compara quando usado com Strings em Java?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Comparando Strings em Java

A comparação é onde o Java começa a se comportar de maneira um pouco mais "baixo nível" do que o esperado. Parece óbvio que strings poderiam ser comparadas da mesma forma que números — usando ==. Afinal, se duas strings parecem idênticas, por que não seriam iguais?

O Problema com ==

Se você usar == com literais de string, parece funcionar bem a princípio:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "Latte"; System.out.println(order1 == order2); } }

Ambas as variáveis apontam para o mesmo objeto no string pool interno do Java — quando o mesmo literal aparece novamente, o Java reutiliza o existente. Portanto, == retorna true.

Agora, vamos alterar um pouco a forma como as strings são criadas:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1 == order2); } }

Usar new String() instrui o Java a criar um objeto completamente separado a cada vez — mesmo que o conteúdo seja idêntico. Como == compara endereços de memória, e não o texto, ele retorna false.

Regra principal: == não verifica o texto dentro da string — ele checa se ambas as variáveis apontam para o exato mesmo objeto na memória.

equals() — Comparação do Conteúdo Real

Para comparar o texto real dentro de duas strings, utilize .equals(). Esse método ignora completamente a memória e foca apenas nos caracteres:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = new String("Latte"); String order2 = new String("Latte"); System.out.println(order1.equals(order2)); } }

Mesmo que order1 e order2 sejam objetos separados na memória, .equals() compara seu conteúdo e retorna true.

Sensibilidade a maiúsculas e minúsculas com equals()

Java diferencia maiúsculas de minúsculas, portanto, até mesmo uma letra com diferença de caixa torna as strings diferentes:

Main.java

Main.java

1234567891011
package com.example; public class Main { public static void main(String[] args) { String order1 = "Latte"; String order2 = "latte"; System.out.println(order1.equals(order2)); } }

"Latte" e "latte" são consideradas strings diferentes, portanto o resultado é false.

equalsIgnoreCase() — Comparação Sem Considerar Maiúsculas ou Minúsculas

Para comparar strings ignorando diferenças entre letras maiúsculas e minúsculas, utilize .equalsIgnoreCase():

Main.java

Main.java

12345678910
package com.example; public class Main { public static void main(String[] args) { String order = "Latte"; System.out.println(order.equalsIgnoreCase("LATTE")); } }

.equalsIgnoreCase() considera "Latte" e "LATTE" como idênticos e retorna true.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5
some-alt