연산자와 피연산자 구별하기
9 * x + 3
연산자 : 연산을 수행하는 기호 -> * , +
피연산자 : 연산자의 연산 수행 대상 -> 9 , x , 3
"모든 연산자는 연산결과를 반환한다."
연산자 종류

연산자의 우선순위
하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행 할지를 자동 결정하는 것.
= > 5 + 3 4
1. 3 4
2. 5 + 12
연산 순서를 수동으로 결정하고 싶다면 괄호() 를 사용하면 된다.
= > (5 + 3) 4
1. 5 + 3
2. 8 4
연산자의 결합규칙
우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저하는가?
= > 3 + 4 - 5 -> (3 + 4) - 5
기본적인 계산 순서는 왼쪽에서 오른쪽
대입과 단항 연산자일 경우 오른쪽에서 왼쪽
증감 연산자
증가 연산자(++) : 피연산자의 값을 1 증가 시킨다.
감소 연산자(--) : 피연산자의 값을 1 감소 시킨다.
증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이는 없다.
- ++k; k++; = > 값 동일
부호 연산자
'-' 는 피연산자의 부호를 반대로 변경합니다.
'+' 는 아무런 일도 하지 않습니다.(실제 사용X)
형변환 연산자
형변환이란?
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 의미한다.
- (타입)피연산자

자동 형변환
float f = 1234; => int 타입의 값을 float타입의 변수에 저장.
- 상대적으로 int 타입이 float 타입 보다 크기가 작기 때문에 가능하다.
float f = (float)1234; => 사실 변수와 리터럴의 타입을 일치 시켜줘야 한다.- 우리가 보는 코드에는 형변환이 생략되어 있었다. 즉, 컴파일러에 의해 자동으로 형변환된 것이다.
int i = 3.14f;
- 이렇게 큰 타입을 작은 타입에 저장할 때 Error 가 발생한다.
- 3.14f 가 int 타입으로 변환될 때 소수점이 사라지면서 원래 값이 달라진다.
- 즉, 값 손실이 발생하는데 이런 경우, 컴파일러가 자동으로 형변환을 안 해준다.
int i = (int)3.14f; => 이렇게 직접 수동으로 형변환을 시켜줘야 한다.
"기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다."
- 형변환을 하는 이유는 주로 서로 다른 두 타입을 일치시키기 위해서인데, 형변환을 생략 하려면 컴파일러가 알아서 자동으로 형변환을 해야한다.
- 따라서 표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없음으로 두 타입 중에서 표현 범위가 더 넓은 쪽으로 형변환된다.
사칙 연산자
덧셈(+) 뺄셈(-) 곱셈(*) 나눗셈(/)
산술변환
연산 전에 피연산자의 타입을 일치시키는 것을 의미한다.
1. 두 피연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
- long + int -> long + long => long
- float + int -> float + float => float
- double + float -> double + double => double
- 피연산자의 타입이 int 보다 작은 타입 이면 int 로 변환된다.
- byte + short -> int + int => int
- char + short -> int + int => int
- 이는 int 보다 작은 타입이 계산을 통해 쉽게 범위가 넘어갈 수 있기 때문에 오버플로우가 발생해
정확한 계산값을 가져오지 못할 수 있어서 미리 큰 범위인 int 타입으로 변환시킨 후 계산하는 것이다.
Math
- round() : 실수를 소수점 첫 째자리에서 반올림한 정수를 반환한다.
- ceil() : 올림값을 double 형으로 반환한다.
- floor() : 내림값을 double 형으로 반환한다.
- abs() : int, double 기본형 모두 사용 가능하며 절대값을 얻는다.
나머지 연산자 %
비교 연산자

문자열의 비교
문자열 비교에는 == 대신 equals()를 사용해야 한다.
- equals : 비교하고자 하는 두 피연산자의 값 자체를 비교한다.
- == : 비교하고자 하는 두 피연산자의 주소값을 비교한다.
논리 연산자

비트 연산자

<2진수의 음수표현>
진수의 음수를 표현하는 방식에는 부호 절대값, 1의 보수, 2의 보수가 있다.
- 8비트 기준으로 설명
부호 절대값
0일때는 양수 , 1일때는 음수
- 2진수 00000011 = 10진수: 3
- 2진수 10000011 = 10진수: -3
1의 보수
11111111 - 00101001 = 11010110
즉, 1이면 0, 0이면 1이 된다.
-13을 1의 보수 방식으로 표현해 보겠다.
1. 13을 2진수로 표현 : 00001101
2. 11111111 - x 공식에 대입
3. 결과 : 11110010
2의 보수
-13을 2의 보수 방식으로 표현해 보겠다.
1. 13을 2진수로 표현 : 00001101
2. 100000000 - x 공식에 대입
3. 결과 : 11110011
-9를 2의 보수 방식으로 표현해 보겠다.
1. -9를 1의 보수 방식으로 표현 : 00001001(9) -> 11110110
2. 11110110 + 1
3. 결과 : 11110111
조건 연산자
삼항 연산자 : 조건식 ? 반환값1 : 반환값2
- 조건식의 결과에 따라 연산결과를 달리할 수 있다.
대입 연산자
