Dlaczego metoda zwraca true?

0

Cześć,
nie mogę rozpracować prostej sprawy. Dlaczego np. taka metoda:

boolean check(){
        if (50 > 20) {
            return true;
        }
        if (50 > 10) {
            return false;
        }
        if (50 > 5) {
            return false;
        }
        return false;
    }

zwraca true, a nie false. Skoro każdy kolejny warunek jest sprawdzany, to już przy drugim if powinno wywalić false. Moje pytanie zrodziło się na kanwie przesłaniania metody equals(). Dlaczego kod:

  @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

miałby zadziałać prawidłowo, skoro moja metoda check() zawsze zwraca wartość pierwszego if?
Z góry dziękuję za wyjaśnienie.

4

Nie rozumiem problemu. 50 jest większe od 20 a zatem pierwszy warunek jest prawidłowy. Return powoduje wyjście z metody i kolejne ify nie są sprawdzane.

0

Dzięki za odpowiedź. Zacząłem Ci odpisywać, ale w trakcie mi się rozjaśniło. Nie pomyślałem na początku, że skoro nadpisana metoda equals() zwraca true już w pierwszym ifie, to nie trzeba dalej porównywać stanu wewnętrznego obiektów, bo to przecież ten sam obiekt w pamięci, więc dalsze sprawdzanie nie ma sensu.

2

W temacie wielu instrukcji return możesz przeczytać to: https://www.javacodegeeks.com/2015/01/multiple-return-statements.html

1
notOccupiedNick napisał(a):

Dzięki za odpowiedź. Zacząłem Ci odpisywać, ale w trakcie mi się rozjaśniło. Nie pomyślałem na początku, że skoro nadpisana metoda equals() zwraca true już w pierwszym ifie, to nie trzeba dalej porównywać stanu wewnętrznego obiektów, bo to przecież ten sam obiekt w pamięci, więc dalsze sprawdzanie nie ma sensu.

Dziwne rozkminy. Metoda equals to metoda jak każda inna. Nie jest wykonywana w jakiś specjalny sposób. Kompilator nie rozmyśla sobie "hmm to jest equals, więc musi się wykonać do końca". W equalsie możesz wstawić dowolną logikę zwracającą booleana i będzie ona działać tak samo niezależnie czy siedzi w metodzie equals czy też może jakiejś inaczej nazwanej metodzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1