수강 날짜: 2021-07-30(3일차)
강의명 : 01. 대입, 부호, 산술, 복합대입, 증감연산자
강의명 : 02. 관계, 논리, 조건, 비트 연산자-1
강의명 : 03. 관계, 논리, 조건, 비티 연산자-2
항(operand):연산에 사용되는 값
연산자(operator): 항을 이용하여 연산하는 기호
항에 개수와 연산자
int age = 20;
왼쪽 변수의 값이 오른쪽에 대입
->우선 순위가 가장 낮은 연ㅅ나자
단항 연산자
변수의 부호를 유지 하거나(+) 바꿈(-)
실제 변수의 값이 변하려면 대입연산자를 사용해야 함
코드
public class OperatorEx1 {
public static void main(String[] args) {
int num1 = -10;
int num2 = 20;
System.out.println(+num1);
System.out.println(+num2);
System.out.println(-num1);
System.out.println(-num2);
System.out.println(num1);
System.out.println(num2);
num1 = -num1;
System.out.println(num1);
}
}
다음과 같이 변수의 부호를 직접 바꾸기 위해서는 대입 연산자를 사용해줘야 한다. -, +의 경우 불러온 값을 변환시켜줄 뿐 값을 직접적으로 바꾸는게 아니다
'+', '-', '*', '/', '%' 연산자
public class OperatorEx1 {
public static void main(String[] args) {
int num = 5%3; //5를 3으로 나눈 나머지는 2이다.
System.out.println(num);
}
}
public class OperatorEx2 {
public static void main(String[] args) {
int num1 = 10;
num1 += 2;
System.out.println(num1);
}
}
단항 연산자
변수의 값을 1 더하거나 뺄 때 사용
연산자가 항의 앞에 있는가 뒤에 있는가에 따라 그 결과가 달라짐
변수의 앞에 있는지 뒤에 있는지가 중요하다.
전위 연산자 / 후위 연산자
public class OperatorEx3 {
public static void main(String[] args) {
int score = 100;
System.out.println(++score);
System.out.println(score++);
System.out.println(score);
System.out.println(--score);
System.out.println(score--);
System.out.println(score);
}
}
결과가 언제 저장하는지가 중요하다
연산의 결과가 true/false로 반환 됨
비교 연산자 라고도 함
'>','<', '>=', '<=', '==', '!='
관계 연산자와 함께 많이 사용됨
연산의 결과가 true/false로 반환 됨
'&&'(논리 곱), '||'(논리 합), '!'(부정)
단락 회로 평가
논리 곱은 두 항이 모두 true일 때만 결과 true
: 앞의 항이 fals이면 뒤 항의 결과를 평가하지 않아도 false임
논리 합은 두 항이 모두 false일 때만 결과가 false
: 앞의 항의 true이면 뒤 항의 결과를 평가하지 않아도 true임
실제 프로그램에서 예상하지 않는 결과가 발생할 수 있으므로 유의
public class OperatorEx3 {
public static void main(String[] args) {
int num1 = 10;
int i = 2;
boolean value = ( (num1 = num1 + 10) < 10 ) && ( (i = i+2) < 10);
System.out.println(num1);
System.out.println(i);
System.out.println(value);
value = ( (num1 = num1 + 10) < 10 ) || ( (i = i+2) < 10);
System.out.println(num1);
System.out.println(i);
System.out.println(value);
}
}
단락 회로 평가때문에 뒤의 연산이 되는지 안되는지가 발생할 수 있다.
앞의 조건이 false이기 때문에 논리 값에서는 뒤의 결과를 보지 않는다.
삼항 연산자
조건식? 결과1 : 결과2
간단한 조건문 대신 사용할 수 있는 연산자
public class OperatorEx3 {
public static void main(String[] args) {
int num2 = 10;
int num3 = 20;
int max = (num2> num3) ? num2 : num3;
System.out.println(max);
}
}
더 큰 수를 대입하는 삼항 연산자
자주 사용되지는 않는다.
속도가 빠르다.
대입연산자와 다른 연산자가 함께 쓰임
마스크:특정 비트를 가리고 몇 개의 비트 값만 사용할 때
비트켜기: 특정 비트들만을 1로 설정해서 사용하고 싶을 때
비트끄기: 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
비트 토글: 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
연산자 우선순위