Βίντεο: Leap Motion SDK 2024
Οι προγραμματιστές της Java συχνά αντιμετωπίζουν προβλήματα που διαπιστώνουν γιατί μια εφαρμογή παρουσιάζει κακή συμπεριφορά όταν αντιμετωπίζει πρόβλημα πρόσβασης στο μπλοκ. Η βασική κατευθυντήρια γραμμή είναι ότι οποιαδήποτε μεταβλητή που δημιουργείτε μέσα σε ένα μπλοκ ορίζεται μόνο μέσα σε αυτό το μπλοκ. Για παράδειγμα, όταν εξετάζετε τον ακόλουθο κώδικα, βλέπετε ένα τυπικό σενάριο πρόσβασης μπλοκ.
// Δημιουργήστε μια μεταβλητή μέσα σε ένα μπλοκ. για (int i = 0; i <10; i ++) // Εμφάνιση της τιμής αυτής της μεταβλητής. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i); // Η πρόσβαση εκτός του μπλοκ δεν λειτουργεί. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i);
Το παράδειγμα εμφανίζει την τιμή του i εντός του βρόχου for (τύπος μπλοκ) χωρίς πρόβλημα. Ωστόσο, η προσπάθεια πρόσβασης στο i εκτός του μπλοκ δεν είναι αποδεκτή επειδή η μεταβλητή δεν έχει οριστεί. Ο μεταγλωττιστής θα εντοπίσει αυτό το σφάλμα.
Ένα άλλο δυνητικό πρόβλημα προκύπτει όταν μια μεταβλητή ορίζεται στην εφαρμογή και επίσης μέσα σε ένα μπλοκ. Επειδή αυτή η κατάσταση είναι πιθανό να δημιουργήσει προβλήματα, οι νεώτερες εκδόσεις της Java δεν επιτρέπουν το είδος του κώδικα που εμφανίζεται εδώ:
public static void main (String [] args) {// Καθορισμός μεταβλητής. int i = 0; // Δημιουργήστε μια μεταβλητή μέσα σε ένα μπλοκ. για (int i = 0; i <10; i ++) // Εμφάνιση της τιμής αυτής της μεταβλητής. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i); // Η πρόσβαση εκτός του μπλοκ δεν λειτουργεί. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i ")}
Ο μεταγλωττιστής δεν θα σας εμποδίζει πάντα να τραβήξετε τον εαυτό σας στο πόδι. Σε πολλές περιπτώσεις, ο προγραμματιστής κάνει κάτι με τη μεταβλητή και δεν καταλαβαίνει τις συνέπειες. Για παράδειγμα, ο ακόλουθος κώδικας είναι απολύτως νόμιμος στην Java.
δημόσιο static void main (String [] args) {// Καθορισμός μεταβλητής. int i = 0; // Δημιουργήστε μια μεταβλητή μέσα σε ένα μπλοκ. για (i = 0; i <10; i ++) // Εμφάνιση της τιμής αυτής της μεταβλητής. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i); // Η πρόσβαση εκτός του μπλοκ δεν λειτουργεί. Σύστημα. έξω. println ("Η τιμή του i είναι:" + i) "}
Ο βρόχος for εμφανίζει τις τιμές 0 έως 9 εξαιτίας της κατάστασης εντός της δήλωσης βρόχου. Η τελική κλήση στο σύστημα. έξω. Το println () εμφανίζει μια τιμή 10, όχι 0 ή 9, όπως ίσως περιμένουν ορισμένοι προγραμματιστές.
Το θέμα είναι ότι πρέπει να εξετάσετε πώς λειτουργεί ένα μπλοκ με μια μεταβλητή, για να καθορίσετε αν μπορείτε να αποκτήσετε πρόσβαση στη μεταβλητή και τι θα περιέχει η τιμή κατά την έξοδο από το μπλοκ.