[JAVA] ch2: 수식과 연산자

oow·2026년 3월 17일

JAVA

목록 보기
3/13

수식과 연산자

수식은 연산자피연산자로 구성된다. 연산자의 종류로는 산술연산자, 논리연산자, 비트연산자가 있다. 산술연산자는 더하기, 빼기, 곱하기, 나누기, 나머지를 말한다. 나누기와 나머지의 경우, 0으로 나누면 에러가 발생하는 것이 일반적이지만 0.0으로 나눌 때는 Infinity 또는 NaN으로 처리되는 것이 특징이다.

연산자가 여러 개인 식에서는 우선순위를 따져야 하는데, 괄호가 최우선이기 때문에 보통 괄호를 사용한다.

  • 산술 연산자(/, %) 연습
  • scanner.close()는 작성하지 않아도 java가 자동으로 넣어주지만, 작성하면 좋다.

  • 산술 연산자(/, %) 사용 연습
  • 0으로 나누면 오류가 발생하므로 예외 처리한다.
  • 0.0으로 나누면 Infinity 또는 NaN으로 처리된다. -> isInfinite, isNaN으로 확인할 수 있다.



대입 연산과 증감 연산

대입 연산자는 =으로, 수학에서의 =과 달리 우변의 결과값을 좌변(변수)에 대입한다. 예를 들어, a = 1 + 3이면 변수 a에 4가 저장된다. a += ba = a + b와 같은 뜻으로, -=, *=, /= 등 간략하게 사용할 수 있다.

증감 연산자는 ++과 --를 말한다. a++은 전위 연산자로, 먼저 값을 증가시킨 후 사용한다. ++a는 후위 연산자로, 증가 전의 값을 사용한 후 값을 증가시킨다.

  • a = d++ -> a에 기존 d 값(3)을 먼저 저장한 후 d++(4)이 된다. -> a != d
  • a = ++d -> ++d(5)가 된 후 a에 d(5)를 저장한다. -> a == d



비교 연산, 논리 연산, 조건 연산

비교 연산은 두 피연산자를 비교한 결과 true 또는 false의 값을 가지는 연산으로, 부등호와 ==, !=가 있다. 논리 연산은 NOT(!), OR(||), AND(&&)가 있으며 마찬지로 true 또는 false를 결과로 가진다.

수학과의 차이점은 '=='가 '같다'를 나타낸다는 점과, 3 < x < 5처럼 항이 여러 개인 부등식은 오류가 난다는 점이다. 앞의 식은 (x > 3) && (x < 5)처럼 나누어 써야 한다.

조건 연산은 삼항 연산자를 말한다. condition ? opr2 : opr3과 같이 ?:을 사용해 쓰고, conditon이 true면 opr2를, false면 opr3을 결과로 가진다. if-else문과 비슷한 역할을 하며 주로 출력문 안에서 간략하게 사용한다.

  • 각 연산의 T/F 여부를 확인할 수 있다.
  • 'a' > 'b' -> 문자는 유니코드 값으로 비교한다. ('a'==97, 'b'==98)
  • 3.45 <= 2 -> 자료형이 다르면 큰 쪽으로 자동 변환된다. (int인 2가 double인 3.45에 맞춰 2.0으로 변환)



비트 연산

1byte는 8bit로 구성되는데, 이때 비트는 0과 1의 값을 갖는다. 하드웨어 신호를 처리할 때나 특정 비트 값을 꺼내야 할 때 비트 연산을 사용한다.

비트 논리 연산자로는 AND(&), OR(|), XOR(^), NOT(~)이 있는데, 논리 연산과 달리 연산자 기호가 1개이며, 비트 간 연산에 사용한다. 비트 시프트 연산은 피연산자의 비트를 이동시킨다. 예를 들어, a >> b는 a의 각 비트를 b만큼 오른쪽으로 옮긴다.

  • 메모리에는 모든 값이 이진수로 저장된다. 0x(16진수) 등은 보기 편하게 만든 것이다.
  • println은 모든 값을 10진수로 변환하여 출력한다.
  • d >>> 2 -> 자바는 시프트 연산 시 수를 32bit int로 변환한다.
    - d(-8) : 11111111 11111111 11111111 11111000
    - d>>>2 : 00111111 11111111 11111111 11111110 -> 10진수로 107..., 16진수로 3ff...

0개의 댓글