This is an old revision of the document!
Table of Contents
Μεταβλητές στην γλώσσα Προγραμματισμού Java
Οι μεταβλητές στην γλώσσα προγραμματισμού Java διακρίνονται σε δύο βασικές κατηγορίες:
- βασικοί τύποι (primitive data types): Ως βασικοί τύποι δεδομένων ορίζονται οι τύποι δεδομένων, οι οποίοι καταλαμβάνουν προκαθορισμένο αριθμό bytes στην μνήμη. Οι τύποι δεδομένων αυτής της κατηγορίας απαντώνται και σε άλλες γλώσσες προγραμματισμού, όπως οι C/C++. Κοινοί τύποι είναι byte, char, integer, long, float, double κλπ.
- αναφορικοί τύποι (reference types): Σε αυτή την κατηγορία ανήκουν όλοι οι τύποι δεδομένων οι οποίοι ορίζονται μέσα από μία κλάση και υλοποιούνται με χρήση αντικειμένων. Οι τύποι δεδομένων αυτής της κατηγορίας ανήκουν πάντοτε σε κλάσεις. Ο λόγος που καλούνται αναφορικοί τύποι είναι ότι οι μεταβλητή ενός αντικειμένου δεν περιέχει το αντικείμενο καθ' αυτό, αλλά ένα δείκτη (reference) στο αντικείμενο.
Η γλώσσα προγραμματισμού Java διαμορφώνει τις παρακάτω κατηγορίες αναφορικών μεταβλητών.
- Instance Variables (non-static class fields): Η συγκεκριμένη κατηγορία μεταβλητών είναι εκείνη που συναντούμε συνήθως στα πεδία των κλάσεων. Οι μεταβλητές αυτές είναι διαφορετικές για κάθε αντικείμενο της κλάσης και αποθηκεύουν την κατάσταση του αντικειμένου σε κάθε χρονική στιγμή.
- Static Variables (static class fields): Οι στατικές μεταβλητές δεν ανήκουν σε επιμέρους αντικείμενα, αλλά στην κλάση. Αυτό πρακτικά σημαίνει ότι η τιμή τους είναι κοινή για όλα τα αντικείμενα της κλάσης.
- Τοπικές μεταβλητές (local-variables): τοπικές μεταβλητές σε μεθόδους ή κατασκευαστές.
- Παράμετροι (parameters): παράμετροι σε μεθόδους ή κατασκευαστές.
Αναφορικά με την ονοματολογία των πεδίων της κλάσης μπορείτε να ανατρέξετε εδώ .
Βασικοί Τύποι Δεδομένων
Ως βασικοί τύποι δεδομένων (primitive data types) ορίζονται οι τύποι δεδομένων που είναι ορισμένοι σε κάθε γλώσσα προγραμματισμού και δεν χρειάζεται να τους ορίσουν οι προγραμματιστές. Εκτός των βασικών τύπων δεδομένων στην java μπορούμε να ορίσουμε δικούς μας τύπους μέσω κλάσεων, τους λεγόμενους reference types.
Οι βασικοί τύποι δεδομένων στην Java σε αναλογία με την γλώσσα προγραμματισμού C είναι οι εξής:
| τύπος δεδομένων | byte | short | int | long | float | double | boolean | char |
|---|---|---|---|---|---|---|---|---|
| αριθμός bits | 8 | 16 | 32 | 64 | 32-bit IEEE 754 floating point | 64-bit IEEE 754 floating point | not-applicable* | 16 |
| αριθμός bytes | 1 | 2 | 4 | 8 | 4 | 8 | not-applicable* | 2 |
| εύρος τιμών | -128 έως 127 | -32.768 έως 32.767 | -231 έως 231-1 | -263 έως 263 | μόνο δύο τιμές true και false | 16bit Unicode characters |
* Ο τύπος boolean λαμβάνει μόνο δύο τιμές. Ο αριθμός των bytes που καταλαμβάνονται δεν ορίζεται και πιθανόν διαφέρει από υλοποίηση σε υλοποίηση.
Εκτός από τους παραπάνω βασικούς τύπους δεδομένων η Java παρέχει ειδική υποστήριξη για αλφαριθμητικά (strings) μέσω της κλάσης java.lang.String.
Προεπιλεγμένες τιμές μεταβλητών
Εάν οι τιμές των παραπάνω βασικών τύπων δεδομένων δεν αρχικοποιηθούν, την αρχικοποίηση τους αναλαμβάνει ο compiler. Οι προεπιλεγμένες τιμές που θέτει ο compiler δίνονται παρακάτω:
| Data Type | Default Value (for fields) |
|---|---|
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| float | 0.0f |
| double | 0.0d |
| char | '\u0000' |
| String (or any object) | null |
| boolean | false |
Κυριολεκτικά (literals)
Κυριολεκτικά αλφαριθμητικών (strings)
Τα κυριολεκτικά αλφαριθμητικών ορίζονται με διπλά εισαγωγικά. Ένα παράδειγμα ορισμού String μπορείτε να δείτε παρακάτω:
String str = "this is a string";
Κυριολεκτικά χαρακτήρων ορίζονται με απλά εισαγωγικά ως εξής:
char c = 'a';
Οι χαρακτήρες στην Java καταλαμβάνουν 2 bytes και έχουν κωδικοποίηση UTF-16. Μπορείτε να γράψετε χαρακτήρες με χρήση της unicode escape μορφής τους, όπως παρακάτω
char c = '1'; char d = '\u0031'; // equals char '1'; String str = "S\u00ED Se\u00F1or"; // equals "Sí Señor" in spanish
Επίσης ορίζονται οι ειδικοί χαρακτήρες
\b(backspace)\t(tab)\n(line feed)\f(form feed)\r(carriege return)\“(double quote)\' (single quote)\\(backslash)
Κυριολεκτικά ακεραίων αριθμών (int)
- Δεκαδικές τιμές (π.χ.
int decVal = 26;) - Δεκαεξαδικές τιμές: (π.χ.
int hexVal = 0x1a;) - Δυαδικές τιμές: (π.χ.
int binVal = 0b11010;)
Κυριολεκτικά αριθμών κινητής υποδιαστολής (float)
Τα κυριολεκτικά αριθμών κινητής υποδιαστολής είναι τύπου double.
double d = 0.14768; ή double d = 0.14768L;
Εάν ένα κυριολεκτικό είναι τύπου float θα πρέπει να τελειώνει σε F ή f, δηλ.
float f = 0.14768f; ή float f = 0.14768F;
Χρήση χαρακτήρων '_' (underscore) σε αριθμητικά κυριολεκτικά
Μπορούμε να χρησιμοποιήσουμε χαρακτήρες underscore σε αριθμητικά κυριολεκτικά, όπως παρακάτω:
long creditCardNumber = 1234_5678_9012_3456L; long socialSecurityNumber = 999_99_9999L; float pi = 3.14_15F; long hexBytes = 0xFF_EC_DE_5E; long hexWords = 0xCAFE_BABE; long maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; long bytes = 0b11010010_01101001_10010100_10010010;
Δεν μπορείτε να χρησιμοποιήσετε underscores
- στην αρχή ενός αριθμού ή στο τέλος του.
- πριν ή μετά την υποδιαστολή.
- πριν τον χαρακτήρα 'F' ή 'L'.
