상세 컨텐츠

본문 제목

JAVA 3. 연산자

Backend/JAVA-자바

by 사랑짱 2021. 5. 20. 09:13

본문


◆ 연산자

- 연산자란 연산에 사용되는 표시나 기호

- 연산자(operator) <-> 피연산자(operand)

x + y   // + : 연산자, x, y : 피연산자

 

 

  연산식 ( 표현식 Expressions )

- 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

- 아무리 복잡한 표현식이라도 반드시 하나의 값을 산출하며 결과 값은 변수에 저장하여 출력한다.

- 연산의 방향과 우선순위는 연산의 종류에 따라 다르며, ( ) 괄호를 통해 우선순위 표시할 수 있다!!

- 연산의 우선순위 : 단항 → 이항 → 삼항 / 산술 → 비교 → 논리 → 대입

- 연산식을 표현할 때는 피연산자를 같은 타입으로 맞춰야 한다.

연산자의 우선순위(출처 : 이것이 자바다)

 

※ 정수의 연산식의 결과는 int타입으로 자동형변환된다!!!(long 타입 제외)

   따라서, 되도록 정수의 연산식에서는 int 타입 사용을 권장한다.

※ 실수의 연산식 결과는 근사치를 내놓는다!(단정도/ 배정도 소수실수 타입이기 때문에)

   따라서, 정확한 실수연산 값을 계산하려면 정수연산으로 수행 시킨 후 실수로 변환해야 한다.

 

<참고>

- 정확히 정수 0으로 나누는 연산은 허용불가! -> 예외발생(분모가 0이 될 수 없는 것처럼)
- 실수 0.0으로 나누는 연산은 허용! -> BUT, 부작용(무한대) 발생 

 

누가봐도 직관적인 코드가 더 좋은 코드이다!
복잡한 표현식을 만들 때는 소괄호 ( )를 사용하여 연산의 우선순위를 표시하자!







1. 단항 연산자 :  피연산자가 1개

 

① 부호 연산자(+, -)

- 용도 : 양수/음수를 의미 혹은 피연산자의 부호 유지/변경

- 결과값은 변수에 저장 (boolean, char 타입 제외하고 사용 가능)

 

 

② 증감 연산자 (++, --)

- 용도 : 변수의 값을 1 증가/1 감소하는 연산자

- 다른 연산자와 함께 사용된다면 증감 연산자의 위치에 따라 결과값이 다름

 

<증감 연산자 위치에 따른 결과>

++a : 변수값 증가 후 연산 처리
a++ : 연산 처리 후 변수 1증가

 

※ 증감연산자는 대입연산자가 함께 있어야 한다. 대입연산자가 없다면 홀로 증감만 할 뿐이다.

 

 

③ 논리 부정 연산자( ! ) : boolean타입만 사용 가능

- 용도 : 조건식의 값을 부정하도록 하여 실행흐름 제어

- 피연산자가 true면 false, 피연산자가 false면 true


 

2. 이항 연산자 :  피연산자가 2개

 

① 산술 연산자(+, -, *, /, %)

- 용도 : 사칙연산에 사용

- 피연산자들의 타입이 동일하지 않는 경우 자동타입변환(묵시적 형변환)

 


② 문자열 결합 연산자(+) : concat( ) 함수와 동일한 역할

- 피연산자 중 한 쪽이 문자열이면 문자열로 변환/결합

- 연산되는 순서에 따라 결과값이 상이함

 

<예시>

"JDK" + 3 + 3.0 // JDK33.0
3 + 3.0 + "JDK" // 6.0JDK

 

※ 문자열 연결에 사용하는 + , concat( ) 함수는 문자열이 더해질 때마다

   객체를 생성하기 때문에 메모리 소모가 크다! (StringBuilder는 호출 시 한번만 생성!!)

 


③ 비교 연산자(<, >, <=, >=, ==, !=)

- 용도 : 조건문, 반복문에서 주로 이용하여 실행 흐름 제어

- 관계연산자라고 부르기도 함

- 문자열 비교에는 equals( ) 메소드 사용

 

 동등비교연산자는 모든 타입 사용가능, 크기비교연산자는 기본타입만 사용가능하다.

 


④ 논리 연산자(&&, ||, &, |, ^, !) : boolean타입만 사용 가능

- &&/& : 피연산자가 모두 ture일 경우 true

- ||/| : 피연산자가 모두 false인 경우 false

- ^ : true, false 하나씩인 경우만 true

- ! : 피연산자의 논리값을 바꿈

 

※ 부정연산자(!)는 Toggle(토글)이라고도 부른다. -> 스위치같은 역할

 


⑤ 대입 연산자(=, +=, -=, *=, /=, %=)

- 종류 : 단순 대입연산자(=), 복합 대입연산자(+=, -=, *=, /=, %=)

<대입연산자의 원리>

① x += 2;
② x = x+2; // ①, ② 은 동일한 연산

 

 

 

3. 삼항 연산자(조건 연산자) :  피연산자가 3개

- 앞의 조건식 결과에 따라 콜론 앞뒤의 피연산자를 선택하여 반환

 

<삼항연산자 형식>

 

※ 조건문 if문과 비슷한 용도로 사용되며 중첩 사용이 가능하다.

   삼항연산자의 중첩의 예시는 아래와 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class CondiitionalOperatorExample {
 
    
    // 삼항연산자 적용(중첩도 가능!) 
    public static void main(String[] args) {
        int score = 85;
        
        char grade =
            (score > 90) ?                                // 첫번째 삼항연산자
                    'A' :(
                            (score > 80) ? 'B' : 'C' // 두번째 삼항연산자
                         );
        
        System.out.println(score + "점은 " + grade + "등급입니다.");
                    
    }    //main
    
}    // End class
cs

 

 

관련글 더보기