연산자

  • : 해당 연산을 위해 필요한 값이나 변수.
  • 피연산자 : 연산자가 연산을 수행하는 대상. 피연산자는 '인수(argument)'라고 불리기도 한다.
    ex) 5 * 2 => 왼쪽 피연산자 : 5, 오른쪽 피연산자 : 2
  • 단항(unary) 연산자 : 피연산자를 하나만 받는 연산자.
    대표적인 예 : - 연산자 ( x = -x )
  • 이항(binary) 연산자 : 두 개의 피연산자를 받는 연산자

산술 연산자

+, -, *, / (사칙연산) + %, ++, --

산술 연산자의 동작은 우리가 알고 있는 일반적인 수학 연산과 거의 동일하다.
연산은 왼쪽에서부터 오른쪽으로 진행한다.

👉🏻 + , - , * , / : 수학 연산과 거의 동일

  • +연산자 =>값을 더하는 데 자주 사용되지만 변수와 값, 또는 변수와 다른 변수를 더하는 데에도 쓸 수 있다.
    ex) int sum1 = 100 + 50;
    int sum2 = sum1 + 10; //160 (150 + 10)
    int sum3 = sum1 + sum2; // 310 (150 + 160)

👉🏻 % : 나머지 연산자 (Modulus)
(왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환)
👉🏻++ / --: 증감연산자

  • 1씩 값을 증가(Increment) / 감소(Decrement)시킨다.
  • ++x / --x: 먼저 피연산자의 값을 1 증가 / 감소시킨 후에 해당 연산을 진행한다.
  • x++ / x-- : 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 증가 / 감소시킨다.

cf)

  • (In Javascript)
    ** : 거듭제곱 연산자
    ex) alert (2 ** 3); // 8 (2를 3번 곱한 것)
  • 자바에서는 거듭제곱 연산자는 따로 없고 java.lang.Math클래스의 pow()를 사용하면 된다.
  • Math.pow()
    pow : power를 의미, power는 거듭제곱의 의미.
    pow() 인자로 a와 b를 전달하여, a의 b제곱이 리턴된다.
    = a를 b번 곱한 값이 리턴.
    ex) double result = Math.pow(3.2, 3);
    = 3.2 x 3.2 x 3.2
    int로 형변환 시
    int result = (int) Math.pow(3.2, 3);


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

두 값을 비교하는 데 사용.

비교 반환값 : true, false ( boolean 값 )

cf)
문자열(String) 비교 시 ==equals() 의 차이

  • ==
    primitive type => 값을 비교. (int, boolean,,,)
    	primitive type도 Constant Pool에 있는 특정 상수를 참조하는 것이기 때문에 결국 주소값을 비교하는 것으로 볼 수 있다.
    	같은 상수를 참조하면 주소값이 같으니 결국 같은 값이면 동일하다고 판단할 수 있는 것이다.
    reference type => 주소값을 비교.
  • equals() : 내용 자체, 즉 데이터 값을 비교

=== ?
just 컴퓨터 언어에서의 규칙!

  • = : 할당 연산자, 대입 연산자
    우측의 값을 좌측으로 넣는 것, 변수에 값을 대입하는 것.
    즉, apple = "사과"; => apple에 "사과"라는 문자열 데이터를 넣는다.
  • == : 산술연산자
    같은 지 비교.
    ex) apple == "사과"; => apple 은 "사과"와 같다.

논리 연산자

주어진 논리식을 판단하여, 'true', 'false'를 결정하는 연산자.

AND 연산과 OR 연산은 두 개의 피연산자를 가지는 이항 연산자, 연산 방향은 왼쪽에서 오른쪽이다.
NOT 연산자는 피연산자가 단 하나 뿐인 단항 연산자이며, 연산 방향은 오른쪽에서 왼쪽입니다.

  • && : 논리식이 모두 true이면 true 를 반환 (AND 연산)
  • || : 논리식 중에 하나라도 true이면 true 를 반환(OR 연산)
  • ! : 논리식의 결과가 참이면 거짓을, 거짓이면 참을 변환함 (NOT 연산)

cf)
비트 연산자

  • | : 한 쪽이라도 1이 존재한다면 1이 된다.
    ex) " 0001 | 0100 == 0101 "
  • & : 두 비트 모두가 1인 경우에만 1이 된다.
    ex) " 0011 & 0010 == 0010 "

삼항 연산자

유일하게 세 개의 항으로 만들어진 연산자

구조

👉🏻 조건식 ? 반환값1 : 반환값2
=> 조건식이 true일 경우 반환값1의 값을 반환, false일 경우 반환값2의 값을 반환.

ex)

int a = 10 , int b= 20 //일 때,
a > b ? a : b ; 
//조건식이 ``false`` 이므로 b 반환

cf)
삼항 연산자의 중첩

(조건A)?(조건B)?(반환값A):(반환값B):(반환값C)

  • 우선, (조건A) 가 true인지 false 인지 판단.
  • false이면 (반환값C) 반환.
  • (조건A)가 true일 경우, (조건B)가 true 인지false 인지 판단하여 반환.
    true 일 경우 : 반환값 A
    false 일 경우 : 반환값 B

연산자 우선 순위

  • 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 갖는다.
  • 단항과 대입 연산자를 제외한 모든 연산 방향은 왼쪽에서 오른쪽이다.
  • 복잡한 연산식에는 ()괄호를 사용해서 우선순위를 정해준다.

cf)
https://www.w3schools.com/java/java_operators.asp
논리 연산자
http://www.tcpschool.com/java/java_operator_logic

image source)
https://www.w3schools.com/java/java_operators.asp
https://kephilab.tistory.com/28

profile
례코드

0개의 댓글