Java’da string, integer vb. objelerde eşitlik kontrolü yapılırken kullanılan bu fonksiyonların farkı nedir?

if (object1.equals(object2)){
}
if (object1 == object2){
}