ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 연산자(Operator)
    JAVA 2023. 3. 2. 19:40

    부호 연산자

    연산자 연산식 설명
    + +i 양수 부호(피연산자의 부호 유지)
    - -i 피연산자의 값을 음수로 변경
    • + 연산자는 잘 사용되지 않음
    • 부호를 변경하는 것도 연산에 해당되므로 정수 타입에서 - 연산자를 사용한 결과 값은 int 타입이 된다.

    산술 연산자

    연산자 연산식 설명
    + x + y 더하기
    - x - y 빼기
    * x * y 곱하기
    / x / y 나누기
    % x % y 피연산자를 나눈 나머지 연산
    • 정수와 문자열이 "+"로 결합되면 정수가 문자열로 변환된다.
    • 정수 나누기 정수는 결과도 정수이다. (나눈 몫만 결과로 저장되고, 소수점 이하는 버려진다.)

    • 산술 연산 시 정확한 결과를 얻기 위해서는 실수보다 정수 타입을 사용하는 것이 좋다.
      - 실수 타입을 부동 소수점 방식으로 표현하기 때문에 발생하는 문제
      예) 1 - 7*0.1 = 0.29999999999999993

    0 나누기와 NaN, Infinity 처리

    • 피연산자가 모두 정수 타입일 때 나누기(/), 나머지(%) 연산 시 분모가 0이면 무한대를 정수로 표현할 수 없기 때문에 예외(ArithmeticException)가 발생한다.

    • 실수 타입의 피연산자가 포함된 나누기(/), 나머지(%) 연산 시 분모가 0.0(f)이면 예외가 발생하지 않지만 결과가 Infinity(0.0으로 / 연산) 또는 NaN(0.0으로 % 연산)이 된다.
      - 이후 다른 연산을 수행해도 Intinity와 NaN은 그대로 유지되기 때문에 연산을 수행하는 의미가 없어진다.

    • 실수 나누기 연산의 결과가 Infinity인지 확인하려면 Double.isInfinite() 메소드를 사용하고, NaN인지 확인하려면 Double.isNaN() 메소드를 사용한다.
      - 매개변수의 값이 Infinity 또는 NaN 이면 true를, 아니면 false를 리턴하는 메소드.

    관계 연산자(비교 연산자)

     관계 연산자 : 피연산자의 동등 여부 및 값의 크기를 비교하는 연산자

     

    연산자 연산식 설명
    == x == y 피연산자의 값이 같은지 확인
    != x != y 피연산자의 값이 다른지 확인
    > x > y 좌측 피연산자의 값이 우측보다 큰지 확인
    >= x >= y 좌측 피연산자의 값이 우측보다 크거나 같은지 확인
    < x < y 좌측 피연산자의 값이 우측보다 작은지 확인
    <= x <= y 좌측 피연산자의 값이 우측보다 작거나 같은지 확인
    • 관계 연산자의 결과는 boolean 타입이다. (true/false)
    • 비교는 항상 왼편을 기준으로 비교한다.
    • 부등호는 왼쪽에 작성한다. (<=, >=)

    자료형이 다른 연산자 간 비교 연산

    • 피연산자의 자료형이 다를 경우 비교 연산 수행 전에 자료형일 일치시킨다.
      ex) char 타입의 'A'와 int 타입의 65를 == 연산자로 비교 시 'A'는 int 타입의 65로 변환되어 연산을 수행
      ex2) double 타입의 3.0과 int 타입의 3을 == 연산자로 비교 시 3은 double 타입의 3.0으로 변환되어 연산을 수행

    실수 자료형의 비교 연산

    • float 자료형과 double 자료형의 비교 연산 시 각 자료형의 정밀도 차이로 인해 예상과 다른 결과가 나올 수 있다.
      ex) 0.5f == 0.5 → false
      float 자료형과 double 자료형을 비교할 때는 double 자료형을 float로 강제 형변환한 후 연산을 수행하면 된다.

    문자열의 동등 비교

    • 문자열을 비교할 때는 == 연산자 대신 equals() 메소드를 사용해야 올바른 결과를 얻을 수 있다.
      - 문자열(String)은 참조 타입이기 때문에 == 또는 != 연산자를 사용하면 값이 저장된 주소에 대한 비교 연산을 수행한다.
    String str1 = "Hello";
    String str2 = "hello";
    boolean result = str1.equals(str2);    //false

     


    논리 연산자

     논리 연산자 : 연산의 대상 및 결과가 참과 거짓 둘 개의 값 중 하나를 취하는 연산

     

    •  AND, OR, NOT, XOR, NOT 등의 논리 연산을 수행
    • 두 개의 조건을 하나로 만들 때 사용

     

    연산자 연산식 설명
    & x & y 논리곱(AND) 연산 - 피연산자가 모두 true일 떄만 true
    && x && y
    | x | y 논리합(OR) 연산 - 피연산자 중 하나라도 true이면 true
    || x || y
    ^ x ^ y 배타적 논리합(XOR) 연산 - 피연산자의 논리값이 서로 다른 경우에만 true
    ! !x 논리 부정(NOT) 연산 - 피연산자의 논리값을 변경(true → false, false → true)

     

    ※ &(|) 연산자와 &&(||) 연산자의 차이

    • & 연산자는 양쪽 피연산자를 모두 확인한 다음 결과를 산출
    • && 연산자는 앞의 피연산자의 논리값이 true이면 뒤의 피연산자를 확인하지 않고 바로 true로 판단
      - 앞의 피연산자가 false이면 바로 false로 판단
      - | 와 || 연산자도 동일한 방식으로 동작한다.
      - &&(||) 연산자가 &(|) 연산자보다 효율적인 방식으로 동작한다.

     

    AND (둘 다 true일 때만 결과가 true)

    a b R
    T T T
    T F F
    F T F
    F F F

     

    OR (둘 중에 하나만 true여도 결과는 true)

    a b R
    T T T
    T F T
    F T T
    F F F

     

    XOR(두 값이 서로 다를 때만 true)

    a b R
    T T F
    T F T
    F T T
    F F F

    증감 연산자

    증감 연산자 : 값을 일정하게 증가하거나 감소시키는 연산자

     

    연산자 연산식 설명
    ++ ++i 연산을 수행하기 전에 피연산자의 값을 1 증가
    i++ 다른 연산을 수행한 다음에 피연산자의 값을 1 증가 
    -- --i 연산을 수행하기 전에 피연산자의 값을 1 감소
    i-- 다른 연산을 수행한 다음에 피연산자의 값을 1 감소

    대입 연산자

    연산자 연산식 설명
    = x = 1 우측 피연산자의 값을 좌측 피연산자(변수)에 저장
    • 좌측 피연산자에는 변수만 가능하고, 우측 피연산자는 변수와 리터럴 값, 연산식 모두 가능하다.

    복합 대입 연산자

    복합 대입 연산자 : 대입 연산자에 다른 연산자를 붙여서 연산 수행 결과를 바로 변수에 대입하는 연산자

     

    연산자 연산식 설명
    += x += 2 좌측 변수의 값에 우측 피연산자의 값을 더한 후 다시 변수에 저장
    -= x -= 2 좌측 변수의 값에서 우측 피연산자의 값을 뺀 후 다시 변수에 저장
    *= x *= 2 좌측 변수의 값과 우측 피연산자의 값을 곱한 후 다시 변수에 저장
    /= x /= 2 좌측 변수의 값을 우측 피연산자의 값으로 나눈 후 다시 변수에 저장
    %= x %= 2 좌측 변수의 값을 우측 피연산자의 값으로 나눈 나머지를 변수에 저장
    &= x &= y 좌측 변수의 값을 우측 피연산자의 값과 논리곱 연산 수행한 결과를 변수에 저장
    |= x |= y 좌측 변수의 값을 우측 피연산자의 값과 논리합 연산 수행한 결과를 변수에 저장
    ^= x ^= y 좌측 변수의 값을 우측 피연산자의 값과 배타적 논리합 연산 수행한 결과를 변수에 저장

    삼항(조건) 연산자

    •  (true/false로 반펼 가능한 조건식) ? (true일 때의 결과 값) : (false일 떄의 결과 값)
    • 첫 번째 항의 조건을 판별하여 true이면 두 번째 항을 결과로 취하고, false이면 세 번째 항을 결과로 취한다.
    • 엑셀의 IF() 함수의 사용법과 비슷하다.

    연산 우선순위

    우선순위 연산자 연산 방향
    1 증감(++, --), 부호(+, -), 비트(~), 논리(!)
    2 산술(*, /, %)
    3 산술(+, -)
    4 쉬프트(<<, >>, >>>)
    5 비교(<, >, <=, >=, instanceof)
    6 비교(==, !=)
    7 논리(&)
    8 논리(^)
    9 논리(|)
    10 논리(&&)
    11 논리(||)
    12 조건(?:)
    13 대입(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=)

    'JAVA' 카테고리의 다른 글

    배열(Array)  (0) 2023.03.02
    제어문  (0) 2023.03.02
    변수와 자료형  (0) 2023.03.02
    이클립스 다운로드  (0) 2023.03.02
    Java 설치  (0) 2023.03.02
Designed by Tistory.