3장 연산자입니다.

 

2장의 자료형은 좀 지루하죠.

 

그래도 자료형을 이해하는 것은 컴퓨터를 보는 시각에 있어서 전문가의 길로 들어서는 첫 단계입니다.

 

'컴퓨터는 뭐일까요?' 라는 단순한 질문에 대하여 완벽하게 답할 수 있는 사람은 많지 않을 겁니다.

 

혹자는 천재란 어려운 문제를 잘 푸는 사람이 아니라, 일상적이고 당연한 사물을 완벽하게 이해하는 사람이라고 합니다.

 

'태양은 왜 낮에만 뜨나요?', '물은 왜 얼면 얼음이 되요?'

 

    같은 질문들이죠. 컴퓨터와 프로그래밍에는 그런 질문이 많습니다. 대부분의 프로그래밍 입문서들이 최대한 쉽게 가르칠려고 노력은 합니다. 그럴려면 처음부터 어려운 용어를 쓰는 것은 지양해야 합니다. 너무 두꺼워도 안되죠. 하지만 아무리 쉽게 읽히도록 해도 생략이 안되는 것들이 많이 있죠. 자바의 자료형이나 연산자는 컴퓨터의 구조에 대하여 이해를 해야 넘어갈 수 있는 부분이라 그렇습니다.

 

파이썬이나 JS 같이 기본 자료형을 많이 신경쓰지 않아도 되는 언어에서는 생략되는 부분인데, 파이썬을 사용하더라도 실력을 높이기 위해서 당연히 알아야 되는 부분입니다. 여기서는 자바의 자료형을 가지고 연산할 때 쓰는 연산자들을 살펴 보겠습니다.

 

1. 대입 연산자 (assignment operator)

 

int studentNumber = 10; // 리터럴 10을 studentNumber에 대입한다

 

int sum = number1 + number2; // number1 과 number2를 더하여 sum에 대입한다

 

대입 연산자를 처음 보면 수학의 '같다' = 표시와 헷갈린다... 만 = 의 오른쪽 변수(또는 표현식)을 왼쪽의 변수에 대입한다. 우선순위가 제일 낮아서 보통 오른쪽의 표현식의 결과값이 나온 후 왼쪽의 변수에 대입된다. 위와 같이 대입하는 문장을 assignment statement 대입문이라 한다. = 는 오른쪽의 항(operand)과 왼쪽의 항(operand) 두개가 있는 이항 연산자이다.(두개니까 이항)

 

2. 부호 연산자 (sign)

 

부호 연산자는 항이 하나만 필요한 단항 연산자이다. 숫자 리터럴에 사용할 수 있고 변수에 사용이 가능하다.

 

int number1 = -10;

int negativeNumber1 = number1; //-10이 왼쪽 항에 대입

int positiveNumber2 = -negativeNumber1; //+10이 왼쪽 항에 대입

 

리터럴 10에 -를 붙여서 -10을 만든다는 당연한 것이지만 내부적으로 그렇게 작동한다. 오른쪽 항의 변수에 -를 붙이면 2의 보수를 만들어서 왼쪽 항에 대입된다. 주의할 점은 -연산자를 붙인 항의 값이 변하지는 않는다. 단지 10 이 있으면 -10을 붙여서 왼쪽에 대입 시킬 뿐이다. 자신의 값을 변하게 하기 위해서는 별도의 대입문을 사용한다.

 

number1 = -number1; //-10을 +10으로 바꾸어 자기 자신에게 저장한다

 

3. 산술 연산자(Arithmetic Operator)

 

그래도 수학에서 가장 친숙한 사칙연산을 하는 연산자가 산술연산자이다.

 

테코피디아의 상세한 정의를 참고하면 좋다. 서문에서 처럼 산술 연산처럼 당연한 사실들에 대하여 깊게 알아야 된다.(그래야 천재까지는 아니라도 머리 나쁘다는 소리 안듣는다)

 

https://www.techopedia.com/definition/25582/arithmetic-operator

 

What is Arithmetic Operator? - Definition from Techopedia

This definition explains the meaning of Arithmetic Operator and why it matters.

www.techopedia.com

산술연산자는 두개의 항을 연산하는 이항 연산자이며 자바에서는

 

덧셈 +

뺄셈 -

곱셈 *

나눗셈의 몫 /

나눗셈의 나머지 %

 

가 있다.

 

산술 연산자

산수와 비슷한데 / 연산자는 나눗셈의 몫만 취하고 나머지는 버린다. % 연산자로 나머지를 구할 수 있다. 산술 연산자는 우선순위가 있는데 일반 수학과 같다. 곱셈,나눗셈들이 먼저, 덧셈,뺄셈이 나중이다. 덧셈을 먼저 하고 싶으면 괄호를 쓰는 것도 같다.

 

a + b * c + d;  // b*c가 먼저 연산된다.

 

(a + b) * (c + d);  // a+b 와 c+d 계산 후 둘을 곱한다.

 

4. 증감 연산자 (increment and decrement operator)

 

증감연산자는 ++ 와 -- 로 단항 연산자이다. 약간의 트릭같은 규칙이 있다.

 

int inc1 = 10;

int dec1 = 10;

 

var1 = ++inc1;

var1 = inc1++;

 

// ++가 앞에 나온다. 그러면 var1 대입문 실행전에 inc1을 1만큼 증가시킨다. var1은 11 inc1은 11

 

// ++가 뒤에 나온다. 그러면 var1 대입문 실행후에 inc1을 1만큼 증가시킨다. var1은 10 inc1은 11

증감 연산자

var2 = --dec1;

var2 = dec1--;

 

* -- 도 마찬가지 규칙이다. 변수의 뒤에 사용되는 증감연산자의 경우 우선순위가 = 대입연산자 보다도 낮다.

 

5. 관계 연산자(relational operator)

관계연산자는 이항 연산자이다. 두 개 항의 크기와 같은지 다른지를 검사하고 결과로 참/거짓을 반환한다.(boolean형) 결과값이 true / false 이다.

 

>    왼쪽 항이 크면 true 아니면 false

<    왼쪽 항이 작으면 true 아니면 false

>=  왼쪽 항이 크거나 같으면  true 아니면 false

<=  왼쪽 항이 작거나 같으면  true 아니면 false

==  왼쪽 항과 오른쪽 항이 같으면 true 아니면 false

!=   왼쪽 항과 오른쪽 항이 다르면 true 아니면 false

 

주로 if 제어문의 조건식이나 반복문의 루프 카운트를 제어하는데 자주 사용된다.

 

<예>

 

if(KeyboardInput == ESC){

       exit();

}

// 키보드 esc 키를 누르면 프로그램을 종료한다

 

if(weight > 100){

      System.out.println("주의: 무게가 100키로를 초과했습니다");

}

// weight가 100을 초과하면 경고문을 출력한다

 

수학책의 그것들과 비슷해서 다 알겠지만 같다 표시는 자바에서 == 이고 다르다는 표시는 != 이다. C계열 언어를 배운 사람은 알겠지만 C언어도 비슷하다. 한번 잘 배워두면 여러 프로그래밍에서 두루 사용할 수 있다.

 

 

6. 논리 연산자(Logical Operator)

논리연산자는 boolean 자료형에서 설명한 AND OR NOT 논리게이트이다.

 

https://digiconfactory.tistory.com/27

 

자바 튜토리얼 (2-4) 자바의 변수 (불린형,논리형)

불린형(Boolean)이라는 자료형이 있다. 못들어본 사람도 있겠지만 1800년대 영국의 수학자 Boole의 이름을 따라서 만들어진 수학의 개념을 부울 대수 (Boolean Algebra)라고 함. 부울 대수는 0과1을 사용하

digiconfactory.tistory.com

AND는   && 논리곱

OR은       ||  논리합

NOT은    !   부정 

 

이다. AND는 둘다 참인 경우 참, OR은 둘다 거짓인 경우 거짓, NOT은 비트반전(부정)이다.

 

boolean var1 = (1<5) && (10<15);

// true

boolean var2 = (1<0)   ||  (5>3);

// true

boolean var3 = !(9>4); 

// true -> false

 

쓰다 보니 자바도 연산자가 꽤 많고 복잡하긴 합니다. 항상 모든 연산자를 쓰는 것은 아니니까 전체 한번 공부하고 기억이 가물가물할 땐 찾아보는 습관을 들이면 좋습니다.

 

* w3schools의 자바 연산자 페이지를 추천합니다. 프로그래밍을 하다가 궁굼하면 언제든지 참고할 수 있습니다.

 

https://www.w3schools.com/java/java_operators.asp

 

Java Operators

Java Operators Java Operators Operators are used to perform operations on variables and values. In the example below, we use the + operator to add together two values: Although the + operator is often used to add together two values, like in the example ab

www.w3schools.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band