저번에는 자바의 변수와 자료형에 대해 알아봤다. 오늘은 변수와 자료형을 이용하는 수식과 연산자에 대해 알아보자.
수식
프로그램에서 어떤 계산을 하려면 수식을 사용한다. 수식은 피연산자(operand)와 연산자(operator)로 이루어진다 연산자는 특정한 연산을 나타내는 기호를 의미한다. 피연산자는 연산의 대상이다. 3.14*radius*radius에서 radius와 3.14는 피연산자이고 *는 연산자이다.
연산자
자바에서는 다양한 연산자가 제공된다. 연산자들 사이에는 우선순위가 존재하는데 우선순위를 잘 확인하는 것이 좋다. 수식을 계산할 때에는 우선 순위가 높은 연산자가 먼저 실행되고, 하나의 수식안에 우선순위가 같은 연산자가 여러개 있다면 대부분 왼쪽에서 오른쪽으로 계산된다.
산술 연산
컴퓨터는 기본적으로계산을 하는 기계이다. 따라서 프로그램 안에서 산술 연산을 할 수 있다는 것은 아주 당연한 일이다.
나눗셈 연산자 /을 사용할 떄는 주의해야 한다. 피연샂ㄴ자가 모두 정수형이면 정수 나눗셈 연산을 한다. 예를 들어서 12/56는 2이다. 하지만 피연산자중 하나라도 부동소수점형이면 전체의 계산이 부동소수점형 나눗셈이 된다. 예를 들어 26/4는 6.5이다. % 연산자는 나머지 연산을 한다. 예를 들어서 28%3은 1이 된다. 28을 3으로 나누면 나머지가 1이 되기 떄문이다. 수식 x%y의 값이 0이면 y는 x의 약수가 된다.
증감 연산
증감 연산자는 ++기호나 --기호를 사용하여 변수의 값을 증가시키거나 감소시키는 연산자이다. 증감 연산자는 피 연산자의 앞이나 뒤에 올 수 있다. ++x 같이 적으면 x를 증가하고 증가된 값을 수식에 사용한다. x++와 같이 적으면 현재의 x의 값을 먼저 사용하고 나중에 증가하게 된다.
복합 대입 연산자
복합 대입 연산자란 +=처럼 대입연산자 =와 산술 연산자를 합쳐 놓은 연산자 이다. x += y 의 의미는 x = x + y 와 같다. 복합 대입 연산자는 소스를 간결하게 만들 수 있다.
관계 연산자.
관계 연산자는 두 개의 피연산자를 비교하는 데 사용된다. 예를 들면 "변수 x가 0과 같은가?", " 변수 y가 10보다 더 작은가?" 등 을 따지는데 사용된다. 관계 연산자의 결과는 true(참) 아니면 false(거짓)으로 계산된다.
논리 연산자
논리 연산자는 여러 개의 조건을 조합하여 참인지 거짓인지를 따질 때 사용한다. 예를 들어 "비가 오지 않고 휴일이면 농구를 한다." 라는 문장에는 "비가 오지 않는다." 라는 조건과 " 츄일이라면" 이라는 조건이 동시에 만족되면 농구를 한다는 의미가 포함되어 있다.
비트 연산자.
자바에서는 정수를 이루고 있는 각각의 비트를 가지고 작업할 수 있는 연산자가 제공된다. 예를들어 정수값에서 특정한 위치에 있는 비트를 마스트하여 추출 할 수 있다. ~ 연산자는 비트 패턴을 반전한다. 즉 ~ 연산자는 0은 1로. 1은 으로 만든다.
비트 이동 연산자
부호 이동 연산자인 << 연산자는 비트를 왼쪽으로 이동한다. >> 연산자는 반대로 비트를 오른쪽으로 이용한다. >>연산자는 부호 비트가 왼쪽에 채워진다. 이들은 2로 곱하거나 2로 나누는 효과를 낸다. 따라서 이들을 산술적인 비트 이동 연산이라고 부른다.
반면에 부호가 없는 이동 연산자인 >>>은 왼쪽 자리에 0을 채워 넣는다. 이것을 논리적인 비트 이동 연산이라고 부른다.
조건 연산자
조건 연산자는 유일하게 3개의 피연산자를 가지는 삼항 연산자이다.
max_ value = (x > y) ? x : y;
위의 식에서 조건( x>y)가 참이면 x 가 수식의 결과값이 된다. 따라서 x가 max_value로 대입된다. 조건(x>y)가 거짓이면 y가 수식의 결과값이 된다. 따라서 y가 max_value로 대입된다. 조건 연산자는 아주 간결하게 표현할 수 있어서 상당히 많이 활용된다.
'백엔드 개발자 기록 일람 > java 학습 기록' 카테고리의 다른 글
06. Java Switch 문과 반복문 (0) | 2023.12.28 |
---|---|
05. Java If- else 문 (1) | 2023.12.27 |
03. Java 변수와 자료형 (1) | 2023.12.20 |
02. Java 프로그램의 구성 요소 (0) | 2023.12.19 |
01. Java 가상기계 (0) | 2023.12.16 |