Оператори

Операторът е знак, който представлява действие, например + е аритметичен оператор, който представлява добавяне.

1) Основни аритметични оператори

Основни аритметични оператори са: + е за допълнение. е за изваждане. * е за умножение. / е за разделяне. % е за модуло деление. Забележка: Операторът % връща остатъка, например 10 % 5 би върнал 0

Пример за Аритметични оператори

public class ArithmeticOperatorDemo {
   public static void main(String[] args) {
      int num1 = 100;
      int num2 = 20;

      System.out.println("num1 + num2: " + (num1 + num2) );
      System.out.println("num1 - num2: " + (num1 - num2) );
      System.out.println("num1 * num2: " + (num1 * num2) ); 
      System.out.println("num1 / num2: " + (num1 / num2) );
      System.out.println("num1 % num2: " + (num1 % num2) );
   }
}

Изход:

num1 + num2: 120
num1 - num2: 80
num1 * num2: 2000
num1 / num2: 5
num1 % num2: 0

2) Оператори на присвояване

Оператори за присвояване =, +=, -=, *=, /=, %= num2 = num1 ще присвой стойноста на num1 на num2

num2+=num1 съответства на num2 = num2+num1

num2-=num1 съответства на num2 = num2-num1

num2*=num1 съответства на num2 = num2*num1

num2/=num1 съответства на num2 = num2/num1

num2%=num1 съответства на num2 = num2%num1

Пример:

public class AssignmentOperatorDemo {
   public static void main(String[] args) {
      int num1 = 10;
      int num2 = 20;

      num2 = num1;
      System.out.println("= Output: "+num2);

      num2 += num1;
      System.out.println("+= Output: "+num2);
	      
      num2 -= num1;
      System.out.println("-= Output: "+num2);
	      
      num2 *= num1;
      System.out.println("*= Output: "+num2);
	      
      num2 /= num1;
      System.out.println("/= Output: "+num2);
	      
      num2 %= num1;
      System.out.println("%= Output: "+num2);
   }
}

Output:

= Output: 10
+= Output: 20
-= Output: 10
*= Output: 100
/= Output: 10
%= Output: 0

3) Автоматично увеличаване или намаляване

num++ съответства на num=num+1;

num–- Съответства на num=num-1;

Пример:

public class AutoOperatorDemo {
   public static void main(String[] args){
      int num1=100;
      int num2=200;
      num1++;
      num2--;
      System.out.println("num1++ is: "+num1);
      System.out.println("num2-- is: "+num2);
   }
}

Изход:

num1++ is: 101
num2-- is: 199

4) Логически оператори

Логическите оператори се използват с двоични променливи. Те се използват главно в условни изрази и цикли за оценка на състояние.

Логическите оператори в java са: &&, ||,!

Да кажем, че имаме две булеви променливи b1 и b2.

b1 && b2 ще върне true, ако и b1 и b2 са верни, иначе ще върне false.

b1 || b2 ще върне false, ако и b1 и b2 са невярни, иначе ще върне истина.

! b1 ще върне обратното на b1, това означава, че би било вярно, ако b1 е невярно и би върнало невярно, ако b1 е вярно.

Пример за логически оператори

public class LogicalOperatorDemo {
   public static void main(String[] args) {
      boolean b1 = true;
      boolean b2 = false;

      System.out.println("b1 && b2: " + (b1&&b2));
      System.out.println("b1 || b2: " + (b1||b2));
      System.out.println("!(b1 && b2): " + !(b1&&b2));
   }
}

Изход:

b1 && b2: false
b1 || b2: true
!(b1 && b2): true

5) Оператори за сравнение

Имаме шест релационни оператора в Java: ==,! =,>, <,> =, <=

== връща true, ако лявата и дясната страна са равни

! = връща true, ако лявата страна не е равна на дясната страна на оператора.

>връща true, ако лявата страна е по -голяма от дясната.

< връща true, ако лявата страна е по -малка от дясната страна.

= връща true, ако лявата страна е по -голяма или равна на дясната страна.

<= връща true, ако лявата страна е по -малка или равна на дясната страна. Пример за релационни оператори

public class RelationalOperatorDemo {
   public static void main(String[] args) {
      int num1 = 10;
      int num2 = 50;
      if (num1==num2) {
	 System.out.println("num1 and num2 are equal");
      }
      else{
	 System.out.println("num1 and num2 are not equal");
      }

      if( num1 != num2 ){
	 System.out.println("num1 and num2 are not equal");
      }
      else{
	 System.out.println("num1 and num2 are equal");
      }

      if( num1 > num2 ){
	 System.out.println("num1 is greater than num2");
      }
      else{
	 System.out.println("num1 is not greater than num2");
      }

      if( num1 >= num2 ){
	 System.out.println("num1 is greater than or equal to num2");
      }
      else{
	 System.out.println("num1 is less than num2");
      }

      if( num1 < num2 ){
	 System.out.println("num1 is less than num2");
      }
      else{
	 System.out.println("num1 is not less than num2");
      }

      if( num1 <= num2){
	 System.out.println("num1 is less than or equal to num2");
      }
      else{
	 System.out.println("num1 is greater than num2");
      }
   }
}

Изход:

num1 and num2 are not equal
num1 and num2 are not equal
num1 is not greater than num2
num1 is less than num2
num1 is less than num2
num1 is less than or equal to num2

6) Битови Оператори

Има шест битови оператори: &, |, ^, ~, <<, >>

Да дефинираме две числа

int num1 = 11; /* равен на 00001011*/ int num2 = 22; /* равна на 00010110 */

Битовите оператор извършват битова обработка. num1 & num2 сравнява битовите съответи на num1 и num2 и генерира 1, ако и двата бита са равни, иначе връща 0. В нашия случай би се върнало: 2 което е 00000010, защото в двоичната форма на num1 и num2 само във втори бита има съвпадение.

num1 | num2 сравнява съответните битове num1 и num2 и генерира 1, ако или битът е 1, иначе връща 0. В нашия случай би върнало 31 което е 00011111

num1 ^ num2 сравнява съответните битове num1 и num2 и генерира 1, ако не са равни, иначе връща 0. В нашия пример би се получило 29 което е еквивалентно на 00011101

~num1 е оператор на преобразуване, който просто променя бита от 0 на 1 и 1 на 0. В нашия пример би се върнало -12 която е 11110100

num1 << 2 е ляв оператор на смяна, който премества битовете наляво, изхвърля най-левия бит и присвоява на най-десния бит стойност 0. В нашия случай продукцията е 44 което е еквивалентно на 00101100

num1 >> 2 е десен оператор на смяна, който премества битовете надясно, изхвърля най-десния бит и присвоява на най-левия бит стойност 0. В нашия случай продукцията е 2, която е еквивалентна на 00000010

Пример за оператори на Bitwise

public class BitwiseOperatorDemo {
  public static void main(String[] args) {

     int num1 = 11;  /* 11 = 00001011 */
     int num2 = 22;  /* 22 = 00010110 */
     int result = 0;

     result = num1 & num2;   
     System.out.println("num1 & num2: "+result);

     result = num1 | num2;   
     System.out.println("num1 | num2: "+result);
    
     result = num1 ^ num2;   
     System.out.println("num1 ^ num2: "+result);
    
     result = ~num1;   
     System.out.println("~num1: "+result);
    
     result = num1 << 2;   
     System.out.println("num1 << 2: "+result); result = num1 >> 2;   
     System.out.println("num1 >> 2: "+result);
  }
}

Изход:

num1 & num2: 2
num1 | num2: 31
num1 ^ num2: 29
~num1: -12
num1 << 2: 44 num1 >> 2: 2

7) Троен оператор

Този оператор оценява булев израз и присвоява стойността от резултата. Синтаксис:

<тип данни> <идентификатор> = (израз) ? стойност при истина : стойност при лъжа

Пример:

public class TernaryOperatorDemo {

   public static void main(String[] args) {
        int num1, num2;
        num1 = 25;
        /* num1 is not equal to 10 that's why
	 * the second value after colon is assigned
	 * to the variable num2
	 */
	num2 = (num1 == 10) ? 100: 200;
	System.out.println( "num2: "+num2);

	/* num1 is equal to 25 that's why
	 * the first value is assigned
	 * to the variable num2
	 */
	num2 = (num1 == 25) ? 100: 200;
	System.out.println( "num2: "+num2);
   }
}

Изход:

num2: 200
num2: 100

Last updated