연산: 프로그램에서 데이터를 처리하여 결과를 산출하는 것. 연산자: 연산에 사용되는 표시나 기호. 피연산자: 연산자와 함께 연산되는 데이터. 연산식: 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것.
연산자의 종류
연산자별로 산출되는 값의 타입이 다름.
산술 연산자: 숫자 타입의 결과
비교 연산자: 논리 타입의 결과
연산식 반드시 하나의 값을 산출함. 값 대신 연산식을 사용할 수 있음. 다른 연산식의 피연산자 위치에 올 수 있음.
연산의 방향과 우선순위
연산자마다 연산의 방향과 우선순위가 다름. ∴괄호()를 사용하여 먼저 처리할 연산식을 묶어주자.
단항, 이항, 삼항 연산자 순으로 우선순위를 가짐.
산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가짐.
단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼➔오.
복잡한 연산식에는 괄호() 사용 권장.
3-2. 연산자의 종류
단항 연산자: 부호 연산자.
이항 연산자: 부호,조건 연산자 제외. 삼항 연산자: 조건 연산자.
단항 연산자
피연산자가 단 하나.
부호연산자( +, - ) boolean, char제외 나머지 기본 타입에 사용 가능. 정수 및 실수 리터럴 앞에 붙어 '양수 / 음수' 를 표현. 정수 및 실수 변수 앞에 붙어 변수의 부호를 유지 / 변경. 연산 결과는int형.
package sec02.exam01;
publicclassSignOperatorExample {
publicstaticvoidmain(String[] args) {
//int 타입 부호 연산int x=-100;
int result1= +x;
int result2= -x;
System.out.println("result1= " + result1);
System.out.println("result2= "+ result2);
//byte 타입 부호 연산byte b = 100;
//byte result3= -b; //부호연산시 int형으로 바뀜.int result3 = -b;
System.out.println("result3= "+ result3);
}
}
실행결과
증감연산자( ++, -- ) boolean 제외 나머지 기본 타입에 사용 가능. ++a : 다른 연산 수행전, a값 1 증가. −−a : 다른 연산 수행전, a값 1 감소. a++ : 다른 연산 수행후, a값 1 증가. a−− : 다른 연산 수행후, a값 1 감소.
package sec02.exam02;
publicclassIncreaseDecreaseOperatorExample {
publicstaticvoidmain(String[] args) {
int x = 10;
int y = 10;
int z;
System.out.println("------------------------");
x++;
++x;
System.out.println("x= " + x);
System.out.println("------------------------");
y--;
--y;
System.out.println("y= " + y);
System.out.println("------------------------");
z= x++; //z에 x먼저 대입한 후, x 1증가.
System.out.println("z= " + z);
System.out.println("x= " + x);
System.out.println("------------------------");
z= ++x; //x 1증가한 후, z에 x대입.
System.out.println("z= " + z);
System.out.println("x= " + x);
System.out.println("------------------------");
z= ++x + y++; //x 1증가한 후 y와 더해 z에 대입한 후, y 1증가.
System.out.println("z= " + z);
System.out.println("x= " + x);
System.out.println("y= " + y);
}
}
실행결과
+)++i와i=i+1의 연산 속도는 같다.
논리 부정 연산자( ! ) boolean에만 사용 가능. !a : a가 true면 false를, false면 true를 산출. 조건문과 제어문에서 조건식의 값을 부정하여 실행 흐름 제어. true / false 를 번갈아가며 변경하는 토글 기능에서도 사용.
package sec02.exam03;
publicclassDenyLogicOperatorExample {
publicstaticvoidmain(String[] args) {
boolean play = true;
System.out.println(play);
//부정
play = !play;
System.out.println(play);
//한번 더 부정
play = !play;
System.out.println(play);
}
}
실행결과
이항 연산자
피연산자가 2개.
산술 연산자(+, -, *, /, %) boolean 제외 나머지 기본 타입에 사용 가능. 덧셈, 뺄셈, 곱셈, 나눈쎔, 나머지 - 특징 - 피연산자들이 byte, short, char : 모두 int 변환된 후 연산. - 피연산자들이 모두 정수, long 포함 : 모두 long 변환된 후 연산. - 피연산자 중 실수 존재 : 허용 범위 큰 실수 타입으로 변환된 후 연산. 여러 산술 연산
비교 연산자( <, <=, >, >=, ==, != ) 흐름 제어문(조건,반복문)에서 주로 이용되어 실행 흐름 제어. true / false 산출. -대소: boolean 제외 나머지 기본 타입에 사용 가능. -동등: 모든 타입에 사용 가능. 피연산자가 char형이면 유니코드 값으로 비교 연산 수행.