1. 단항 연산자
증감연산자는 피연산자에 저장된 값을 1 증가 또는 감소시킨다. 증감연산자의 피연산자로 정수와 실수가 모두 가능하지만, 상수는 값을 변경할 수 없으므로 가능하지 않다.
증가 연산자(++) : 피연산자의 값을 1 증가시킨다.
감소 연산자(--) : 피연산자의 값을 1 감소시킨다.
일반적으로 단항 연산자는 피연산자의 왼쪽에 위치하지만, 증가 연산자 '++'와 감소 연산자 '--'는 양쪽 모두 가능하다. 피연산자의 왼쪽에 위치하면 '전위형(prefix)', 오른쪽에 위치하면 '후위형(postfix)'이라고 한다.
타입 | 설명 | 사용예 |
전위형 | 값이 참조되기 전에 증가시킨다. | j = ++i; |
후위형 | 값이 참조된 후에 증가시킨다. | j = i++; |
public class OperatorEx1 {
public static void main(String[] args) {
int i = 5;
i++;
System.out.println(i);
i = 5;
++i;
System.out.println(i);
}
}
2. 산술 연산자
2.1 사칙 연산자 + - * /
피연산자가 정수형인 경우, 나누는 수로 0을 사용할 수 없다. 만일 0으로 나눈다면, 실행 시에 에러가 발생할 것이다.
public class OperatorEx5 {
public static void main(String[] args) {
int a = 10;
int b = 4;
System.out.printf("%d + %d = %d\n", a, b, a + b);
System.out.printf("%d - %d = %d\n", a, b, a - b);
System.out.printf("%d * %d = %d\n", a, b, a * b);
System.out.printf("%d / %d = %d\n", a, b, a / b);
System.out.printf("%d / %f = %f\n", a, (float)b, (float)a / b);
// 두 정수를 입력 받아 사칙연산 결과를 출력하시오.
Scanner sc = new Scanner(System.in);
System.out.println("두 정수를 입력해주세요.");
System.out.print("첫번째 수를 입력하세요. > ");
a = Integer.parseInt(sc.nextLine());
System.out.print("두번째 수를 입력하세요. > ");
b = Integer.parseInt(sc.nextLine());
System.out.printf("%d + %d = %d\n", a, b, a + b);
System.out.printf("%d - %d = %d\n", a, b, a - b);
System.out.printf("%d * %d = %d\n", a, b, a * b);
System.out.printf("%d / %d = %d\n", a, b, a / b);
System.out.printf("%d / %f = %f\n", a, (float)b, (float)a / b);
}
}
2.2 나머지 연산자
나머지 연산자는 왼쪽의 피연산자를 오른쪽 피연산자로 나누고 난 나머지 값을 결과로 반환하는 연산자이다. 그리고 나눗셈에서처럼 나누는 수(오른쪽 피연산자)로 0을 사용할 수 없다는 점에 주의하자. 나머지 연산자는 주로 짝수, 홀수 또는 배수 검사 등에 주로 사용된다.
public class OperatorEx19 {
public static void main(String[] args) {
int x = 10;
int y = 8;
System.out.printf("%d을 %d로 나누면, \n", x, y);
System.out.printf("몫은 %d이고, 나머지는 %d입니다. \n", x/y, x%y);
}
}
3. 비교 연산자
비교 연산자는 두 피연산자를 비교하는 데 사용되는 연산자다. 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 오직 true와 false 둘 중의 하나이다.
비교 연산자 역시 이항 연산자이므로 비교하는 피연산자의 타입이 서로 다를 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환하여 피연산자의 타입을 일치시킨 후에 비교한다는 점에 주의하자.
대소비교 연산자 < > <= >=
비교연산자 | 연산결과 |
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면, true 아니면 false |
>= | 좌변 값이 크거나 같으면, true 아니면 false |
<= | 좌변 값이 작거나 같으면, true 아니면 false |
등가비교 연산자 == !=
비교연산자 | 연산결과 |
== | 두 값이 같으면, true 아니면 false |
!= | 두 값이 다르면, true 아니면 false |
public class Operation22 {
public static void main(String[] args) {
float f = 0.1f;
double d = 0.1;
double d2 = (double)f;
System.out.printf("10.0==10.0f %b\n", 10.0 == 10.0f);
System.out.printf("0.1==0.1f %b\n", 10.0 == 10.0f);
System.out.printf("f = %19.17f\n", f);
System.out.printf("d = %19.17f\n", d);
System.out.printf("d2 = %19.17f\n", d2);
System.out.printf("d==f %b\n", d==f);
System.out.printf("d==d2 %b\n", d==d2);
System.out.printf("d2==f %b\n", d2==f);
System.out.printf("(float)d==f %b\n", (float)d==f);
}
}
4. 논리 연산자
논리 연산자는 둘 이상의 조건을 '그리고(AND)'나 '또는(OR)'으로 연결하여 하나의 식으로 표현할 수 있게 해준다.
|| (OR결합) : 피현산자 중 어느 한 쪽만 true 이면 true를 결과로 얻는다.
&& (AND결합) : 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.
논리 연산자의 피연산자가 '참(true)인 경우'와 '거짓(false)인 경우'의 연산결과를 표로 나타내면 다음과 같다.
x | y | x || y | x && y |
true | true | true | true |
true | false | true | false |
false | true | true | false |
false | false | false | false |
예제
public class OperatorEx24 {
public static void main(String[] args) {
int x = 0;
char ch = ' ';
x = 15;
System.out.printf("x = %2d, 10 < x && x < 20 = %b\n", x, 10 <x && x < 20);
x = 6;
System.out.printf("x = %2d, x%%2==0 || x%%3 == 0 && x%%6!=0 =%b\n", x, x%2==0 || x%3 == 0 && x%6!=0);
System.out.printf("x = %2d, (x%%2==0 || x%%3 == 0) && x%%6!=0 =%b\n", x, (x%2==0 || x%3 == 0) && x%6!=0);
ch = '1';
System.out.printf("ch = '%c', ch >= '0' && ch <= '9' = %b\n", ch, ch >= '0' && ch <= '9');
ch = 'a';
System.out.printf("ch = '%c', ch >= 'a' && ch <= '9' = %b\n", ch, ch >= 'a' && ch <= 'z');
ch = 'A';
System.out.printf("ch = '%c', ch >= 'A' && ch <= '9' = %b\n", ch, ch >= 'A' && ch <= 'Z');
ch = 'q';
System.out.printf("ch = '%c', ch == 'q' || ch == 'Q' = %b\n", ch, ch == 'q' || ch == 'Q');
}
}
댓글