java:variables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:variables [2016/01/15 04:25]
gthanos [Κυριολεκτικά (literals)]
java:variables [2016/01/15 05:24]
gthanos [Κυριολεκτικά (literals)]
Line 45: Line 45:
  
 ==== Κυριολεκτικά (literals) ==== ==== Κυριολεκτικά (literals) ====
 +
 +Με τον όρο "​κυριολεκτικά"​ (literals) εννοούμε την ανάθεση "​σταθερών"​ τιμών σε μεταβλητές βασικών τύπων μέσα στον κώδικα. Παραδείγματα κυριολεκτικών είναι τα παρακάτω:​
 +<code java>
 +boolean result = true;
 +char capitalC = '​C';​
 +byte b = 100;
 +short s = 10000;
 +int i = 100000;
 +</​code>​
  
 === Κυριολεκτικά αλφαριθμητικών (strings) === === Κυριολεκτικά αλφαριθμητικών (strings) ===
Line 54: Line 63:
 </​code>​ </​code>​
  
 +=== Κυριολεκτικά χαρακτήρων ===
 Κυριολεκτικά χαρακτήρων ορίζονται με απλά εισαγωγικά ως εξής: Κυριολεκτικά χαρακτήρων ορίζονται με απλά εισαγωγικά ως εξής:
  
Line 78: Line 88:
   * ''​\\''​ (backslash)   * ''​\\''​ (backslash)
  
-=== Κυριολεκτικά ακεραίων αριθμών ​(int) ===+=== Κυριολεκτικά ακεραίων αριθμών ===
  
-  ​* **Δεκαδικές τιμές** ​ ​(π.χ. ​''​int decVal = 26;''​) +Τα κυριολεκτικά ακεραίων αριθμών είναι τύπου int εκτός εάν έχουν τον χαρακτήρα '​L'​ ή '​l'​ στο τέλος οπότε είναι τύπου long (θα εξηγήσουμε στη συνέχεια). Αν θέλετε να αναθέσετε μία ακέραια τιμή σε μία μεταβλητή τύπου byte, short, int τότε αρκεί να χρησιμοποιήσετε μία δήλωση της μορφής:​ 
-  * **Δεκαεξαδικές τιμές:​** ​(π.χ. ​''​int hexVal = 0x1a;''​) +<code java> 
-  * **Δυαδικές τιμές:​** ​(π.χ. ​''​int binVal = 0b11010;''​)+byte b = 100; 
 +short s = 10000; 
 +int i = 100000; 
 +</​code>​ 
 + 
 +<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. 
 +</​code>​ 
 +</​WRAP>​ 
 + 
 +Εάν θέλετε να αναθέσετε σε μία μεταβλητή τύπου long μία τιμή που είναι μεγαλύτερη από την μέγιστη τιμή της μεταβλητή int ή μικρότερη της ελάχιστης τιμή της int, τότε θα πρέπει να χρησιμοποιήσετε ένα κυριολεκτικό τύπου long, όπως δείχνουμε παρακάτω:​ 
 +<code java> 
 +long a = 2147483648878787L;​ 
 +ή 
 +long a = 2147483648878787l;​ 
 +</​code>​ 
 +Εάν παραλείψετε τον χαρακτήρα '​L'​ ή '​l',​ τότε ο compiler εμφανίζει το παρακάτω μήνυμα λάθους. 
 +<​code>​ 
 +error: integer number too large: 2147483648878787 
 +    long a = 2147483648878787;​ 
 +             ^ 
 +</​code>​ 
 + 
 +Σε έναν ακέραιο αριθμό (byte, short, int, long) μπορείτε να αναθέσετε τιμές χρησιμοποιώντας κυριολεκτικά δεκαδικής,​ δεκαεξαδικής ή δυαδικής μορφής. Ενδεικτικά παραδείγματα δίνονται παρακάτω:​ 
 + 
 +  ​* **Δεκαδικές τιμές**''​int decVal = 26;''​ 
 +  * **Δεκαεξαδικές τιμές:​** ''​int hexVal = 0x1a;''​ 
 +  * **Δυαδικές τιμές:​** ''​int binVal = 0b11010;''​
  
 === Κυριολεκτικά αριθμών κινητής υποδιαστολής (float) === === Κυριολεκτικά αριθμών κινητής υποδιαστολής (float) ===
  
-Τα κυριολεκτικά αριθμών κινητής υποδιαστολής είναι τύπου double. ​+Τα κυριολεκτικά αριθμών κινητής υποδιαστολής είναι τύπου double ​και όχι float. Αυτό πρακτικά σημαίνει ότι μπορείτε να αναθέσετε οποιαδήποτε τιμή σε μία μεταβλητή double χωρίς περιορισμούς.
  
 <code java> <code java>
-double d = 0.14768; ή double d = 0.14768L;+double d = 0.14768; ή double d = 0.14768D;
 </​code>​ </​code>​
-Εάν ένα κυριολεκτικό είναι τύπου float θα πρέπει να τελειώνει σε //F// ή //f//, δηλ.+ 
 +<WRAP tip 80% center round> 
 +**Δεν συνιστάται,​ αλλά για λόγους πληρότητας αναφέρεται εδώ.**  
 + 
 +Εάν ​για οποιονδήποτε λόγο θέλετε να αναθέσετε μία τιμή σε μία μεταβλητή τύπου float τότε αυτή θα πρέπει να έχει τα εξής χαρακτηριστικά:​ 
 +  * να χωρά σε μία μεταβλητή τύπου float. 
 +  * η τιμή να τελειώνει με τον χαρακτήρα '​F'​ ή '​f',​ δηλώνοντας ​ένα κυριολεκτικό ​float. 
 +Δείτε το παρακάτω παραδειγμα:​ 
 +<code java> 
 +float d= 1288789.99999999999999999999;​ 
 + 
 +Λαμβάνετε το παρακάτω μήνυμα λάθους,​ καθώς πάτε να αντιστοιχίσετε σε μία μεταβλητή ​τύπου float ένα κυριολεκτικό double. 
 +error: possible loss of precision 
 +    float d= 1288789.99999999999999999999;​ 
 +             ^ 
 +  required: float 
 +  found: ​   double 
 +</​code>​ 
 + 
 +Αντίστοιχα,​ εάν σε ένα κυριολεκτικό τύπου float δηλώσετε μία τιμή που υπερβαίνει τις δυνατότητες μίας μεταβλητής float να το αποθηκεύσει τότε επίσης θα λάβετε ένα μήνυμα λάθους. Για παράδειγμα:​ 
 +<code java> 
 +float d= 1288787879999999999999999999999999999999999999999999999999.99999999999999999999F;​ 
 + 
 +error: floating point number too large 
 +    float d= 1288789999999999999999999999999999999999999999999999999999999.99999999999999999999F;​ 
 +             ^ 
 +</​code>​ 
 + 
 + 
 +</​WRAP>​ 
 +Εάν ένα κυριολεκτικό είναι τύπου float αντί για double, ​θα πρέπει να τελειώνει σε //F// ή //f//, δηλ.
 <code java> <code java>
 float f = 0.14768f; ή float f = 0.14768F; float f = 0.14768f; ή float f = 0.14768F;
java/variables.txt · Last modified: 2017/02/11 12:56 by doufexi