Assignment Operator = 을 기준으로 해서
1.오른쪽에 있는 수식을 계산할때 왼쪽부터 오른쪽으로 계산
2.왼쪽부터 오르쪽으로 계산할 때 연산순위가 높은 연산자가 먼저 연산 수행
(* , / , %가 + , - 보다 연산순위가 높아 먼저 수행)
3.단 ()가 모든 연산자보다 우선순위가 가장높다.
public class ArithmeticOperatorEx {
public static void main(String[] args) {
int a1 = 10;
int a2 = 3;
int result;
double dresult;
result = a1 + a2;
System.out.println("result = " + result);
result = a1 - a2;
System.out.println("result = " + result);
result = a1 * a2;
System.out.println("result = " + result);
result = a1 / a2; // '/' = 몫을 가져옴
System.out.println("result = " + result);
result = a1 % a2; // '%' = 나머지를 가져옴
System.out.println("result = " + result);
// a2를 double 로 자동 형변환
dresult = a1 / (double)a2;
System.out.println("dresult = " +dresult);
}
}
- =
- += , -= , *= , /= , %=,... => C언어 부터 사용된 표현방식
public class AssignmentOperatorEx {
public static void main(String[] args) {
int n1 = 10;
System.out.println("n1 = " + n1);
// n1 = n1 + 10;
n1 += 10;
System.out.println("n1 = " + n1);
// n1 = n1 - 10;
n1 -= 10;
System.out.println("n1 = " + n1);
// n1 = n1 * 2;
n1 *= 10;
System.out.println("n1 = " + n1);
// n1 = n1 / 3;
n1 /= 10;
System.out.println("n1 = " + n1);
}
}
Logical Operator (논리연산자)
1. && == AND (논리곱)
2. || == OR (논리합)
3. ! == NOT (부정)
public class LogicalOperatorEx {
public static void main(String[] args) {
int a1 = 10;
int a2 = 20;
int a3 = 20;
int a4 = 0;
boolean result;
//a1이 a2보다 작고 a2와 a3가 같아야한다
result = (a1 < a2) && (a2 == a3);
System.out.println("result = " + result);
//a1이 a2보다 작거나 a2와 a3가 같아야한다
result = (a1 < a2) || (a2 == a3);
System.out.println("result = " + result);
//a1이 a2보다 크고 a2와 a3가 같아야한다
result = (a1 > a2) && (a2 == a3);
System.out.println("result = " + result);
//a1이 a2보다 크거나 a2와 a3가 같아야한다
result = (a1 > a2) || (a2 == a3);
System.out.println("result = " + result);
//부정
result = !(a1 > a2);
System.out.println("result = " + result);
}
}
해당 하는 연산에 참이면 true 거짓이면 false
1. ==
2. !=
3. > , >=
4. < , <=
public class RelationalOperatorEx {
public static void main(String[] args) {
int a1 = 5;
int a2 = 10;
int a3 = 5;
boolean bResult;
System.out.println("a1 == a2 = " + (a1 == a2));
System.out.println("a1 == a2 = " + (a1 == a3));
bResult = (a1 == a2);
System.out.println("bResult = " + bResult);
bResult = (a1 == a3);
System.out.println("bResult = " + bResult);
System.out.println("a1 != a2 = " + (a1 != a2));
System.out.println("a1 != a3 = " + (a1 != a3));
System.out.println("a1 > a2 = " + (a1 > a2));
System.out.println("a1 < a3 = " + (a1 < a3));
System.out.println("a1 >= a2 = " + (a1 >= a2));
System.out.println("a1 <= a3 = " + (a1 <= a3));
}
}
A ? B : C (연산자는 ?,: 2개이고 피연산자는 A,B,C 3개가 있다.
=> A가 참이면 B 거짓이면 C를 실행
public class TernaryOperatorEx {
public static void main(String[] args) {
int n1 = 5;
int n2 =10;
int max;
// if(n1 > n2) {
// max = n1;
// System.out.println(max);
// }else {
// max = n2;
// System.out.println(max);
// }
//위와 같은if문을 다음과 같이 간단하게 표현할수 있다.
max = (n1>n2) ? n1:n2;
System.out.println("max = " + max);
int result;
//삼항연산자를 다음과 같이 중첩하여 사용 가능하다.
result = (n1>n2) ? (n1 + n2) : (n1 - n2);
System.out.println("result = " + result);
}
}
- +,- = :피연산자 앞에 붙여 사용
operand(피연산자)가 2개인 경우 ex) 산술연산자
! 논리 부정 연산자 = Boolean type에만 사용가능
피연산자가 true면 false를 피연산자가 false면 true를 출력
비트 반전 연산자 : ~
byte, short, int, long 타입맊 피연산자가 될 수 있다.
비트값을 반젂(0 1, 1 0)시킨다.
public class UnaryOperatorEx {
public static void main(String[] args) {
int n1 = 20;
int result;
boolean b = false;
result = +n1;
System.out.println("result = " + result);
result = -n1;
System.out.println("result = " + result);
boolean b = true;
System.out.println(!b);//false를 출력
int num = 10;
int result = ~num;
System.out.println(num); //00001010 =>10
System.out.println(result); //11110101
//=> 2의 보수를 취해 -11이 된다
}
}
++,--
변수의 값을 1증가시키거나(++) 1감소(--) 시키는 연산자
증감연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리
public class UnaryOperatorEx {
public static void main(String[] args) {
int n1 = 10;
n1++:
System.out.println("n1 = " + n1);
n1--;
System.out.println("n1 = " + n1);
}
}
이번 강의에서는 듣고 그리 어려웠던 점은 없었다.
다만 비트 반전 연산자를 들을때 2의 보수를 다시 10진수로 바꾸는 과정을 조금 어려워 했었다.
분명 전공강의에서 들은 기억은 있는데 어려워해서 혼자 당황했던 기억이 있다.
이날 강의 이후 한번 들은 강의는 다시 한번 정리하자고 생각하는 작은 계기가 되었다