Questao do Inquisition...helpppp!

[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.