연산자(Operator)
- 어떤한 기능을 수행하는 기호(+,-,*,/ 등)
피연산자(Operand)
- 연사자의 작업 대상(변수, 상수, 리터럴, 수식)
- 괄호의 우선순위가 제일 높다.
- 산술 > 비교 > 논리 > 대입
- 단항 > 이항 > 삼항
- 연산자의 연산 진행방향은 왼쪽에서 오른쪽
단, 단항, 대입 연산자만 오른쪽에서 왼쪽
주의사항
- <<, >>, >>>는 덧셈연산자보다 우선순위가 낮다.
x << 2 + 1 x << (2 + 1) // 둘은 같음
- ||, |(or)는 &&, &(and)보다 우선순위가 낮다.
x < -1 || x > 3 && x < 5 x <-1 || (x > 3 && x < 5) // 둘은 같음
증가연산자(++)
: 피연산자의 값을 1 증가시킨다
감소연산자
: 피연산자의 값을 1 감소시킨다.
주석으로 설명..
package ch03;
public class S01 {
public static void main(String[] args) {
int num = 10;
// 증감 연산자
// 앞에 있으면 계산이 다 끝난 다음에
// 값이 대입된다.
System.out.println(++num);//11
System.out.println(num);//11
int num1 = 20;
// 증감 연산자가 뒤에 있으면
// 대입이 된 이후에 계산이 시작된다.
System.out.println(num1++);//20
System.out.println(num1);//21
int num2 = 30;
int num3 = num2++;
System.out.println(num3);//30
}
}
부호연산자(+, -)
: '+'는 피연산자에 1을 곱하고 '-'는 피연산자에 -1을 곱한다.
논리부정연산자(!)
: true는 false, false는 true로 피연산가 boolean일 때만 사용가능
주석으로 설명..
package ch03;
public class S02 {
public static void main(String[] args) {
int num = 10;
System.out.println(-num);//-10
int num1 = -20;
System.out.println(-num1);//20
boolean check = false;
System.out.println(!check);//true
}
}
- 정수를 2진수로 표현했을 때, 1을 0으로 0은 1로 바꾼다.
- 정수형에만 가능
int보다 크기가 작은 타입은 int로 변환한다.
(byte, char, short -> int)
피연산자 중 표현범위가 큰 타입으로 형변환한다.
- 나누기한 나머지를 반화
- 홀수, 짝수 등 배수검사에 주로 사용
- 기본형(boolean 제외)과 참조형에 사용할 수 있으나 참조형에는 ==와 !=만 사용가능
- 반드시 boolean이여야 하며 연산결과도 boolean이다.
- &&가 ||보다 우선순위가 높다.
OR연산자(||)
: 어느 한쪽이 true이면 true
AND연산자(&&)
: 양 쪽 모두 true이면 true
(조건식) ? 식1 : 식2
주석으로 설명..
package ch03;
public class S04 {
public static void main(String[] args) {
System.out.println(3 > 2);//true
boolean check = 100 >= 100;
boolean check1 = true && true;
System.out.println(check1); //true
boolean check2 = true && false;
System.out.println(check2); //false
boolean check3 = false && false;
System.out.println(check3); //false
boolean check4 = true || false;
System.out.println(check4); //true
// 계산을 6번
boolean check5 = true && true && true && true && true && false;
// 계산을 1번
// 로직을 짤 때 and 조건을 걸 때에는 false가 자주나오는 조건을 앞에 건다.
boolean check6 = false && true && true && true && true && true;
System.out.println(check5);//false
System.out.println(check6);//false
// 계산을 4번
boolean check7 = false || false || false || true;
// 계산을 1번
// 로직을 짤 때 or 조건을 걸 때에는 true가 자주 나오는 조건을 앞에 건다.
boolean check8 = true || false || false || false;
System.out.println(check7);//true
System.out.println(check8);//true
}
}
주석으로 설명..
package ch03;
public class S05 {
public static void main(String[] args) {
// 논리형 ? 사실이면 : 거짓이면
int age = 70;
String man = age > 65 ? "할아버지" : "아저씨";
System.out.println(man); //할아버지
// 삼항 연산자를 겹쳐서 사용하는 경우는 적다
String man1 = age > 65 ? "할아버지" : age > 20 ? "아저씨" : "학생";
System.out.println(man1);//할아버지
}
}