Kolejność wykonywania operatorów

Jaki będzie rezultat działania poniższego programu?

package org.blog;

public class Main {

    public static void minLengthString(String s) {
        if (s != null && s.length() > 3) {
            System.out.println("Napis ma więcej niż 3 znaki.");
        }
    }

    public static void main(String[] args) {
        String strValue = null;
        minLengthString(strValue);
    }
}
  1. Zostanie rzucony wyjątek NullPointerException,
  2. Wyświetli się komunikat: “Napis ma więcej niż 3 znaki.”,
  3. Program wykona się bez widocznego efektu,
  4. Program się nie skompiluje, ponieważ zmienna strValue jest niepoprawnie zainicjalizowana.

Uwaga! Poniżej znajduje się odpowiedź na pytanie!

 

 

 

 

 

 

 

 

 

 

 

Odpowiedź

Prawidłowa odpowiedź na pytanie to odpowiedź numer 3 – program wykona się bez widocznego efektu.

Pierwsza odpowiedź jest błędna, ponieważ sprawdzanie warunku w Javie zaczyna się od lewej strony. W przypadku, gdybyśmy mieli taki kod:

public static void minLengthStringSecond(String s) {
    if (s.length() > 3 && s != null) {
        System.out.println("Napis ma więcej niż 3 znaki.");
    }
}

To niestety otrzymamy wyjątek NullPointerException.

Ze względu, że warunek w metodzie jest niespełniony to i druga odpowiedź jest nieprawidłowa. Czwarta odpowiedź jest nieprawidłowa, ponieważ każdy obiekt może być zainicjalizowany nullem.

 

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x