====== Τελεστές ======
===== Αριθμητικοί τελεστές =====
^ τελεστής ^ περιγραφή ^
| + | πρόσθεση (ορίζεται για πρόσθεση μεταξύ αριθμών, αλλά και για συνένωση δύο αλφαριθμητικών) |
| - | αφαίρεση |
| * | πολλαπλασιασμός |
| / | διαίρεση |
| % | ακέραιο υπόλοιπο διαίρεσης |
Το παρακάτω παράδειγμα από το 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 | Ροή προγράμματος ]] |