ΕΝΟΤΗΤΑ 4 - VARIABLES AND INTEGRAL DATA TYPES
ΕΙΣΑΓΩΓΗ
Ένας κύριος λόγος που χρησιμοποιούμε όχι μόνο την Java αλλά και οποιαδήποτε γλώσσα προγραμματισμού, είναι για να μπορούμε να εκτελούμε αριθμητικές πράξεις πολύ γρήγορα.
Για να μπορέσουμε να πετύχουμε το επιθυμητό αποτέλεσμα, θα πρέπει πρωτίστως να περάσουμε στην Java κατά κάποιο τρόπο τις τιμές που θέλουμε να συμπεριληφθούν στις πράξεις και δευτερευόντως να ορίσουμε την μαθηματική φόρμουλα στην οποία θα λάβουν μέρος οι αριθμοί. Για να μπορέσουμε να ορίσουμε τιμές μέσα σε ένα πρόγραμμα Java, έχουμε δημιουργήσει την έννοια της μεταβλητής (variable).
Στο σημερινό δωρεάν μάθημα Java με VS Code θα δούμε πως ορίζουμε μεταβλητές (variables) και πως αναθέτουμε ακέραιες (integer) τιμές σε αυτές.
ΠΩΣ ΟΡΙΖΕΤΑΙ ΜΙΑ ΜΕΤΑΒΛΗΤΗ
Όταν ορίζουμε μια variable στην πραγματικότητα δεσμεύουμε ένα κομμάτι της μνήμης του υπολογιστή. Όταν αναθέτουμε μια τιμή στην μεταβλητή, αυτή η τιμή πηγαίνει και τοποθετείται στη τοποθεσία της μνήμης την οποία έχει ήδη δεσμεύσει η μεταβλητή. Για να χρησιμοποιήσουμε την αποθηκευμένη τιμή, απλά καλούμε το όνομα της μεταβλητής και εκείνη αναλαμβάνει να ανακτήσει την τιμή από την μνήμη. Μετά από αυτή τη γρήγορη ανάλυση, καταλαβαίνουμε ότι οι μεταβλητές έχουν γενικότερα τρεις ιδιότητες:
- Αναφέρονται σε μια τοποθεσία της μνήμης
- Δέχονται συγκεριμένη μορφή τιμών
- και φυσικά έχουν ένα όνομα
Πριν όμως μιλήσουμε για το είδος των τιμών που μπορούμε να αναθέσουμε σε μια μεταβλητή, πρέπει να ορίσουμε τους απλούς κανόνες που πρέπει να ακολουθήσουμε για δώσουμε στην μεταβλητή ένα όνομα.
- Ο πρώτος χαρακτήρας στο όνομα μιας variable πρέπει να είναι γράμμα
- Σαν γράμματα θεωρούμε το εύρος 'A'-'Z', 'a'-'z', '_', ή '$'
- Μετά από το πρώτο γράμμα μπορούμε να συμπεριλάβουμε και αριθμούς ('0'-'9') στο όνομα
- Αν το όνομα αποτελείται από δύο ή περισσότερες λέξεις δεν επιτρέπεται το κενό ανάμεσα τους
- Δεν επιτρέπονται άλλα σύμβολα όπως '+' ή '©'
- Μπορούμε να χρησιμοποιήσουμε όσους χαρακτήρες θέλουμε χωρίς να υπάρχει όριο
- Η Java είναι case sensitive οπότε προσέχουμε με τα κεφαλαία και τα πεζά γράμματα
- Δεν μπορεί το όνομα της μεταβλητής να είναι μια από τις εντολές (reserved words) τις java
Αυτά είναι μερικά παραδείγματα ονομάτων που είναι έγκυρα στην Java:
Welcome, _welcome, $Welcome, Welcome1
ενώ δεν μπορούμε να έχουμε ονόματα όπως:
my name, 1Welcome
Ο πίνακας με τις δεσμευμένες λέξεις (reserved words) είναι ο εξής:
Οι δύο λέξεις κλειδιά const και goto δεν χρησιμοποιούντα επί του παρόντος αν και ανήκουν στις reserve λέξεις της Java.
Με την εισαγωγή του module system στην Java 9, εμφανίστηκαν ακόμα 10 καινούργια reserved keywords τα οποία δεν μπορούμε να χρησιμοποιήσουμε σαν ονόματα μεταβλητών και είναι οι εξής:
open, module, requires, transitive, exports, opens, to, uses, provides, with.
Σημείωση: Το όνομα της μεταβλητής, δηλαδή οι χαρακτήρες από τους οποίους αποτελείται το όνομα ενός variable, ονομάζεται identifier. Κάθε φορά που ονομάζουμε μια μεταβλητή, στην ουσία ορίζουμε ένα identifier. Οι κανόνες για να ορίσουμε ένα identifier παραμένουν οι ίδιοι και για την ονομασία κλάσεων όπως και μεθόδων.
Για οριστεί πλήρως μια μεταβλητή, εκτός από το identifier (τό όνομα της μεταβλητής) πρέπει να ορίσουμε και το είδος των δεδομένων (data type) που θα δέχεται. Η Java λειτουργεί ως strongly typed programming language και αυτό σημαίνει ότι οι τιμές που αναθέτουμε στις μεταβλητές θα πρέπει να συμφωνούν με το type της μεταβλητής. Ο κανόνας για να ορίσουμε μια variable είναι ο εξής:
data_type variable_name;
PRIMITIVE DATA TYPES
Η Java αποτελείται από δύο μεγάλες κατηγορίες data types: εκείνες των αντικειμένων και εκείνες των μη αντικειμένων. Σε αυτή την ενότητα δωρεάν μαθημάτων Java, και σε μερικές επόμενες, θα ασχοληθούμε με την κατηγορία των μη-αντικειμένων data types που αλλιώς ονομάζονται primitive. Ονομάζονται έτσι γιατί κυρίως χρησιμοποιούνται σαν τοπικές (local) μεταβλητές και όχι σαν μεταβλητές αντικειμένων. Η έννοια αυτή θα είναι πιο ξεκάθαρη όταν μιλήσουμε αργότερα για αντικείμενα. Συνολικά λοιπόν έχουμε οκτών διαφορετικά είδη primitive data types όπως δείχνει και ο παρακάτω πίνακας.
Κάθε ένα από τα παραπάνω data types χρειάζεται διαφορετικό μέγεθος Bits για να περιγράψει έναν αριθμό στην μνήμη του υπολογιστή. Με αυτό τον τρόπο δεν ξοδεύουμε άσκοπα την μνήμη της συσκευής στην οποία εκτελείται η java εφαρμογή μας. Αυτό σε laptops ή tower computers ίσως να μην έχει σημασία, όμως είναι σημαντικό για εφαρμογές σε Mobiles, smart TVs και οπουδήποτε αλλού τρέχει η Java. Γιατί να χρησιμοποιήσετε 64 bits για να ορίσετε τον αριθμό 3 όταν μπορείτε να το κάνετε και με 8 bits?
int DATA TYPE
Τώρα που ορίσαμε τι είναι μεταβλητή και ποια ονόματα μπορούμε να χρησιμοποιήσουμε για να την ορίσουμε, μπορούμε να μιλήσουμε για τους ακέραιους αριθμούς στην Java. Υπάρχουν τέσσερα διαφορετικά είδη τα οποία είναι:
Όπως παρατηρούμε στον πίνακα, το εύρος των αριθμών που καλύπτει κάθε data type περιέχει και αρνητικούς και θετικούς αριθμούς. Η Java δεν υποστηρίζει μόνο θετικούς αριθμούς όπως ίσως συμβαίνει σε άλλες γλώσσες προγραμματισμού.
Το πιο συνηθισμένο integer data type είναι το int. Βασικά δεν είναι μόνο το πιο συνηθισμένο αλλά είναι και το default data type της Java στους ακέραιους αριθμούς. Αυτό σημαίνει ότι η Java πάντα προσπαθεί να μετατρέψει όλους τους ακέραιους αριθμούς σε int εκτός και αν εμείς ορίσουμε κάποιο άλλο data type. Αυτή την συμπεριφορά θα την δούμε λίγο αργότερα με ένα παράδειγμα.
Αυτό που έχει απομείνει είναι να δούμε πως ορίζεται μια μεταβλητή με integer data type. Χρειάζεται λοιπόν πρώτα να ορίσουμε το data type, μετά το όνομα της μεταβλητής και τέλος είτε κατά τον ορισμό είτε μέσα στον κώδικα της εφαρμογής να της αναθέσουμε μια τιμή με το = σύμβολο.
Έχουμε την δυνατότητα λοιπόν να πούμε:
int x;
x = 5;
ή, εάν γνωρίζουμε την τιμή εξαρχής, να την αναθέσουμε άμεσα στην μεταβλητή
int x = 5;
Επίσης έχουμε την δυνατότητα να ορίσουμε πολλαπλές μεταβλητές στην ίδια γραμμή όταν αυτές ανήκουν στο ίδιο data type:
int x1 = 5, x2 = 10;
Μην ξεχάσετε να τελειώνετε την δήλωση των μεταβλητών με semicolon (; ) γιατί αυτό απαιτεί η Java. Ας δούμε λοιπόν ένα ολοκληρωμένο πρόγραμμα.
Μπορείτε να δημιουργήσετε ένα καινούργιο Java Maven Project ή να διαγράψετε την κλάσση App και να δημιουργήσετε μια καινούργια με το όνομα IntegerDemo η οποία θα περιέχει τον εξής κώδικα:
IntegerDemo.java
Output
Σε αυτή τη γραμμή του κώδικα μας, ορίζουμε μια καινούργια integer variable με το όνομα salary και ταυτόχρονα της αναθέτουμε την τιμή 2500.
Εδώ ορίζουμε ακόμα μια integer variable με το όνομα bonus και της αναθέτουμε την τιμή 1200
Όπως σε κάθε γλώσσα προγραμματισμού, έτσι και με την Java μπορούμε να πραγματοποιήσουμε αριθμητικές πράξεις με τις μεταβλητές χρησιμοποιώντας απλά σύμβολα που ονομάζονται arithmetic operators.
Χρησιμοποιώντας τον addition operator (+), προσθέτουμε τις μεταβλητές salary και bonus. Στην πραγματικότητα προσθέτουμε τις τιμές με τις οποίες ισούται κάθε μια από τις μεταβλητές. Το αποτέλεσμα της πρόσθεσης το αναθέτουμε σε μια καινούργια μεταβλητή που ορίζουμε με το όνομα pay.
Τώρα θέλουμε να δούμε ποιο είναι το αποτέλεσμα της πρόσθεσης, δηλαδή ποια είναι η τιμή που περιέχει η μεταβλητή pay. Για αυτό το λόγο θα χρησιμοποιήσουμε την μέθοδο println( ) για να τυπώσουμε στην κονσόλα την τιμή με την οποία ισούται η pay.
Επειδή δεν θέλουμε να τυπώσουμε μόνο τον αριθμό αλλά και ένα επεξηγηματικό μήνυμα μαζί με τον αριθμό, συνδιάζουμε ένα String μήνυμα ("Your may is ") με την μεταβλητή pay. Όταν εκτελείται η println(), θα αντικαταστήσει την pay με την τιμή την οποία ισούται και μετά θα προσθέσει το μήνυμα μπροστά από την τιμή. Το σύμβολο (+) εδώ δεν κάνει πρόσθεση αλλά concatenation για αυτό και έχουμε αφήσει ένα κενό μετα το is και πριν κλείσει το quotes για να μην κολλήσει ο αριθμός δίπλα στο γράμμα.
Αν τώρα θέλετε να γνωρίζετε ποια είναι η max ή η min τιμή που μπορεί να έχει μια variable δηλωμένη σαν integer, αντί να θυμάστε τον πίνακα που είδαμε παραπάνω, μπορείτε να καλέσετε την κλάση Integer.
IntegerDemo.java
Output
Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το site να μεγαλώσει ακόμα πιο πολύ και να έχει περισσότερες δυνατότητες στην Online παράδοση δωρεάν μαθημάτων.
Γίνε Χορηγός στη Γνώση
ΕΙΣΗΓΗΤΗΣ
Μιχάλης Κασάπογλου
Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.