User Tools

Site Tools


java:operators

This is an old revision of the document!


Τελεστές

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

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

Το παρακάτω παράδειγμα από το 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). Η διαφορά είναι ότι στην πρώτη περίπτωση επιστρέφεται η αρχική τιμή πριν από την αύξηση, ενώ στην δεύτερηη περίπτωση επιστρέφεται η νέα τιμή (μετά την αύξηση τις τιμής). Τρέξτε το παρακάτω παράδειγμα για να δείτε πως λειτουργεί ο τελεστής.

PrePostDemo.java
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 και στην ισότητα.
ComparisonOperators.java
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 αποτελεί παράδειγμα χρήσης του συγκεκριμένου τελεστή.

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);
    }
}

Δυαδικοί τελεστές και τελεστές ολίσθησης

τελεστής επεξήγηση
~ bitwise complement operator
<< τελεστής ολίσθησης στα αριστερά To LSbit γίνεται 1.
>> τελεστής ολίσθησης στα δεξιά Το νέο MSBit γίνεται όσο ήταν το MSBit πριν την ολίσθηση.
>>> τελεστής ολίσθησης στα δεξιά Το νέο MSBit λαμβάνει την τιμή μηδέν (0).
& δυαδικό 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)) );
    }
}

Τελεστές ανάθεσης

τελεστής επεξήγηση παράδειγμα
= απλός τελεστής ανάθεσης 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;
java/operators.1614527490.txt.gz · Last modified: 2021/02/28 15:51 by gthanos