Στη Java, το literal null χρησιμοποιείται για να δηλώσει την απουσία τιμής.
Οι πρωτόγονοι τύποι δεδομένων στη Java έχουν όλοι μια προεπιλεγμένη τιμή και επομένως δεν μπορούν ποτέ να είναι null.
Κατά σύμβαση, ξεκινούν με πεζό γράμμα, π.χ. int.
Οι τύποι αναφοράς περιέχουν τη διεύθυνση μνήμης ενός αντικειμένου και μπορούν να έχουν τιμή null.
Γενικά ξεκινούν με κεφαλαίο γράμμα, π.χ. String.
Αν προσπαθήσεις να αντιστοιχίσεις μια τιμή null σε μια πρωτόγονη μεταβλητή, θα προκύψει σφάλμα κατά τη μεταγλώττιση, καθώς η μεταβλητή περιέχει πάντα μια πρωτόγονη τιμή του τύπου που της έχει αντιστοιχιστεί.
//Throws compile time error stating the required type is int, but null was provided
int number = null;
Η αντιστοίχιση μιας τιμής null σε μια μεταβλητή αναφοράς δεν θα προκαλέσει σφάλμα κατά τη μεταγλώττιση, καθώς οι μεταβλητές αναφοράς μπορούν να είναι null.
//No error will occur as the String variable str is nullable
String str = null;
Σε αυτή την άσκηση θα γράψεις κώδικα για να εκτυπώνεις σήματα με ονόματα για τους υπαλλήλους ενός εργοστασίου.
Οι υπάλληλοι έχουν ένα αναγνωριστικό, όνομα και όνομα τμήματος. Οι ετικέτες των σημάτων των υπαλλήλων έχουν την εξής μορφή: "[id] - name - DEPARTMENT".
Υλοποίησε τη μέθοδο Badge.print() ώστε να επιστρέφει την ετικέτα σήματος ενός υπαλλήλου:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
Σημείωσε ότι το τμήμα πρέπει να είναι γραμμένο με κεφαλαία στην ετικέτα.
Λόγω μιας ιδιοτροπίας του υπολογιστικού συστήματος, οι νέοι υπάλληλοι μερικές φορές δεν έχουν ακόμη αναγνωριστικό όταν ξεκινούν να εργάζονται στο εργοστάσιο.
Καθώς τα σήματα είναι υποχρεωτικά, θα λαμβάνουν ένα προσωρινό σήμα χωρίς το πρόθεμα αναγνωριστικού. Τροποποίησε τη μέθοδο Badge.print() ώστε να υποστηρίζει νέους υπαλλήλους που δεν έχουν ακόμη αναγνωριστικό:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
Ακόμη και ο ιδιοκτήτης του εργοστασίου πρέπει να φοράει σήμα συνεχώς.
Ωστόσο, ο ιδιοκτήτης δεν έχει τμήμα. Σε αυτή την περίπτωση, η ετικέτα πρέπει να εκτυπώνει "OWNER" αντί για το όνομα του τμήματος.
Τροποποίησε τη μέθοδο Badge.print() ώστε να εκτυπώνει μια ετικέτα για τον ιδιοκτήτη:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
Σημείωσε ότι είναι πιθανό ο ιδιοκτήτης να είναι και νέος υπάλληλος:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.