산술 연산자 | + - * / % << >> | 사칙 연산과 비트연산 |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! | 그리고(AND)와 또는(OR) 으로 조건을 연결 |
대입 연산자 | = ++ —- | 우변의 값을 좌변에 저장, 연산 복합 대입 |
기타 연산자 | (type) ? : instance of | 형변환 연산자, 삼항 연산자, instance of 연산자 |
사칙연산이라거나 비교같은 경우는 쉽다고 생각되어
아래는 각 연산자 별로 정리가 필요하다 느끼는 부분만 정리하겠다.
사칙연산 + 비트연산
연산 중 가장 빠른 연산 - 컴퓨터의 가장작은 단위로 연산을 하기에 다른 작업 없이 바로 행해지기 때문이다.
0,1은 2진수 값이기 때문에
<< 2의 배수로 곱셈연산되는 것과 동일
>> 2의 배수로 나눗셈 연산되는 것과 동일
//ex)
System.out.print(3 << 2); //3을 2²만큼 움직인것이므로 12값이 출력
System.out.print(4 >> 1); //4를 2만큼 나눈것과 같으므로 2값이 출력
크기비교 및 !=(not) 다름을 비교
//ex)
int a = 3;
int b = 4;
System.out.print(a != b); //a와 b는 다르므로 true값이 출력
&&(And), ||(Or), !(Not)
!은 위 비교연산자와 비슷하게 보이지만 논리연산자는 boolean값을 연결하는 연산자이다.
//ex)
int a = 3;
int b = 4;
System.out.print(!(a != b));
//a와 b는 다르므로 true값이 출력되지만 이것을 !으로 묶어 반대값인 False가 출력
= (기본 대입 연산자), +=, -= ... (복합 대입 연산자)
+= 1 은 ++과 같은 의미 (-= 또한 --과 같은 의미)
여기서 잠깐!
++과 --의 위치에 따라 기능이 달라진다는 사실!
int a = 10; int b = 10; //a++; 와 ++a;의 값은 결론적으론 같지만 int val = ++a + b--; //val에 대입하기전 a는 +1이 된 상태로 대입되고 // b는 val에 대입한 이후에 -1이 되기때문에 System.out.print(val); //val의 값은 21로 출력된다.위 예제처럼 증감연산자와 피연산자의 위치에 따라 연산 순서가 달라지니 주의!
이전 변수에서 형변환할때 사용한 캐스팅 방법을 형변환 연산자라고 한다.
//ex
int intNumber = 93 + (int) 98.8; //값은 93+98로 191이 된다.
3가지의 피연산자가 존재한다.
(조건) ? (true일때) : (False일때)
int a = 10;
int b = 9;
String c = (a==b) ? "같음" : "다름";
System.out.print(c); //"다름" 출력
피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참.거짓을 응답해주는 연산자
-> 아직 나도 이해가 안되지만 3주차에 배울 클래스관련 내용이여서 내일 듣는 강의에 있을 것 같다.
연산자 우선순위 : 산술 > 비교 > 논리 > 대입
기본은 위와 같으며, ()(괄호)로 감싸주면 괄호안 연산이 최우선으로 계산된다.
또한, 연산전엔 두 피연산자의 타입을 저장공간이 더 큰 타입으로 일치시킨다.
(어제 자동형변환했던 방식과 같은 것 같다.)