Operator
산술 연산자
- + : 더하기
- - : 빼기
- * : 곱하기
- / : 나누기
- % : 나눈 후 나머지값
▷ int a = (10 % 4); // a = 2
복합 대입 연산자
- 산술 연산자와 대입 연산자(=)를 결합해서 사용할 수 있다.
- 반드시 산술 연산자 다음에 대입 연산자를 써야한다.
- 연산과 대입을 축약해서 나타냈을 뿐, 결과는 같다. ( a + 2 와 a += 2 는 동일하다)
- +=
- -=
- *=
- /=
증감 연산자
- ++ : 변수에 담긴 값을 1 증가 시켜주는 연산자
▷ n++; - -- : 변수에 담긴 값을 1 감소시켜주는 연산자
▷ n--; - 순서에 따른 처리
- (증감 연산자) 변수 : 전위연산, 변수에 증감을 먼저 하고 나머지 코드를 실행(처리)한다.
▷ int a = 1;
int b = (++a) + 2;
// ++a가 먼저 실행되어 a = 2가 되고 후에 b = a + 2가 실행된다. 따라서 값은 a = 2, b = 4 - 변수(증감 연산자) : 후위연산, 앞선 코드 먼저 실행(처리)하고 마지막에 변수에 증감한다.
▷ int a = 1;
int b = (a++) + 2;
// b = a + 2를 먼저 실행하고 a++이 실행된다. 따라서 값은 a = 2, b = 3
- (증감 연산자) 변수 : 전위연산, 변수에 증감을 먼저 하고 나머지 코드를 실행(처리)한다.
package b.operator;
import java.util.Scanner;
public class Operator {
public static void main(String[] args) {
// 산술 연산자
int a = (30 + 400); // a = 430
int b = (a - 30); // b = 400
int c = (a / b); // c = 1
int d = (a % b); // d = 30;
// 복합 대입 연산자
a += 20; // a = 450
b -= 50; // b = 350
c /= 4; // c = 0
d %= 12; // d = 6
// 증감 연산자
a = (c++) + d; // a = 0 + 6
b = a + (++c); // b = 6 + 2
c = (a--) + (--d); // c = 6 + 5
d = (b++) - (--a); // d = 8 - 4
// a = 4, b = 9, c = 11, d = 4
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
}
}
비교 연산자 / 관계 연산자
- 조건을 만족하면 true(참), 만족하지 않으면 false(거짓)을 반환한다.
즉, 결과는 논리값이다. - 대소 비교 연산
- < : 왼쪽의 값이 오른쪽의 값보다 작다(미만)
- > : 왼쪽의 값이 오른쪽의 값보다 크다(초과)
- <= : 왼쪽의 값이 오른쪽의 값보다 작거나 같다(이하)
- >= : 왼쪽의 값이 오른쪽의 값보다 크거나 같다(이상)
- 동등 비교 연산
- == : 왼쪽의 값과 오른쪽의 값은 같다(일치한다)
- != : 왼쪽의 값과 오른쪽의 값은 다르다(불일치한다)
논리 연산자
- 두 개의 논리값을 연산해주는 연산자.
- 논리연산한 결과도 논리값이 된다.
- &&
: 왼쪽, 오른쪽 두 논리값이 모두 true일 때만 결과가 true가 된다.
하나라도 false가 나오면 결과는 false이 되기에, 앞의 결과가 false일 경우 뒤의 조건은 실행하지 않는다.- true && true → true
- true && false → false
- false && true → false
- false && false → false
- ||
: 왼쪽, 오른쪽 두 값 중 하나라도 true라면 결가는 true가 된다.
앞의 결과가 true일 경우 뒤의 조건은 실행하지 않는다.- true || true → true
- true || false → true
- false || true → true
- false || false → false
논리 부정 연산자
- 논리값(true / false)을 반대로 바꾸는 연산자
- 결과도 논리값으로 나온다
- [표현식] !논리값
▷ boolean b1 = !true;
boolean b2 = !(2001 < 1988);
삼항 연산자
- [표현식] (조건식) ? (조건식이 참일 경우 결과값) : (조건식이 거짓일 경우 결과값)
- 조건식은 반드시 true 또는 false가 나오는 논리값이어야한다.
- 주로 비교, 논리 연산자를 통해서 작성한다.
▷ int n1 = (3 < 10) ? 10 : 20;
int n2 = (28 >= 24) ? 1976 : 1977;
→ n1은 false(거짓)이므로 20, n2는 true(참)이므로 1976이다.
package b.operator;
import.java.Scanner;
public class Operator {
public static void main(String[] args) {
// 비교 연산자
int a = 10;
int b = 3;
System.out.println("[ a = 10 , b = 3 ]");
System.out.println("a > b : " + (a > b));
System.out.println("a < b : " + (a < b));
System.out.println("a == b : " + (a == b));
System.out.println("a != b : " + (a != b));
System.out.println("a >= b : " + (a >= b));
System.out.println("a <= b : " + (a <= b) + "\n");
// 논리 연산자
boolean res1 = (a > 10) && (b <= 20);
boolean res2 = (a >= 10) && (b == 20);
boolean res3 = (a < 10) && (b >= 20);
boolean res4 = (a == 10) && (b < 20);
boolean res5 = (a > 10) || (b <= 20);
boolean res6 = (a >= 10) || (b == 20);
boolean res7 = (a < 10) || (b >= 20);
boolean res8 = (a == 10) || (b < 20);
System.out.println("(a > 10) && (b <= 20) : " + res1);
System.out.println("(a >= 10) && (b == 20) : " + res2);
System.out.println("(a < 10) && (b >= 20) : " + res3);
System.out.println("(a == 10) && (b < 20) : " + res4 + "\n");
System.out.println("(a > 10) || (b <= 20) : " + res5);
System.out.println("(a >= 10) || (b == 20) : " + res6);
System.out.println("(a < 10) || (b >= 20) : " + res7);
System.out.println("(a == 10) || (b < 20) : " + res8 + "\n");
// 논리 부정 연산자
boolean nb1 = !(a == b);
boolean nb2 = !((a != 20) || (b == 3));
boolean nb3 = !res1;
System.out.println("!(3 > 10) : " + !(3 > 10));
System.out.println("!(a == b) : " + nb1);
System.out.println("!((a != 20) || (b == 3) : " + nb2);
System.out.println("!res1 : " + nb3 + "\n");
// 삼항 연산자 < 시험 점수를 입력 받아 합격, 불합격 출력하기 >
Scanner sc = new Scanner(System.in);
System.out.print("시험 점수 입력 : ");
int score = sc.nextInt();
String result = (score >= 60) ? "합격입니다!" : "불합격입니다.";
System.out.println("결과 : " + result);
}
}
문자(char)와 숫자 간의 연산
- 문자의 아스키코드 값을 통해 연산이 가능하다.
- 명시적 변환으로 연산 결과값에 대응하는 문자로 변환이 가능하다.
▷ int i = ('A' + 23);
▷ char ch = (char)('A' + 32);
▷ boolean b1 = ( 'A' > 60);
▷ boolean b2 = ('A' == 65) && ('a' >= 30);
문자열(String) 비교
- String(문자열)은 참조변수(객체를 담는 변수)이기에 == 로 동등 비교가 불가능하므로, equals()를 이용해야한다.
- [표현법] (문자열).equals(비교값);
▷ str.equals("ABC"); 또는 str.equals(str2); - String(문자열)끼리만 비교가 가능하다.
- 결과는 일치하면 true(참), 일치하지 않으면 false(거짓)을 반환한다.
package b.operator;
public class Operator {
public static void main(String[] args) {
// 문자와 숫자 간의 연산
char ch = 'A';
int i = ('A' + 32);
boolean b = (char)i == 'a';
System.out.println("A + 32 = " + i);
System.out.println("A + 32를 아스키코드로 변환한 문자와 a는 같다 : " + b + "\n");
// 문자열 비교
String str1 = "ABC";
String str2 = "가나다";
String str3 = "abc";
System.out.println("[ str1 = ABC , str2 = 가나다 , str3 = abc ]");
System.out.println("str1과 str2는 같다 : " + (str1.equals(str2)));
System.out.println("str2와 str3은 다르다 : " + !(str2.equals(str3)));
System.out.println("str1과 str3은 같다 : " + (str1.equals(str3)));
System.out.println("str2와 \"가나다\"는 같다 : " + (str2.equals("가나다")));
}
}