[code]public class Test {
public static void main(String[] args) {
Character c11 = '\u00FF';
Character c12 = '\u00FF';
System.out.println("c11 == c12 : " + (c11 == c12));
}
}[/code]
pq o resultado é c11 == c12 : false ???
[code]public class Test {
public static void main(String[] args) {
Character c11 = '\u00FF';
Character c12 = '\u00FF';
System.out.println("c11 == c12 : " + (c11 == c12));
}
}[/code]
pq o resultado é c11 == c12 : false ???
olá,
É false devido ao msm post q vc escreveu.
Character é objeto … e vc naum compara valores com == … só com equals().
Com == vc compara referência.
Ricardo
vlwww entendi!
Fazendo uma analogia com sua outra dúvida sobre igualdades de referências, deve-se saber que um Character não se comporta como um Integer por exemplo, quando instancia-se um objeto dessa classe sem usar seu construtor.
No caso do Character, sempre 2 objetos distintos serão criado no heap.
é falso pq esta fora do range de 127 …
por conveniencia o JVM guarda um pool de objetos iguais, que vai geralmente ate o elemento 127 do objeto… por exemplo
[code]public class NewClass {
public static void main(String … args) {
Integer num = 127;
Integer num2 = 127;
System.out.println(num + " " + (num == num2)); //imprime “127 true”
num = 128;
num2 = 128;
//passou de 128 da false
System.out.println(num + " " + (num == num2)); //imprime "128 false"
}[/code]
o mesmo ocorre com caracter… esse caracter é o 255 então, não da igual
[code] public static void main(String … args) {
Character num = 127;
Character num2 = 127;
System.out.println(num + " " + (num == num2)); //imprime “ true”
num = 128;
num2 = 128;
//passou de 128 da false
System.out.println(num + " " + (num == num2)); //imprime "? false"
Character c12 = '\u00FF';
System.out.println(c12.charValue() + " " + (int)c12.charValue()); //imprime "ÿ 255"
}[/code]
vc não precisa decorar quais caracters são acima ou abaixo de 127 … normalmente vai dar false, exceto c ele falar em que range de caracter se encontra
[code]public class Test {
public static void main(String[] args) {
Character c1 = '\u0000';
Character c2 = '\u0000';
System.out.println("c1 == c2 : " + (c1 == c2));
}
}[/code]
porém se eu mudar o código… a resposta deste é c1 == c2 : true
agora que eu nao entendi nd!
[quote=brrodo] Fazendo uma analogia com sua outra dúvida sobre igualdades de referências, deve-se saber que um Character não se comporta como um Integer por exemplo, quando instancia-se um objeto dessa classe sem usar seu construtor.
No caso do Character, sempre 2 objetos distintos serão criado no heap.[/quote]
isso não é verdade, se comporta sim igual a integer… ate 127, serão objetos iguais, depois de 127 objetos distintos… conforme exemplo acima
[quote=soublade][code]public class Test {
public static void main(String[] args) {
Character c1 = '\u0000';
Character c2 = '\u0000';
System.out.println("c1 == c2 : " + (c1 == c2));
}
}[/code]
porém se eu mudar o código… a resposta deste é c1 == c2 : true
agora que eu nao entendi nd![/quote]
veja o meu post, acima deste seu que vc vai entender… o caracter ‘\u0000’ é o caracter 0… então ele esta entre 0 e 127 e assim vai dar igual… so apos o caracter 128 que começa a dar diferentes os objetos literais
[quote=Lavieri][quote=soublade][code]public class Test {
public static void main(String[] args) {
Character c1 = '\u0000';
Character c2 = '\u0000';
System.out.println("c1 == c2 : " + (c1 == c2));
}
}[/code]
porém se eu mudar o código… a resposta deste é c1 == c2 : true
agora que eu nao entendi nd![/quote]
veja o meu post, acima deste seu que vc vai entender… o caracter ‘\u0000’ é o caracter 0… então ele esta entre 0 e 127 e assim vai dar igual… so apos o caracter 128 que começa a dar diferentes os objetos literais
[/quote]
É verdade Lavieri, não me atentei ao valor q elas recebiam.
É isso msm.