====== Τελεστές ====== ===== Αριθμητικοί τελεστές ===== ^ τελεστής ^ περιγραφή ^ | + | πρόσθεση (ορίζεται για πρόσθεση μεταξύ αριθμών, αλλά και για συνένωση δύο αλφαριθμητικών) | | - | αφαίρεση | | * | πολλαπλασιασμός | | / | διαίρεση | | % | ακέραιο υπόλοιπο διαίρεσης | Το παρακάτω παράδειγμα από το site της [[https://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/ArithmeticDemo.java|Oracle]] χρησιμοποιεί τους παραπάνω τελεστές. class ArithmeticDemo { public static void main (String[] args) { int result = 1 + 2; // result is now 3 System.out.println("1 + 2 = " + result); int original_result = result; result = result - 1; // result is now 2 System.out.println(original_result + " - 1 = " + result); original_result = result; result = result * 2; // result is now 4 System.out.println(original_result + " * 2 = " + result); original_result = result; result = result / 2; // result is now 2 System.out.println(original_result + " / 2 = " + result); original_result = result; result = result + 8; // result is now 10 System.out.println(original_result + " + 8 = " + result); original_result = result; result = result % 7; // result is now 3 System.out.println(original_result + " % 7 = " + result); } } ===== Μοναδιαίοι τελεστές ===== ^ τελεστής ^ περιγραφή ^ | + | τελεστής θετικού προσήμου. Προσδιορίζει μία θετική αριθμητική τιμή (οι αριθμοί στην Java είναι θετικοί όταν παραλείπεται ο τελεστής προσήμου) | | - | τελεστής αρνητικού προσήμου; | | ++ | τελεστής αύξησης της υφιστάμενης τιμής κατά 1 | | %%--%% | τελεστής μείωσης της υφιστάμενης τιμής κατά 1 | Οι τελεστές αύξησης ή μείωσης της τιμής κατά 1 (++,%%--%%), μπορούν να εφαρμοστούν πριν ή μετά την μεταβλητή. Για παράδειγμα, (result++) και (++result). Η διαφορά είναι ότι στην πρώτη περίπτωση επιστρέφεται η αρχική τιμή πριν από την αύξηση, ενώ στην δεύτερηη περίπτωση επιστρέφεται η νέα τιμή (μετά την αύξηση τις τιμής). Τρέξτε το παρακάτω παράδειγμα για να δείτε πως λειτουργεί ο τελεστής. class PreAndPostIncrementDemo { public static void main(String[] args){ int i = 3; i++; // prints 4 System.out.println(i); ++i; // prints 5 System.out.println(i); // prints 6, i=6 System.out.println(++i); // prints 6, i=7 System.out.println(i++); // prints 7 System.out.println(i); // prints 7, i=6 System.out.println(i--); // prints 5, i=5 System.out.println(--i); } } ===== Τελεστές ελέγχου ισότητας, ανισότητας ===== ^ τελεστής ^ περιγραφή ^ | == |**έλεγχος ισότητας** Επιστρέφει **true** αν οι τιμές στα αριστερά και δεξιά του τελεστή είναι ίσες | | != |**έλεγχος ανισότητας** Επιστρέφει **true** αν οι τιμές στα αριστερά και δεξιά του τελεστή δεν είναι ίσες | | > |**μεγαλύτερο από** Επιστρέφει **true** αν ο αριθμός στα αριστερά είναι μεγαλύτερος το αριθμού στα δεξιά. | | %%>=%% |**μεγαλύτερο ή ίσο από** Ομοίως με παραπάνω, αλλά επιστρέφει **true** και στην ισότητα. | | < |**μικρότερο από** Επιστρέφει **true** αν ο αριθμός στα αριστερά είναι μικρότερος το αριθμού στα δεξιά. | | %%<=%% |**μικρότερο ή ίσο από** Ομοίως με παραπάνω, αλλά επιστρέφει **true** και στην ισότητα. | public class ComparisonOperators { public static void main(String []args) { int a = 5; int b = 8; if(a>=5) { System.out.println("a >= 5"); } if(b<9) { System.out.println("b == 8"); } if(b==8) { System.out.println("b == 8"); } if(a!=6) { System.out.println("a != 6"); } } } ===== Λογικοί τελεστές ===== ^ τελεστής ^ περιγραφή ^ | ! | **τελεστής λογικής άρνησης**. Επιστρέφει **true** εάν η έκφραση της οποία προηγείται επιστρέφει **false**. | | && | **τελεστής λογικού ΚΑΙ (AND)** | | %%||%% | **τελεστής λογικού H (OR)** | | ?: | ternary operator (τριαδικός τελεστής). Ο τελεστής έχει την ίδια χρήση με τον αντίστοιχο τελεστή στη γλώσσα **C** | Αξίζει να προσέξετε τον **ternary operator** που αποτελεί σύντμηση μίας δήλωσης ''if-then-else''. Η κλάση ''ConditionalDemo2'' αποτελεί παράδειγμα χρήσης του συγκεκριμένου τελεστή. class LogicalOperatorsDemo { public static void main(String[] args){ int a = 1; int b = 2; int c = 3; if(a == 1 && b == 2) { System.out.println("a == 1 AND b == 2"); } if(a > 0 || b == 1) { System.out.println("a > 0 OR b == 1"); } if(!(a != 1) && !(b != 1)) { System.out.println("NOT(a != 1) AND NOT(b != 1)"); } if( a>0 && b>0 && c>0) { System.out.println("a > 0 AND b > 0 AND c > 0"); } if( a<0 || b<0 || c>0) { System.out.println("a > 0 OR b > 0 OR c > 0"); } } } class TernaryOperatorDemo { public static void main(String[] args){ int a = 1; int b = 2; int result; result = a >= 1 ? ++a : ++b; System.out.println("a: "+a+", b: "+b+", result: "+result); } } ===== Δυαδικοί τελεστές και τελεστές ολίσθησης ===== ^ τελεστής ^ επεξήγηση ^ | ~ | bitwise complement operator | | %%<<%% | **τελεστής ολίσθησης στα αριστερά** To LSbit γίνεται 1. | | %%>>%% | **τελεστής ολίσθησης στα δεξιά** Το νέο MSBit γίνεται όσο ήταν το MSBit πριν την ολίσθηση. | | %%>>>%% | **τελεστής ολίσθησης στα δεξιά** Το νέο MSBit λαμβάνει την τιμή μηδέν (0). | | & | δυαδικό AND | | %%|%% | δυαδικό OR | | %%^%% | δυαδικό αποκλειστικό OR (exclusive OR) | class BitOperatorsDemo { public static void main(String[] args) { int bitmask = 0x000F; int val = 0x4444; // prints 4 System.out.println("val & bitmask: " + (val & bitmask)); val = val & bitmask; // prints 16 System.out.println("val << 2: " + (val << 2)); // prints 2 System.out.println("val >> 1: " + (val >> 1)); // prints 24 System.out.println("(val << 2) | (val << 1): " + (val << 2 | (val << 1)) ); } } ===== Τελεστές Ανάθεσης ===== ^ τελεστής ^ επεξήγηση ^ παράδειγμα ^ | = | απλός τελεστής ανάθεσης | c=a; | | += | πρόσθεση και ανάθεση | c += a; -> c = c+a; | | -= | αφαίρεση και ανάθεση | c -= a; -> c = c-a; | | *= | πολλαπλασιασμός και ανάθεση | c *= a; -> c = c*a; | | /= | διαίρεση και ανάθεση | c/=a; -> c = c/a; | | %= | υπόλοιπο ακέραιας διαίρεσης (οι τελεστέοι πρέπει να είναι ακέραιοι) | c %= a; -> c = c%a;| | %%<<=%% | αριστερή ολίσθηση και ανάθεση | c %%<<%%= a; -> c = c%%<<%%a; | | %%>>=%% | δεξιά ολίσθηση και ανάθεση | c %%>>%%= a; -> c = c%%>>%%a; | | &= | δυαδικό AND και ανάθεση | c&=a; -> c=c&a;| | %%|%%= | δυαδικό OR και ανάθεση | c%%|%%=a; -> c=c%%|%%a;| | %%^%%= | δυαδικό XOR και ανάθεση | c %%^%%=a; -> c=c%%^%%a; | class AssignmentOperatorDemo { public static void main(String []args) { int a = 16; a += 16; System.out.println("a: "+a); a *= 2; System.out.println("a: "+a); a /= 4; System.out.println("a: "+a); a <<= 1; System.out.println("a: "+a); a >>= 2; System.out.println("a: "+a); a %= 7; System.out.println("a: "+a); } } | Προηγούμενο: [[:java:literals| Κυριολεκτικά ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:control_flow | Ροή προγράμματος ]] |