자바 연산자


컴퓨터의 가장 기본적인 용도 중 하나는 수학 연산을 수행하는 것입니다. 컴퓨터 언어로서 Java는 변수를 조작할 수 있는 풍부한 연산자 세트도 제공합니다. 운영자를 다음 그룹으로 나눌 수 있습니다.

  •                 산술 연산자

  •               관계 연산자

  •                 비트 연산자

  •               논리 연산자

  •                 할당 연산자

  •               기타 연산자

산술 연산자

산술 연산자는 수학 표현식에 사용되며 수학에서와 동일한 방식으로 작동합니다. 다음 표에는 모든 산술 연산자가 나열되어 있습니다.

표의 예에서는 정수 변수 A의 값이 10이고 변수 B의 값이 20이라고 가정합니다.

과 같습니다.
                운영자                     설명                 예
                  +                 덧셈 - 덧셈 연산자의 양쪽 값                   A + B는 30
​​​​​​​ -                 빼기 - 왼쪽 피연산자 빼기 오른쪽 피연산자                 A – B는 -10
​​​​​​​과 같습니다. *                 곱셈 - 연산자 양쪽의 값을 곱합니다                 A * B는 200
​​​​​​​과 같습니다. /                     나눗셈 - 왼쪽 피연산자를 오른쪽 피연산자로 나눕니다                 B / A는 2
                %                 모듈로 - 오른쪽 피연산자로 나눈 왼쪽 피연산자의 나머지                   B%A는 0
                + +                 자동 증가 - 피연산자의 값이 1​​​​​​ 증가합니다. B++는 21
                --                 감소 - 피연산자의 값이 1                   B - -는 19
과 같습니다.

Example

아래의 간단한 예제 프로그램은 산술 연산자를 보여줍니다. 다음 Java 프로그램을 복사하여 붙여넣고 Test.java 파일로 저장한 후 프로그램을 컴파일하고 실행합니다.

public class Test {

  public static void main(String args[]) {
     int a = 10;
     int b = 20;
     int c = 25;
     int d = 25;
     System.out.println("a + b = " + (a + b) );
     System.out.println("a - b = " + (a - b) );
     System.out.println("a * b = " + (a * b) );
     System.out.println("b / a = " + (b / a) );
     System.out.println("b % a = " + (b % a) );
     System.out.println("c % a = " + (c % a) );
     System.out.println("a++   = " +  (a++) );
     System.out.println("a--   = " +  (a--) );
     // 查看  d++ 与 ++d 的不同
     System.out.println("d++   = " +  (d++) );
     System.out.println("++d   = " +  (++d) );
  }
}

위 예제 컴파일 및 실행 결과는 다음과 같습니다.

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++   = 10
a--   = 11
d++   = 25
++d   = 27

관계 연산자

다음 표는 Java 관계 연산자

에서 지원됩니다. 표의 인스턴스 정수 변수 A의 값은 10이고 변수 B의 값은 20입니다.

                운영자                     설명                 예
                  ==                   두 피연산자의 값이 같은지 확인하고, 그렇다면 조건이 true입니다.                 (A == B)는 거짓(참이 아님)입니다.
                !=                           두 피연산자의 값이 같은지 확인하고, 값이 같지 않으면 조건은 true입니다.                 (A != B)는 참입니다.
                >                 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 큰지 확인하고, 그렇다면 조건이 true가 됩니다.                 (A>B)는 사실이 아닙니다.
                <                 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작은지 확인하고, 그렇다면 조건이 true가 됩니다.                 (A<B)는 참입니다.
                > =                 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 true가 됩니다.                 (A> = B)는 거짓입니다.
                <=                 왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같은지 확인하고, 그렇다면 조건이 true가 됩니다.                 (A <= B)는 참입니다.

Example

아래의 간단한 예제 프로그램은 관계 연산자를 보여줍니다. 다음 Java 프로그램을 복사하여 붙여넣고 Test.java 파일로 저장한 후 프로그램을 컴파일하고 실행합니다.

public class Test {

  public static void main(String args[]) {
     int a = 10;
     int b = 20;
     System.out.println("a == b = " + (a == b) );
     System.out.println("a != b = " + (a != b) );
     System.out.println("a > b = " + (a > b) );
     System.out.println("a < b = " + (a < b) );
     System.out.println("b >= a = " + (b >= a) );
     System.out.println("b <= a = " + (b <= a) );
  }
}

위의 예제 컴파일 및 실행 결과는 다음과 같습니다.

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

Bit 연산자

Java는 비트 연산자를 정의합니다. , 정수형(int), 긴 정수(long), 짧은 정수(short), 문자형(char), 바이트형(byte) 등의 유형이 사용됩니다.

비트 연산자는 모든 비트에 대해 작동하며 비트 단위로 작동합니다. a = 60, b = 13이라고 가정하면 이진 형식 표현은 다음과 같습니다.

A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

다음 표에는 정수 변수 A의 값이 60이고 변수 B의 값이 13이라고 가정할 때 비트 연산자의 기본 연산이 나열되어 있습니다.

                운영자                   설명                 예
                  &                        비트 AND 연산자, 두 피연산자의 특정 비트가 0이 아닌 경우에만 결과는 1입니다.                 (A&B), 12를 얻습니다. 즉, 0000 1100
                      |                   비트 OR 연산자는 두 피연산자 중 특정 비트가 0이 아닌 한 결과는 1입니다.                 (A | B)는 61을 얻습니다. 즉, 0011 1101
                    ^                          비트별 XOR 연산자는 두 피연산자 중 특정 비트가 다른 경우 결과 비트가 1입니다.                 (A ^ B)는 49를 얻습니다. 즉, 0011 0001
                      ~                         비트 보수 연산자는 피연산자의 각 비트를 뒤집습니다.                 (~A) -61을 얻으세요. 즉 1100 0011
                    <<                 비트 왼쪽 시프트 연산자. 왼쪽 피연산자는 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동합니다.                 A << 2는 240을 얻습니다. 이는 1111 0000
                    >>                 비트 오른쪽 시프트 연산자. 왼쪽 피연산자는 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 비트 단위로 이동합니다.                 A >> 2는 15를 얻습니다. 즉 1111
                  >>>               비트 단위 오른쪽 시프트 제로 패딩 연산자. 왼쪽 피연산자의 값은 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동하고 결과 빈자리는 0으로 채워집니다.                 A>>>2는 15(0000 1111

Example

)를 얻습니다. 다음의 간단한 예제 프로그램은 비트 연산자를 보여줍니다. 다음 Java 프로그램을 복사하여 붙여넣고 Test.java 파일로 저장한 후 프로그램을 컴파일하고 실행합니다.

public class Test {
  public static void main(String args[]) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */
     int c = 0;
     c = a & b;       /* 12 = 0000 1100 */
     System.out.println("a & b = " + c );

     c = a | b;       /* 61 = 0011 1101 */
     System.out.println("a | b = " + c );

     c = a ^ b;       /* 49 = 0011 0001 */
     System.out.println("a ^ b = " + c );

     c = ~a;          /*-61 = 1100 0011 */
     System.out.println("~a = " + c );

     c = a << 2;     /* 240 = 1111 0000 */
     System.out.println("a << 2 = " + c );

     c = a >> 2;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 0000 1111 */
     System.out.println("a >>> 2 = " + c );
  }
}

위의 예제 컴파일 및 실행 결과는 다음과 같습니다.

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 15
a >>> 15

논리 연산자

다음 표는 다음과 같습니다. 논리 연산자 부울 변수 A가 true이고 변수 B가 false라고 가정하는 기본 연산

​​​​​​​​ 운영자                     설명                   예
                  &&                       논리 AND 연산자라고 합니다. 두 피연산자가 모두 참인 경우에만 조건이 참입니다.                 (A && B)는 거짓입니다.
                |                     논리 OR 연산자라고 합니다. 두 피연산자 중 하나라도 true이면 조건은 true입니다.                 (A | | B)는 사실입니다.
                !                 논리 NOT 연산자라고 합니다. 피연산자의 논리적 상태를 반전시키는 데 사용됩니다. 조건이 true이면 논리 NOT 연산자는 false가 됩니다.                 ! (A && B)는 참입니다.

Example

아래의 간단한 예제 프로그램은 논리 연산자를 보여줍니다. 다음 Java 프로그램을 복사하여 붙여넣고 Test.java 파일로 저장한 후 프로그램을 컴파일하고 실행합니다.

public class Test {
  public static void main(String args[]) {
     boolean a = true;
     boolean b = false;
     System.out.println("a && b = " + (a&&b));
     System.out.println("a || b = " + (a||b) );
     System.out.println("!(a && b) = " + !(a && b));
  }
}

위의 예제 컴파일 및 실행 결과는 다음과 같습니다.

a && b = false
a || b = true
!(a && b) = true

할당 연산자

다음은 다음과 같습니다. Java 언어에서 지원되는 할당 연산자 :

                왼쪽 피연산자와 오른쪽 피연산자를 곱하고 그 값을 왼쪽 피연산자에 할당하는 곱셈 및 할당 연산자                          왼쪽 피연산자와 오른쪽 피연산자를 나누고 왼쪽 피연산자에 값을 할당하는 나누기 및 대입 연산자                 왼쪽 및 오른쪽 피연산자를 모듈로화하고 왼쪽 피연산자에 값을 할당하는 모듈로 및 할당 연산자                 왼쪽 시프트 할당 연산자                 오른쪽 시프트 할당 연산자                   비트 AND 할당 연산자                                비트별 XOR 할당 연산자
                운영자                   설명                 예
                  =                 단순 할당 연산자, 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다                         C = A + B는 A + B에서 얻은 값을 C
                  + =                 왼쪽 피연산자와 오른쪽 피연산자를 더하고 왼쪽 피연산자에 값을 할당하는 덧셈 할당 연산자​​​​​​​​ C + = A는 C = C + A
                      - =                   왼쪽 피연산자와 오른쪽 피연산자를 빼고 그 값을 왼쪽 피연산자에 대입하는 빼기 및 할당 연산자​​​​​​​​ C - = A는 C = C -
와 동일합니다.ㅋㅋㅋㅋㅋㅋ * =
​​​​​​​​ C * = A는 C = C * A                       / =
​​​​​​​​ C / = A는 C = C / A                       (%)=
​​​​​​​​ C%= A는 C = C%A                       << =
                    C << = 2는 C = C <2                     >> =
                    C >> = 2는 C = C >2               &=
                    C&=2는 C=C&2                         ^ =
                  C^=2는 C=C^2과 동일합니다.
                | =                   비트 OR 할당 연산자                   C | = 2는 C = C 2

Example

아래의 간단한 예제 프로그램은 할당 연산자를 보여줍니다. 다음 Java 프로그램을 복사하여 붙여넣고 Test.java 파일로 저장한 후 프로그램을 컴파일하고 실행합니다.

public class Test {
  public static void main(String args[]) {
     int a = 10;
     int b = 20;
     int c = 0;
     c = a + b;
     System.out.println("c = a + b = " + c );
     c += a ;
     System.out.println("c += a  = " + c );
     c -= a ;
     System.out.println("c -= a = " + c );
     c *= a ;
     System.out.println("c *= a = " + c );
     a = 10;
     c = 15;
     c /= a ;
     System.out.println("c /= a = " + c );
     a = 10;
     c = 15;
     c %= a ;
     System.out.println("c %= a  = " + c );
     c <<= 2 ;
     System.out.println("c <<= 2 = " + c );
     c >>= 2 ;
     System.out.println("c >>= 2 = " + c );
     c >>= 2 ;
     System.out.println("c >>= a = " + c );
     c &= a ;
     System.out.println("c &= 2  = " + c );
     c ^= a ;
     System.out.println("c ^= a   = " + c );
     c |= a ;
     System.out.println("c |= a   = " + c );
  }
}

위 예제 컴파일 및 실행 결과는 다음과 같습니다.

c = a + b = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a  = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a  = 0
c ^= a   = 10
c |= a   = 10

조건 연산자(?:)

조건 연산자도 사용되며 삼항 연산자라고도 합니다. 이 연산자에는 세 개의 피연산자가 있으며 부울 표현식의 값을 평가해야 합니다. 이 연산자의 주요 목적은 변수에 할당할 값을 결정하는 것입니다.

variable x = (expression) ? value if true : value if false

Instance

public class Test {
   public static void main(String args[]){
      int a , b;   
      a = 10;    
b = (a == 1) ? 20: 30;    
System.out.println( "Value of b is : " +  b );
      b = (a == 10) ? 20: 30;    
     System.out.println( "Value of b is : " + b );
   }
}

위 예제의 컴파일 및 실행 결과는 다음과 같습니다.

Value of b is : 30
Value of b is : 20

instanceOf 연산자

이 연산자는 객체 인스턴스에 대해 연산을 수행하고 객체가 특정 유형(클래스 유형 또는 클래스 유형인지 여부)인지 확인하는 데 사용됩니다. 인터페이스 유형).

instanceof 연산자의 사용 형식은 다음과 같습니다.

( Object reference variable ) instanceOf  (class/interface type)

연산자 왼쪽의 변수가 가리키는 객체가 오른쪽의 클래스 또는 인터페이스(클래스/인터페이스)의 객체인 경우 연산자이면 결과는 true입니다.

예는 다음과 같습니다.

String name = 'James';
boolean result = name instanceOf String; // 由于name是String类型,所以返回真

비교된 개체가 오른쪽 유형과 호환되는 경우 이 연산자는 여전히 true를 반환합니다.

아래 예를 보세요.

class Vehicle {}

public class Car extends Vehicle {
   public static void main(String args[]){
      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result);
   }
}

위 예의 컴파일 및 실행 결과는 다음과 같습니다.

true

Java 연산자 우선 순위

한 표현식에 여러 연산자가 나타나면 누가 먼저 오나요? 여기에는 연산자 우선순위 문제가 포함됩니다. 다중 연산자 표현식에서는 연산자 우선순위가 다르면 최종 결과도 매우 달라집니다.

예를 들어 (1+3) + (3+2)*2와 같이 이 식을 우선순위가 가장 높은 더하기 기호에 따라 계산하면 답은 18이 되고, 곱셈 기호를 우선순위가 가장 높게 사용하면 , 답은 14이다.

또 다른 예, x = 7 + 3 * 2; 여기서 x는 20이 아닌 13을 얻습니다. 곱하기 연산자가 더하기 연산자보다 우선순위가 높기 때문에 3 * 2가 먼저 계산되어 6을 얻은 다음 7이 더해집니다. .

아래 표에서 우선순위가 가장 높은 연산자는 표 상단에 있고, 우선순위가 가장 낮은 연산자는 표 하단에 있습니다.

                쉼표
                카테고리                   운영자                   관련성
                  접미사                   () [] . (점 연산자)                 왼쪽에서 오른쪽으로
​​​​​​​ 1달러                   + + -!~                       오른쪽에서 왼쪽으로
                곱셈의 속성                 * /%                 왼쪽에서 오른쪽으로
                  가산성                 + -                 왼쪽에서 오른쪽으로
                  쉬프트                 >>>> <<                 왼쪽에서 오른쪽으로
​​​​​​​ 관계                 >> = << =                   왼쪽에서 오른쪽으로
​​​​​​​ 같음                 == != ​​​​              왼쪽에서 오른쪽으로
​​​​​​​ 비트 AND                 &                 왼쪽에서 오른쪽으로
​​​​​​​ 비트별 XOR                 ^                         왼쪽에서 오른쪽으로
                비트별 OR                 |                   왼쪽에서 오른쪽으로
​​​​​​​ 논리 AND                   &&                       왼쪽에서 오른쪽으로
​​​​​​​ 논리적 OR                   |                     왼쪽에서 오른쪽으로
​​​​​​​ 조건                 ? :                 오른쪽에서 왼쪽으로
                과제                   = + = - = * = / =%= >> = << =&= ^ = | 오른쪽에서 왼쪽으로
                  ,                 왼쪽에서 오른쪽으로