11/29/2006

Em java nem sempre 1 é igual a 1

Muitos dizem que Python é melhor que Java ou vice e versa.

Eu não sei se Python é melhor ( mas nunca vou torcá-lo por Java), mas sei que em Python 1 sempre é igual a 1:

>>> valor1 = 1
>>> valor2 = 1
>>> valor1 == valor2
True

em Java 5 isso também funcionaria. Mas se comparássemos um número float com um inteiro o que aconteceria?

Em muitas linguagens nem é permitido a comparação de números de tipos diferentes mas Java e Python permitem. Em Python:

>>> valor1 = 1
>>> valor2 = 1.0
>>> type(valor1)

>>> type(valor2)

>>> valor1 == valor2
True

mas quando comparamos em Java, nem sempre a resposta é verdadeira. Veja a notícia Em Java 5, 0 não é sempre igual a 0

Bom em Python 0 sempre é igual a 0, 1 igual a 1 e assim por diante...

eu ein!!!

2 comentários:

Helder Robalo disse...

Hey Pyman.. vc sabe dizer pq isso acontece no Java? a representação talvez ele faça comparação binária dos tipos, e por os tipos serem representados binariamente diferentes acontece isso, ou eu tou viajando???

Andrews Medina disse...

Bom Helder,

realmente ele faz a comparação binária , mas os integers e floats em java extendem da mesma classe ou seja, os dois são numeros. A comparação mesmo se tratando de numeros 'binariamente' diferentes, a API Java deveria reconhece-los como iguais, como acontece em Python ou Ruby onde typos de dados são objetos tambem.

Realmente, é falha da virtual java machine...