java
Java
Parte 4: Classes de ambiente
LEEC@IST
Java – 1
Pacote java.lang
• O pacote java.lang é automaticamente importado:
– Interfaces:
• Cloneable
• Runnable
– Classes:
• Class e Object
• Boolean, Number (e subclasses), Character, Void
• Math
• Process, Thread, System e Runtime
• String e StringBuffer
• Throwable e Exception (e subclasses)
LEEC@IST
Java – 2
Classe Object (1)
• A classe Object é a raíz na hierarquia de herança de qualquer classe em Java.
– Todas as classes estendem directa ou indirectamente
Object.
LEEC@IST
Java – 3
Classe Object (2)
• Métodos da classe Object:
– public int hashCode()
Retorna valor da função de dispersão.
– public String toString()
Retorna cadeia de caracteres que descreve o objecto.
• Exemplo:
– Double x = new Double(3.0)
– String str = “value: ” + x;
– public boolean equals(Object obj)
Retorna igualdade entre objectos.
Nota:
• Igualdade entre objectos: duas referências para o mesmo objecto.
• Equivalência entre objectos: dois objectos com o mesmo estado (mesmo valor dos atributos).
LEEC@IST
Java – 4
Classe Object (3)
• Ambos os métodos equals e hashCode devem ser redefinidos se o programador pretende oferecer, em vez de igualdade, equivalência entre objectos.
– Por omissão, equals implementa igualdade entre objectos (objectos distintos devolvem false).
Nota: O operador == e != retorna sempre igualdade entre objectos. Ou seja, se o programador redefinir o método equals continua a poder testar igualdade entre objectos através do auxílio do operador == e !=.
– Por omissão, dois objectos distintos devolvem um hashCode diferente.
LEEC@IST
Java – 5
Classe Object (4)
•
Se o método equals for redefinido para implementar equivalência entre objectos, então o método hashCode também deve ser redefinido concordantemente, ou seja, deve ser redefinido por forma a que dois objectos equivalentes devolvam o mesmo código de