1. 연산자
- 연산자는 어떠한 기능을 수행하는 기호(+, -, *, / 등)로 피연산자와 함께 사용
* 피연산자 : 연산자의 작업 대상
- 연산자의 종류
* 단항 연산자 : +, - , ++, --, ~, !
* 증감연산자(++, --)
* 부호연산자(+, -), 논리 부정연산자(!)
* 부호연산자 : + 는 피연산자에 * 1, - 는 피연산자에 * -1
* 논리부정연산자( ! ) : true를 false로 false를 true로 변환
* 비트전환연산자( ~ )
* 2진수로 변환 후 0을 1로, 1을 0으로 변환 한다(보수형태)
* 타입변환연산자
* 이항 연산자(산술, 비교, 논리)
* (byte, char, short)의 연산 시 결과는 int로 바뀜
*시프트연산자 : <<, >>, >>>
* << : 이진수를 좌측으로 이동(좌측 이동 시, 빈 칸을 0으로 채운다.)
* >> : 이진수를 우측으로 이동(우측 이동 시, 빈 칸은 그 옆의 숫자를 따라감, 즉 부호가 바뀌지 않는다.)
* >>> : 이진수를 우측으로 이동(우측 이동 시, 빈 칸을 0으로 채운다. 즉 부호가 바뀔 수도 있음)
* 비교연산자 : >, <, <=, >=, ==, !=
* 비교연사자의 결과는 (true / false)로 반환됨 [제어문(조건 / 반복)에 주로 쓰임]
// 비교연산자
boolean res1 = 10 < 20;
System.out.println(res1);
System.out.println(10 >= 20);
System.out.println(10 == 10);
System.out.println(10 != 10);
// char 비교도 가능
System.out.println('A' < 'B');
System.out.println('A' == 65);
System.out.println(10.0d == 10.0f); // 2진수로 변환 후 비교
[true] //
[1000000001001000000000000000000000000000000000000000000000 00000]
System.out.println(0.1d == 0.1f); // 2진수로 변환 후 비교
[false]
//
[1111111011100110011001100110011001100110011001100110011001 1010]
//
[11111110111001100110011001100110100000000000000000000000000000000~]
* 비트연산자(&, |, ^)
// 비트연산자 & (and)
int m1 = 10, m2 = 9;
int m3 = m1 & m2;
System.out.println(m3); // 1010과 1001의 and 연산 결과는 1000
// 비트연산자 | (or)
int m3 = m1 | m2; // 1010과 1001의 or 연산 결과는 1011.
// 비트연산자 ^ (xor)
int m3 = m1 ^ m2; // 1010과 1001의 xor 연산 결과는 0011
* 논리연산자 : &&, | |, &, ^, |
* 삼항연산자 : ? :
* 간단한 조건식에 사용
* 대입연산자 : =, +=, -=, *=, /=, %=
* 오른쪽 피연산자의 값을 외쪽 피연산자에 저장한다. 단 왼쪽 피연산자는 상수가 아니어야한다.
- 연산자의 우선 순위
* 1.단항연산자 2.산술연산자 3.비교연산자 4.논리연산자 5.삼항연산자 6.대입연산자