
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); } }
- Zostanie rzucony wyjątek NullPointerException,
- Wyświetli się komunikat: “Napis ma więcej niż 3 znaki.”,
- Program wykona się bez widocznego efektu,
- 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.