java:operators

Τελεστές

Αριθμητικοί τελεστές

τελεστής περιγραφή
+ πρόσθεση (ορίζεται για πρόσθεση μεταξύ αριθμών, αλλά και για συνένωση δύο αλφαριθμητικών)
- αφαίρεση
* πολλαπλασιασμός
/ διαίρεση
% ακέραιο υπόλοιπο διαίρεσης

Το παρακάτω παράδειγμα από το 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)) );
    }
}
java/operators.txt · Last modified: 2017/02/14 14:57 by gthanos