━━━━ ◇ ━━━━
Java/Java 공부

연산자 (operator)

CH05 변수, 연산자, 수식


03. 연산자


+ 연산자(operator)는 특정한 연산을 나타내는 기호

+ 피연산자(operand)는 연산의 대상

+ 예 ) a + b 


a, b - 피 연산자

+ - 연산자


★ 연산자

 

▲ 자바에서 지원하는 연산자, 출처: 교재 84쪽


+ 연산자들 사이에는 우선순위가 존재한다.

+ 위 스샷에서 위에 있을 수록 우선 순위가 높다.

+ 우선 순위가 높을 수록 연산시 먼저 실행된다.

+ 우선 순위가 같은 연산자는 대입 연산자를 제외하고 왼쪽에서 오른쪽으로 계산한다.

+ 대입 연산자는 오른쪽에서 왼쪽으로 계산한다.



04. 대입, 산술, 단항 연산자


★ 대입 연산자

+ 대입 연산자(=)는 왼쪽에 있는 변수에 오른쪽에 있는 수식의 값을 계산하여 대입한다.

+ 왼쪽은 반드시 변수이어야 한다.


★ 산술 연산자


 

▲ 산술 연산자의 종류, 교재 87쪽


 

▲ 산술 연산자를 이클립스로 돌려본 스크립트


+ 사칙연산은 비교적 익숙할것

+ 나누기(/)의 경우 소수점 이하는 버리고 몫만 나옴

+ 나머지(%)의 경우 몫은 버리고 나머지만 나옴


★ 단항 연산자


▲ 단항 연산자의 종류, 교재 88 쪽


+ 증감 연산자는 ++ 기호나 -- 기호를 사용하여 변수의 값을 증가시키거나 감소시키는 연산자

+ 증감 연산자가 피연산자의 앞에 붙냐 뒤에 붙냐에 따라 해석이 다름

+ 앞에 붙으면 전치수식 이라하여, 먼저 증감한 뒤에 변수를 사용함

+ 뒤에 붙으면 후치수식 이라하여, 먼저 변수를 사용하고 그 후에 증감을 실행함



+ 10번줄: 'n' 은 i 값이 먼저 대입 된 다음에 ++ 한다. 그래서 n = 1

+ 11번줄: 'i' 는 n을 계산하는 과정에서 ++ 되었다. 그래서 i = 2

+ 12번줄: 'j' 도 m을 계산하는 과정에서 ++ 되었다. 그래서 j = 2

+ 13번줄: 'm' 은 ++한 j 값이 대입되었다. 그래서 m = 2 


★ 복합 대입 연산자


 

▲복합 대입 연산자의 종류와 의미

  


+ 대입 연산자(=)와 산술 연산자를 합쳐 놓은 연산자

+ 소스를 간결하게 만들기 위해 사용
 

★ 관계 연산자


 

▲ 관계 연산자의 종류와 의미, 출처: 교재 89쪽

 


+ 두개의 피 연산자를 비교하기 위해 사용

+ 그 결과는 참(true)과 거짓(false)으로 나온다.


★ 논리 연산자

 

▲ 논리 연산자, 출처: 교재 90쪽

★ 삼항 연산자

+ 논리연산자의 확장판 같은 것

+ 첫번째 항의 연산결과가 참이면 두번째 항을, 거짓이면 세번째 항을 결과값으로 가진다.

+ 방법 : 조건식 ? 참 : 거짓

→ 세미콜론(;)이 아니라 콜론(:) 임을 주의해야 함.



05. 형변환


+ 형변환(cast)은 어떤 자료형의 값을 다른 자료형의 값으로 바꾸어 주는 연산

+ 방법

→ (새로운 자료형) 수식;


예) y = (double) x;

→ int형인 x를 위와 같이 double형으로 형변환하여 y에 대입할 수 있다.


★ 자동적인 형변환

+ 자바는 자동으로 형변환을 한다.

+ 수식에 서로 다른 자료형이 등장하면 그 중 가장 큰 타입으로 변환한다.


예) double d = 1 + 1.1;

→ 1은 정수지만 실수인 1.0으로 변환된 후에 1.1과 더해져 2.1이 된다.


★ 축소 변환(narrowing conversion)

+ 더 작은 크기의 타입으로 형변환

+ 정밀한 숫자나 큰 숫자를 나타내는 정보를 잃을 가능성이 있다.


예) int i = (int) 1.1;

→ 1.1은 실수지만 정수형으로 형변환 하였기 때문에 i 에는 1만 저장된다.


★ 확대 변환(widening conversion)

+ 더 큰 크기의 타입으로 형변환


예) double d = (double) 1;

→ 정수 1이 실수 1.0으로 형변환 되어 저장

→ 정수 10을 실수 3.0으로 나눈 결과 실수3.3333333333333 이 나옴



'Java > Java 공부' 카테고리의 다른 글

반복문  (0) 2016.07.18
조건문  (0) 2016.07.18
변수 (variable)  (0) 2016.07.18
Java Programming basic  (0) 2016.07.18
이클립스 (Eclipse) 설치  (1) 2016.07.18
COMMENT