User Tools

Site Tools


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

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

LogicalOperatorsDemo.java
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");
    }
 
  }
}
TernaryOperatorDemo.java
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)
BitOperatorsDemo.java
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;
AssignmentOperators.java
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/operators.txt · Last modified: 2021/02/28 16:38 (external edit)