Τελεστές
Αριθμητικοί τελεστές
| τελεστής | περιγραφή |
| + | πρόσθεση (ορίζεται για πρόσθεση μεταξύ αριθμών, αλλά και για συνένωση δύο αλφαριθμητικών) |
| - | αφαίρεση |
| * | πολλαπλασιασμός |
| / | διαίρεση |
| % | ακέραιο υπόλοιπο διαίρεσης |
Το παρακάτω παράδειγμα από το site της Oracle χρησιμοποιεί τους παραπάνω τελεστές.
- ArithmeticDemo.java
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). Η διαφορά είναι ότι στην πρώτη περίπτωση επιστρέφεται η αρχική τιμή πριν από την αύξηση, ενώ στην 2η περίπτωση επιστρέφεται η νέα τιμή (μετά την αύξηση τις τιμής). Τρέξτε το παρακάτω παράδειγμα για να δείτε πως λειτουργεί ο τελεστής.
- PrePostDemo.java
class PrePostDemo {
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
System.out.println(++i);
// prints 6
System.out.println(i++);
// prints 7
System.out.println(i);
}
}
Τελεστές ελέγχου ισότητας, ανισότητας
| τελεστής | περιγραφή |
| == | έλεγχος ισότητας Επιστρέφει true αν οι τιμές στα αριστερά και δεξιά του τελεστή είναι ίσες |
| != | έλεγχος ανισότητας Επιστρέφει true αν οι τιμές στα αριστερά και δεξιά του τελεστή δεν είναι ίσες |
| > | μεγαλύτερο από Επιστρέφει true αν ο αριθμός στα αριστερά είναι μεγαλύτερος το αριθμού στα δεξιά. |
| >= | μεγαλύτερο από ή ίσο με Ομοίως με παραπάνω, αλλά επιστρέφει true και στην ισότητα. |
| < | μικρότερο από Επιστρέφει true αν ο αριθμός στα αριστερά είναι μικρότερος το αριθμού στα δεξιά. |
| <= | μικρότερο από ή ίσο με Ομοίως με παραπάνω, αλλά επιστρέφει true και στην ισότητα. |
Λογικοί τελεστές
| τελεστής | περιγραφή |
| ! | τελεστής λογικής άρνησης. Επιστρέφει true εάν η έκφραση της οποίας προηγείται επιστρέφει false. |
| && | τελεστής λογικού ΚΑΙ (AND) |
| || | τελεστής λογικού H (OR) |
| ?: | ternary operator (τριαδικός τελεστής). Ο τελεστής έχει την ίδια χρήση με τον αντίστοιχο τελεστή στη γλώσσα C |
Αξίζει να προσέξετε τον ternary operator που αποτελεί σύντμηση μίας δήλωσης if-then-else. Η κλάση ConditionalDemo2 αποτελεί παράδειγμα χρήσης του συγκεκριμένου τελεστή.
- ConditionalDemo1.java
class ConditionalDemo1 {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
if((value1 == 1) && (value2 == 2))
System.out.println("value1 is 1 AND value2 is 2");
if((value1 == 1) || (value2 == 1))
System.out.println("value1 is 1 OR value2 is 1");
}
}
- ConditionalDemo2.java
class ConditionalDemo2 {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
int result;
boolean someCondition = true;
result = someCondition ? value1 : value2;
System.out.println(result);
}
}
Τελεστής instanceof
Ο τελεστής instanceof συγκρίνει ένα αντικείμενο με ένα συγκεκριμένο τύπο δεδομένων (δηλαδή με μία κλάση). Με χρήση του τελεστή instanceof μπορούμε να εξετάσουμε εάν ένα αντικείμενο αποτελεί υλοποίηση μίας κλάσης ή υποκλάσης ή μιας κλάσης που υλοποιεί ένα συγκεκριμένο interface. Δοκιμάστε το παρακάτω παράδειγμα.
- MyInterface.java
public interface MyInterface {
}
- Parent.java
public class Parent {
}
- Child.java
public class Child extends Parent implements MyInterface {
}
- InstanceofDemo.java
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
Δυαδικοί τελεστές και τελεστές ολίσθησης
| τελεστής | επεξήγηση |
| ~ | bitwise complement operator |
| << | τελεστής ολίσθησης στα αριστερά To LSbit γίνεται 1. |
| >> | τελεστής ολίσθησης στα δεξιά Το νέο MSBit γίνεται όσο ήταν το MSBit πριν την ολίσθηση. |
| & | δυαδικό AND |
| | | δυαδικό OR |
| ^ | δυαδικό αποκλειστικό OR (exclusive OR) |
- BitDemo.java
class BitDemo {
public static void main(String[] args) {
int bitmask = 0x000F;
int val = 0x2222;
// prints "2"
System.out.println("val & bitmask: " + (val & bitmask));
System.out.println("bitmask << 2: " + (bitmask << 2));
System.out.println("bitmask >> 1: " + (bitmask >> 1));
System.out.println("bitmask || (bitmask << 8): " + (bitmask | (bitmask << 8)) );
}
}