Java 스터디 일지/Do it! 자바 프로그래밍 입문

[Do it!] 자바 프로그래밍 입문 2일차 스터디 - 3장

자라나는지수새싹 2022. 8. 27. 15:16

3-1. 연산자

 

항 & 연산자

 

항 : 연산에 사용하는 값, 연산자 : 연산에 사용하는 기호

단항 연산자 : 항이 1개인 연산자 ( ex. ++num, num++)

이항 연산자 : 항이 2개인 연산자 (ex. first + second)

삼항 연산자 : 항이 3개인 연산자 (ex. (score > 70) ? "PASS" : "FAIL";)

연산자 우선순위 : 단항 연산자 > 이항 연산자 > 삼항 연산자

 

대입 연산자 : 변수에 값을 대입하는 연산자 (ex. int height = 180; / total = original + bonus;)

 

부호 연산자 : 앞에 +를 붙이면 양수, -를 붙이면 음수로 만듦

(하지만, 대입 연산자를 사용하지 않고, 그냥 출력 결과에만 +/-를 붙이면 변수 값 자체는 변경되지 않는다.)

 

산술 연산자 : 더하기, 빼기, 나누기, 곱하기, 나머지(%)

(연산자 우선순위 : 곱하기, 나누기, 나머지 > 더하기, 빼기)

 

증가, 감소 연산자 : ++ / -- (단항 연산자로, 연산자 앞이나 뒤에 사용하여 값을 1만큼 늘리거나 줄일 수 있다.)

int dog_age = 7; 

value = dog_age++; // value 값에 dog_age의 기존 값을 먼저 대입하고, dog_age값 1 증가로, value에는 7이 대입된다.

System.out.println(value); // 7이 출력된다.

System.out.println(dog_age); // 8이 출력된다.

 

int dog_age = 7;

value = --dog_age; // 먼저 dog_age 값이 1 감소하고, value 변수에 값이 대입되므로, value에는 6이 대입된다.

System.out.println(value); // 6이 출력된다.

System.out.println(dog_age); // 6이 출력된다.

 

관계 연산자 : <, <=, >, >=, ==, != (항이 2개인 연산자로, 두개의 항의 값을 비교하여, true, false의 결과값이 리턴된다.)

int bmi = 28; 

boolean isObesity = (bmi > 25);

System.out.println(isObesity); // true가 반환된다.

 

논리 연산자 : &&, ||, ! (논리 곱(모두 참), 논리 합(하나 이상 참), 부정(단항 연산자로, 참/거짓 교환))

논리 연산 실습 코드 - 단락 회로 평가 (Do it 자바 프로그래밍 입문 책 78쪽)

논리 연산의 경우, 논리 곱 연산(&&)의 경우, 앞의 항만이라도 거짓이면, 뒤의 항의 문장은 실행이 되지 않고, (9번 줄 참고)

논리 합 연산(||)의 경우, 앞의 항만이라도 참이면, 뒤의 항의 문장은 실행이 되지 않는다. (14번 줄 참고)

-> 결과값에서 12번 줄의 결과 i인 2가 그대로 출력, 17번 줄의 결과 i인 2가 그대로 출력되는 것 확인!)

 

복합 대입 연산자 : 대입 연산자와 다른 연산자를 조합하여, 하나의 연산자처럼 사용하는 연산자

my_age += 1; // my_age = my_age + 1과 같은 의미

 

조건 연산자 : 삼항 연산자로, 주어진 조건식이 참인 경우, 거짓인 경우에 각각 다른 결과 값이 나오는 연산자

boolean pass = (score >= 70) ? true : false; // score가 70점 이상이면 pass, 70점 미만이면 fail

 

3-2. 비트 연산자 : 비트 단위로 연산이 이루어지는 연산자

 

& 연산자 : 두 개의 비트 값이 모두 1이면 1, 하나라도 0이면 0 ( 0101 & 1011 -> 0001)

| 연산자 : 두 개의 비트 중 하나라도 1이면 1, 둘다 0이면 0 ( 0110 | 1001 -> 1111)

^ 연산자 : XOR 연산자로, 둘이 같은 값이면 0, 다른 값이면 1 (1001 ^ 0101 -> 1100)

~ 연산자 : 비트값을 0은 1로, 1은 0으로 바꿈 (~00001100 -> 11110011)

<< 연산자 : 왼쪽으로 비트를 이동 (00000110 << 3 -> 00110000)

>> 연산자 : 오른쪽으로 비트를 이동 (00001111 >> 2 -> 00000011, 뒤에 자리는 절삭됨.)

>>> 연산자 : >>와 동일하나, 왼쪽에 채워지는 비트 값을 부호 비트와 상관없이 무조건 0

 

3-3. 연산자 우선순위

 

단항 > 이항 > 삼항 연산자 순서

산술(+,-,*,/,%) > 관계(<,>,==,!=) > 논리(&&, ||) > 대입(+=, *=, =) 연산자 순서