English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 흐름 제어

Java 배열

Java 동적 객체(I)

Java 동적 객체(II)

Java 동적 객체(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력/출력(I/O)

Java Reader/Writer

Java 기타 주제

Java 연산자

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

  • 수학 연산자

  • 관계 연산자

  • 비트 연산자

  • 논리 연산자

  • 할당 연산자

  • 기타 연산자

수학 연산자

수학 표현式中 사용되는 수학 연산자는 수학에서의 역할과 같습니다. 모든 수학 연산자는 다음 표에 나와 있습니다.

표에서의 예제는 정수 변수 A의 값이10,변수B의 값은20:

                оператор                설명                예제
+덧 - 덧 연산자 양쪽의 값A + B는 30
-뺄 - 좌 연산자에서 우 연산자를 뺄 값A – B는 -10
*곱 - 곱 연산자 양쪽의 값A * B는200
/나누기 - 좌 연산자가 우 연산자로 나눈 값B / A는2
%나머지 - 좌 연산자가 우 연산자로 나눈 나머지B%A는 0입니다
++증가 연산자: 操作数的值增加1B++ 또는 ++B는 21차이점은 아래에 설명됩니다.
--감소 연산자: 操作数的值减少1B-- 또는 --B는 19차이점은 아래에 설명됩니다.

예제

아래의 간단한 예제 프로그램은 수학 연산자를 설명합니다. 아래의 Java 프로그램을 복사하여 ArithmeticOperator.java 파일로 저장하고, 컴파일하여 실행하세요:

class ArithmeticOperator {
    public static void 메인(String[] 인수) {
        
        double number1 = 12.5, 숫자2 = 3.5, result;
        
        //사용할 수 있는 더하기 연산자
        result = number1 + 숫자2;
        System.out.println("number1 + 숫자2 = "; + result);
        
        //사용할 수 있는 뺄 연산자
        result = number1 - 숫자2;
        System.out.println("number1 - 숫자2 = "; + result);
        
        //사용할 수 있는 곱 연산자
        result = number1 * 숫자2;
        System.out.println("number1 * 숫자2 = "; + result);
        //사용할 수 있는 나누기 연산자
        result = number1 / 숫자2;
        System.out.println("number1 / 숫자2 = "; + result);
        
        // 사용할 수 있는 나머지 연산자
        result = number1 % number2;
        System.out.println("number1 % number2 = "; + result);
    }
}

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

숫자1 + 숫자2 = 16.0
숫자1 - 숫자2 = 9.0
숫자1 * 숫자2 = 43.75
숫자1 / 숫자2 = 3.5714285714285716
숫자1 % number2 = 2.0

자增值 자감소 연산자

1、자增值(++)자감소(--)연산자이는 특별한 수학 연산자로, 수학 연산자는 연산을 수행하기 위해 두 연산자가 필요하지만, 자增值 자감소 연산자는 단일 연산자입니다.

public class selfAddMinus{
    public static void main(String[] args){
        int a = 3;//변수를 정의합니다;
        int b = ++a;//자增值 연산
        int c = 3;
        int d = --c;//자감소 연산
        System.out.println("자增值 연산 후의 값은"+b);
        System.out.println("자감소 연산 후의 값은"+d);
    }
}

실행 결과는:

자增值 연산 후의 값은4
자감소 연산 후의 값은2

해석:

  • int b = ++a; 연산 과정을 분할하여: a=a+1=4; b=a;4, 최종 결과는 b=4,a=4

  • int d = --c; 연산 과정을 분할하여: c=c-1=2; d=c;2, 최종 결과는 d=2,c=2

2、전위 자增值 자감소법(++a,--a): 표현식 연산을 먼저 수행한 후 자增值 또는 자감소 연산을 수행합니다.

3、후위 자增值 자감소법(a++,a--): 표현식 연산을 먼저 수행한 후 자增值 또는 자감소 연산을 수행합니다 예제:

public class selfAddMinus{
    public static void main(String[] args){
        int a = 5;//변수를 정의합니다;
        int b = 5;
        int x = 2*++a;
        int y = 2*b++;
        System.out.println("자增值 연산자 전위 연산 후 a="+a+",x="+x);
        System.out.println("자增值 연산자 후위 연산 후 b="+b+",y="+y);
    }
}

실행 결과는:

자增值 연산자 전위 연산 후 a=6,x=12자增值 연산자 후위 연산 후 b=6,y=10

관계 연산자

다음 표는 Java가 지원하는 관계 연산자입니다

표의 예제 정수 변수A의 값은10,변수B의 값은20:

연산자    설명    예제
    ==두 연산자의 값이 같은지 확인하고, 그렇다면 조건이 참입니다。(A == B)는 거짓입니다。
    !=두 연산자의 값이 같은지 확인하고, 값이 다르면 조건이 참입니다。 (A != B)는 참입니다。
    > 좌변수의 값이 우변수의 값보다 큰지 확인하고, 그렇다면 조건이 참입니다。(A > B)는 거짓입니다。
    <  좌변수의 값이 우변수의 값보다 작은지 확인하고, 그렇다면 조건이 참입니다。(A < B)는 참입니다。
    >=좌변수의 값이 우변수의 값보다 크거나 같은지 확인하고, 그렇다면 조건이 참입니다。(A >= B)는 거짓입니다。
    <=좌변수의 값이 우변수의 값보다 작거나 같은지 확인하고, 그렇다면 조건이 참입니다。(A <= B)는 참입니다。

예제

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

Test.java 파일 코드:

public class Test {
 
  public static void 메인(String[] 인수) {
     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

비트 연산자

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 1
~A= 11011

다음 표는 비트 연산자의 기본 연산을 나타냅니다. 정수 변수 A의 값은 60과 변수 B의 값은 13:

оператор설명예제
&비교 비트 모두1따라서 결과는1아니면 0입니다(A&B),를 얻습니다12즉 0000 1100
|비교 비트 모두 0이면 결과는 0이 되며, 아니면 1(A | B)를 얻습니다61즉 0011 1101
^비교 비트 값이 같으면 결과는 0이 되며, 다를 경우1(A ^ B)를 얻습니다49즉 0011 1
비트 반전 연산자는 연산자의 각 비트를 뒤집습니다. 즉 0이 되면1,10이 됩니다.(〜A)를 얻습니다-61즉1100 0011
<< 비트 왼쪽 이동 연산자. 왼쪽 연산자는 오른쪽 연산자로 지정된 비트 수만큼 비트를 왼쪽으로 이동합니다.A << 2得到240, 즉 1111 0000
>> 비트 오른쪽 이동 연산자. 왼쪽 연산자는 오른쪽 연산자로 지정된 비트 수만큼 비트를 오른쪽으로 이동합니다.A >> 2得到15즉 1111
>>> 비트 오른쪽 이동을 0으로 채우는 연산자. 왼쪽 연산자의 값은 오른쪽 연산자로 지정된 비트 수만큼 오른쪽으로 이동되며, 이동된 공간은 0으로 채워집니다.A>>>2得到15즉 0000 1111

예제

다음의 간단한 예제 프로그램은 비트 연산자를 설명합니다. 다음의 Java 프로그램을 복사하여 Test.java 파일로 저장하고, 컴파일하여 실행하세요:

public class Test {
  public static void 메인(String[] 인수) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */
     int c = 0;
            /* 12 = 0000 1100 */
     System.out.println("a & b = ", + c );
 
            /* 61 = 0011 1101 */
     System.out.println("a | b = ", + c );
 
     c = a ^ b;       /* 49 = 0011 1 */
     System.out.println("a ^ b = ", + c );
 
     c = ~a;          /*-61 = 11011 */
     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 >> 2  = 15
a >>> 2 = 15

논리 연산자

아래 표는 논리 연산자의 기본 연산을 나타내며, 부울 변수 A는 참이고, 변수 B는 거짓으로 가정합니다.

оператор설명예제
&&이 연산자는 논리 그리고 연산자로, 두 연산자 모두 true일 때 조건이 참입니다.(A && B)가 거짓입니다.
||이 연산자는 논리 이거나 연산자로, 두 연산자 중 하나라도 true일 때 조건이 참입니다.(A || || B)가 참입니다.
이 연산자는 논리 비 연산자로, 연산자의 논리 상태를 반전합니다. 조건이 true일 때 논리 비 연산자는 false를 반환합니다.!(A && B)가 참입니다.

예제

아래의 간단한 예제 프로그램은 논리 연산자를 설명합니다. 아래의 Java 프로그램을 복사하여 Test.java 파일로 저장한 후, 컴파일하고 실행하세요:

public class Test {
  public static void 메인(String[] 인수) {
     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

단축 논리 연산자

또한 논리 연산자를 사용할 때, 두 연산자 모두 true 일 때만 결과가 true입니다. 하지만 첫 번째 연산자가 false 일 때, 결과는 반드시 false이며, 이 경우 두 번째 연산자를 더 이상 검사하지 않습니다.

public class 로직{}}
    public static void main(String[] args){
        int a = 5;//변수를 정의합니다;
        boolean b = (a<4)&&(++<10);
        System.out.println("단축 논리 연산자의 결과는"+b);
        System.out.println("a의 결과는"+a);
    }
}

실행 결과는:

단축 논리 연산자의 결과가 false입니다
a의 결과는5

해석:이 프로그램은 단축 논리 연산자(&&)를 사용합니다. 먼저 a<4 의 결과가 false면, b의 결과는 반드시 false이므로 두 번째 연산 a를 더 이상 실행하지 않습니다++<10 의 조건, 따라서 a의 값은 5。

할당 연산자

아래는 Java 언어가 지원하는 할당 연산자들입니다:

оператор설명예제
=간단한 할당 연산자는 오른쪽 연산자의 값을 왼쪽 연산자에 할당합니다C = A + B는 A를 + B의 값이 C에 할당됨
+ =덧셈과 할당 연산자는 왼쪽 연산자와 오른쪽 연산자를 덧셈한 결과를 왼쪽 연산자에 할당합니다C + A와 동일합니다 + A
- =뺄셈과 할당 연산자는 왼쪽 연산자와 오른쪽 연산자를 뺄셈한 결과를 왼쪽 연산자에 할당합니다C - A와 동일합니다 - A
* =곱과 할당 연산자는 왼쪽 연산자와 오른쪽 연산자를 곱한 결과를 왼쪽 연산자에 할당합니다C * A와 동일합니다 * A
/ =나누기와 할당 연산자는 왼쪽 연산자와 오른쪽 연산자를 나눈 결과를 왼쪽 연산자에 할당합니다C / A와 동일한 타입이면 C = C와 동일합니다 / A
(%)=빼고 할당 연산자는 왼쪽 연산자와 오른쪽 연산자를 나눈 나머지를 왼쪽 연산자에 할당합니다C%= A는 C = C%A와 동일합니다
<< =왼쪽 이동 위치 할당 연산자C << = 2C = C << 2
>> =오른쪽 이동 위치 할당 연산자C >> = 2C = C >> 2
&=비트와 할당 연산자C&= 2C = C&2
^ =비트 배제 할당 연산자C ^ = 2C = C ^ 2
| =비트 또는 할당 연산자C | = 2C = C | 2

예제

아래의 간단한 예제 프로그램은 할당 연산자를 설명합니다. 아래의 Java 프로그램을 복사하고 붙여넣어 AssignmentOperator.java 파일로 저장한 후 컴파일하고 실행하세요:

class 할당연산자 {
    public static void 메인(String[] 인수) {
        
        int 숫자1, 숫자2;
        
        //을 할당합니다5숫자에 할당합니다1
        숫자1 = 5;
        System.out.println(number1);
                
        //변수 숫자를2의 값이 숫자에 할당됨1
        숫자2 = number1;
        System.out.println(number2);
    }
}

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

5
5

조건 연산자(?:)

조건 연산자는 또한 삼항 연산자라고도 합니다. 이 연산자는3개 연산자가 있으며, 부울 표현식의 값을 판단해야 합니다. 이 연산자의 주요 역할은 어떤 값이 변수에 할당되어야 하는지 결정하는 것입니다.

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

예제

public class Test {
   public static void main(String[] args){
      int a, b;
      a = 10;
      // 면 1 만약 a가 20이면, 그렇지 않으면 30
      b = (a == 1)? 20 : 30;
      System.out.println("b의 값은 : "); +  b);
 
      // 면 10 만약 a가 20이면, 그렇지 않으면 30
      b = (a == 10)? 20 : 30;
      System.out.println("b의 값은 : "); + b);
   }
}

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

b의 값은 : 30
b의 값은 : 20

instanceof 연산자

이 연산자는 객체 예제를 처리하고, 특정 타입(클래스 타입 또는 인터페이스 타입)인지 확인하는 데 사용됩니다.

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

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

연산자 왼쪽 변수가 오른쪽 클래스 또는 인터페이스(class/interface)의 대상이면 결과가 참입니다.

아래는 예제입니다:

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得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

в таблице, операторы с наивысшей приоритетностью указаны вверху, а с наименьшей приоритетностью - внизу.

категорияоператорассоциативность
постфикс() [] . (точечный оператор)왼쪽에서 오른쪽으로
униexpr++  expr--слева направо
уни++expr --expr + - ~ !오른쪽에서 왼쪽으로
множение * /%왼쪽에서 오른쪽으로
добавление + -왼쪽에서 오른쪽으로
сдвиг >>> >>>  << 왼쪽에서 오른쪽으로
отношение >  >=  <  <= 왼쪽에서 오른쪽으로
равенство ==  !=왼쪽에서 오른쪽으로
비트 논리적 AND&왼쪽에서 오른쪽으로
비트 논리적 XOR^왼쪽에서 오른쪽으로
비트 논리적 또는|왼쪽에서 오른쪽으로
논리적과&&왼쪽에서 오른쪽으로
논리적 또는||왼쪽에서 오른쪽으로
조건?:오른쪽에서 왼쪽으로
할당= + = - = * = / =%= >> = << =&= ^ = |=오른쪽에서 왼쪽으로
쉼표왼쪽에서 오른쪽으로