como usar o Equals?
ex:
static int idadeDoAndre = 21;
static int idadeDaPiuPiuCachorra = 29;
public static void main(String[] args) {
if ((idadeDaPiuPiuCachorra.equals(idadeDoAndre))){
System.out.println(“wow”);
}
}
tem sentido esse exemplo? ele não compila…
abs,
André AS
1 curtida
Não pq idadedaPiuPiuCachorra é um int, vc usa equals para comparar objetos por exemplo:
[code]String nome1 = “everton”;
String nome2 = “joao”;
if(nome1.equals(nome2)){
// faz algo…
}[/code]
1 curtida
use o Wrapper Integer para usar o equals.
Os tipos primitivos se compara usando == a referencia não o objeto em si.
Tipos primitivos se deve comparar com == .
Se usa equals quando se compara tipos complexos como por exemplo, a comparacao de duas Strings:
ex
[quote]
String test = “valorx”;
if( “valorx”.equals( test) ) {
//faz alguma coisa
}
Na verdade == não é apenas para tipos primitivos, mas normalmente são usados mais para isso.
O == compara o conteúdo de variáveis, da forma que tipos primitivos guardam valores, tipos de objetos guardam endereços de memória dos objetos (referências).
[code]int a = 20;
int b = 20;
int c = a;
if (a == b) …; // verdadeiro
if (a == c) …; // verdadeiro
if (b == c) …; // verdadeiro
Integer a = new Integer(20);
Integer b = new Integer(20);
Integer c = a;
if (a == b) …; // falso, ambas referenciam objetos Integer distintos
if (a.equals(b)) …; // verdadeiro, os objetos são iguais
if (a == c) …; // verdadeiro
if (a.equals©) …; // verdadeiro
if (b == c) …; // falso
if (b.equals© …; // verdadeiro
[/code]
Em algum momento de sua vida pode ser que seja necessário verificar se duas variáveis fazem referência ao mesmo objeto, daí um == seria útil (apesar que nesses casos o equals também retornaria true).
2 curtidas
muito legal vcs são dez!!!
brigadu…
AS
[quote=andredecotia]como usar o Equals?
ex:
static int idadeDoAndre = 21;
static int idadeDaPiuPiuCachorra = 29;
public static void main(String[] args) {
if ((idadeDaPiuPiuCachorra.equals(idadeDoAndre))){
System.out.println(“wow”);
}
}
tem sentido esse exemplo? ele não compila…
[/quote]
Não. Primeiro vc tem que saber a diferença entre variáveis primitivas e de referencia
depois vc precisa entender como se comparam objetos em java
por favor vejam o meu exemplo:
static String nome1 = "everton";
static String nome2 = "joao";
public static void main(String[] args) {
if(nome1 == nome2){
System.out.println(“ok1”);
}
else {
System.out.println(“ok2”);
}
neste caso tanto faz o == ou equals? pois testei com os dois e nas duas formas o programa funcionou… pq?
Abs,
AS
}
As Strings são objetos bem interessantes em Java, pois em partes são tratadas como tipos primitivos.
Ao fazer
String a = "abc";
String b = "abc";
Você não tem 2 objetos, mas sim 2 variáveis apontando pro mesmo objeto String (“abc”).
Pra forçar a criação de 2 objetos, você pode fazer isso:
String a = new String("abc");
String b = new String("abc");
neste caso sim pq vc ta criando um objeto com uma String literal, e como nao existe objeto String criado com o nome “everton” nao tem como ele buscar no pool de Strings e sendo assim retorna false.
Se vc fizer:
[code]String a = “everton”;
String b = “everton”;
if(a == b) // isso retornara true, pq foi criado um objeto String com uma literal como a variavel “b” esta sendo criado com a mesma literal que a variavel “a” ele busca “everton” no pool de Strings e nao cria um novo objeto String.[/code]
[quote=Trebloc]As Strings são objetos bem interessantes em Java, pois em partes são tratadas como tipos primitivos.
Ao fazer
String a = "abc";
String b = "abc";
Você não tem 2 objetos, mas sim 2 variáveis apontando pro mesmo objeto String (“abc”).
Pra forçar a criação de 2 objetos, você pode fazer isso:
String a = new String("abc");
String b = new String("abc");
[/quote]
Nao tem essa de tipos primitivos o que tem é que existe um pool de Strings onde e guardado uma literal.
public class TesteEquals {
static String nome1 = "everton";
static String nome2 = "joao";
public static void main(String[] args) {
if (nome1 == nome2) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
}
}
Cara, fiz o teste como você fez, só troquei os println para True ou False para melhor indicação, claro aqui deu FALSE!
E o Netbeans ainda avisa que deve ser usado o equals.
Da uma revisada, e quando for escrever um if ou else de teste, use palavras distintas, no seu caso vc usou ok1 e ok2, ai fica dificil identificar.
Abraço.
Ae desculpai, eu tinha esquecido de mudar o String nome2 para everton.
Realmente fica igual.
M3g4d3th,
Corrija essa palavra na última frase que você disse. xD
[quote=Trebloc]M3g4d3th,
Corrija essa palavra na última frase que você disse. xD[/quote]
HAHAHA Pronto, valeu pelo toque, não tinha percebido, e ficou comico hahaha
[quote=andredecotia]por favor vejam o meu exemplo:
static String nome1 = "everton";
static String nome2 = "joao";
public static void main(String[] args) {
if(nome1 == nome2){
System.out.println(“ok1”);
}
else {
System.out.println(“ok2”);
}
neste caso tanto faz o == ou equals? pois testei com os dois e nas duas formas o programa funcionou… pq?
[/quote]
funcionar , funciona. Se vc quer com isso dizer que compila e roda. Contudo ele imprime “ok2” e não “ok1” que seria o que vc espera.
== compara o valor das variáveis, não os objetos. Objetos são diferentes o conteúdo das variáveis é diferente mas o inverso não é verdade.
Como regra : sempre que comparar objetos use equals. String é um objeto. Use equals.