This shows you the differences between two versions of the page.
|
java:variables [2016/01/15 05:40] gthanos [Κυριολεκτικά (literals)] |
java:variables [2017/01/25 14:13] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Μεταβλητές στην γλώσσα Προγραμματισμού Java ====== | ||
| - | |||
| - | Οι μεταβλητές στην γλώσσα προγραμματισμού Java διακρίνονται σε δύο βασικές κατηγορίες: | ||
| - | * **βασικοί τύποι (// | ||
| - | * **αναφορικοί τύποι (// | ||
| - | |||
| - | <WRAP tip 80% round center> | ||
| - | |||
| - | Επιπλέον, | ||
| - | * **Instance Variables (non-static class fields):** Η συγκεκριμένη κατηγορία μεταβλητών είναι εκείνη που συναντούμε συνήθως στα [[java: | ||
| - | * **Static Variables (static class fields):** Οι [[java: | ||
| - | * **Τοπικές μεταβλητές (local-variables): | ||
| - | * **Παράμετροι (parameters): | ||
| - | |||
| - | Σχετικά με την ονοματολογία των πεδίων της κλάσης μπορείτε να ανατρέξετε [[java: | ||
| - | |||
| - | ===== Βασικοί Τύποι Δεδομένων | ||
| - | |||
| - | Ως βασικοί τύποι δεδομένων (// | ||
| - | |||
| - | Οι βασικοί τύποι δεδομένων στην 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< | ||
| - | | αριθμός bytes | 1 | 2 | 4 | 8 | 4 | 8 | not-applicable< | ||
| - | | εύρος τιμών | ||
| - | |||
| - | <color red> | ||
| - | |||
| - | Εκτός από τους παραπάνω βασικούς τύπους δεδομένων η Java παρέχει ειδική υποστήριξη για αλφαριθμητικά (**strings**) μέσω της κλάσης [[ http:// | ||
| - | |||
| - | ==== Προεπιλεγμένες τιμές μεταβλητών ==== | ||
| - | |||
| - | Εάν οι τιμές των παραπάνω βασικών τύπων δεδομένων δεν αρχικοποιηθούν, | ||
| - | |||
| - | ^ Data Type ^ Default Value (for fields) | ||
| - | | byte | ||
| - | | short | 0 | | ||
| - | | int | 0 | | ||
| - | | long | ||
| - | | float | 0.0f | | ||
| - | | double | ||
| - | | char | ||
| - | | String (or any object) | ||
| - | | boolean | ||
| - | |||
| - | ==== Κυριολεκτικά (literals) ==== | ||
| - | |||
| - | Με τον όρο " | ||
| - | <code java> | ||
| - | boolean result = true; | ||
| - | char capitalC = ' | ||
| - | byte b = 100; | ||
| - | short s = 10000; | ||
| - | int i = 100000; | ||
| - | </ | ||
| - | |||
| - | === Κυριολεκτικά αλφαριθμητικών (strings) === | ||
| - | |||
| - | Τα κυριολεκτικά αλφαριθμητικών ορίζονται με διπλά εισαγωγικά. Ένα παράδειγμα ορισμού **String** μπορείτε να δείτε παρακάτω: | ||
| - | <code java> | ||
| - | String str = "this is a string"; | ||
| - | </ | ||
| - | |||
| - | Μπορείτε να παράγετε ένα νέο αλφαριθμητικό από την συνένωση δύο υφιστάμενων αλφαριθμητικών με χρήση του χαρακτήρα ' | ||
| - | <code java> | ||
| - | String greeting = "Hello " | ||
| - | </ | ||
| - | Μετά την εκτέλεση της παραπάνω εντολής η μεταβλητή // | ||
| - | |||
| - | === Κυριολεκτικά χαρακτήρων === | ||
| - | Κυριολεκτικά χαρακτήρων ορίζονται με απλά εισαγωγικά ως εξής: | ||
| - | |||
| - | < | ||
| - | char c = ' | ||
| - | </ | ||
| - | |||
| - | Οι χαρακτήρες στην Java καταλαμβάνουν 2 bytes και έχουν κωδικοποίηση UTF-16. Μπορείτε να αναθέσετε τιμές σε χαρακτήρες με χρήση της //unicode escape// μορφής τους, όπως παρακάτω: | ||
| - | |||
| - | <code java> | ||
| - | char c = ' | ||
| - | char d = ' | ||
| - | String str = " | ||
| - | </ | ||
| - | |||
| - | Επίσης ορίζονται οι ειδικοί χαρακτήρες | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | === Κυριολεκτικά ακεραίων αριθμών === | ||
| - | |||
| - | Τα κυριολεκτικά ακεραίων αριθμών είναι τύπου int εκτός εάν έχουν τον χαρακτήρα ' | ||
| - | <code java> | ||
| - | byte b = 100; | ||
| - | short s = 10000; | ||
| - | int i = 100000; | ||
| - | </ | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | Εάν επιχειρήσετε να αναθέσετε σε μία μεταβλητή μία τιμή η οποία υπερβαίνει την χωρητικότητα της τότε θα λάβετε ένα μήνυμα λάθους από τον compiler, όπως παρακάτω | ||
| - | <code java> | ||
| - | byte b = 1000; | ||
| - | |||
| - | error: incompatible types: possibly lossy conversion from integer to byte. | ||
| - | byte b = 1000; | ||
| - | ^ | ||
| - | Δεν μπορείτε να αναθέσετε σε μία μεταβλητή τύπου byte την τιμή 1000, καθώς | ||
| - | το εύρος τιμών της είναι από -128 έως 127. | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | Εάν θέλετε να αναθέσετε σε μία μεταβλητή τύπου long μία τιμή που είναι μεγαλύτερη από την μέγιστη τιμή της μεταβλητή int ή μικρότερη της ελάχιστης τιμή της int, τότε θα πρέπει να χρησιμοποιήσετε ένα κυριολεκτικό τύπου long, όπως δείχνουμε παρακάτω: | ||
| - | <code java> | ||
| - | long a = 2147483648878787L; | ||
| - | ή | ||
| - | long a = 2147483648878787l; | ||
| - | </ | ||
| - | Εάν παραλείψετε τον χαρακτήρα ' | ||
| - | < | ||
| - | error: integer number too large: 2147483648878787 | ||
| - | long a = 2147483648878787; | ||
| - | ^ | ||
| - | </ | ||
| - | |||
| - | Σε έναν ακέραιο αριθμό (byte, short, int, long) μπορείτε να αναθέσετε τιμές χρησιμοποιώντας κυριολεκτικά δεκαδικής, | ||
| - | |||
| - | * **Δεκαδικές τιμές**: | ||
| - | * **Δεκαεξαδικές τιμές: | ||
| - | * **Δυαδικές τιμές: | ||
| - | |||
| - | === Κυριολεκτικά αριθμών κινητής υποδιαστολής (float) === | ||
| - | |||
| - | Τα κυριολεκτικά αριθμών κινητής υποδιαστολής είναι τύπου double και όχι float. Αυτό πρακτικά σημαίνει ότι μπορείτε να αναθέσετε οποιαδήποτε τιμή σε μία μεταβλητή double χωρίς περιορισμούς. | ||
| - | |||
| - | <code java> | ||
| - | double d = 0.14768; ή double d = 0.14768D; | ||
| - | </ | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | **Δεν συνιστάται, | ||
| - | |||
| - | Εάν για οποιονδήποτε λόγο θέλετε να αναθέσετε μία τιμή σε μία μεταβλητή τύπου float τότε αυτή θα πρέπει να έχει τα εξής χαρακτηριστικά: | ||
| - | * να χωρά σε μία μεταβλητή τύπου float. | ||
| - | * η τιμή να τελειώνει με τον χαρακτήρα ' | ||
| - | Δείτε το παρακάτω παραδειγμα: | ||
| - | <code java> | ||
| - | float d= 1288789.99999999999999999999; | ||
| - | |||
| - | Λαμβάνετε το παρακάτω μήνυμα λάθους, | ||
| - | error: possible loss of precision | ||
| - | float d= 1288789.99999999999999999999; | ||
| - | ^ | ||
| - | required: float | ||
| - | found: | ||
| - | </ | ||
| - | |||
| - | Αντίστοιχα, | ||
| - | <code java> | ||
| - | float d= 1288787879999999999999999999999999999999999999999999999999.99999999999999999999F; | ||
| - | |||
| - | error: floating point number too large | ||
| - | float d= 1288789999999999999999999999999999999999999999999999999999999.99999999999999999999F; | ||
| - | ^ | ||
| - | </ | ||
| - | |||
| - | |||
| - | </ | ||
| - | Εάν ένα κυριολεκτικό είναι τύπου float αντί για double, θα πρέπει να τελειώνει σε //F// ή //f//, δηλ. | ||
| - | <code java> | ||
| - | float f = 0.14768f; ή float f = 0.14768F; | ||
| - | </ | ||
| - | |||
| - | ==== Χρήση χαρακτήρων ' | ||
| - | |||
| - | Μπορούμε να χρησιμοποιήσουμε χαρακτήρες // | ||
| - | |||
| - | <code java> | ||
| - | 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; | ||
| - | </ | ||
| - | |||
| - | Δεν μπορείτε να χρησιμοποιήσετε // | ||
| - | * στην αρχή ενός αριθμού ή στο τέλος του. | ||
| - | * πριν ή μετά την υποδιαστολή. | ||
| - | * πριν τον χαρακτήρα ' | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | | | [[java: | ||