이 게시물은 아래 버전을 기준으로 작성되었습니다. Java : 11.0.15.1 OS : Windows 10 Pro IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06 |
연산자
연산자의 개념
연산자(Operator)란 연산에 사용하는 표시나 기호를 말한다. 여기서 연산이란 프로그램에서 데이터를 처리하여 결과를 산출하는 행위를 말한다. 연산의 대상이 되는 데이터는 피연산자(operand)라고 한다.
연산자의 종류
1. 산술연산자 : + - * / %
+ : 덧셈
- : 뺄셈
* : 1. 곱하기 / 2. 와일드카드('모든 것'을 의미하는 기호)
/ : 나눗셈
% : 나머지 연산자(mod 연산자)
특징 : 정수끼리의 연산은 결과가 무조건 정수로 나오고, 정수와 실수, 실수와 실수끼리의 연산은 결과가 무조건 실수로 나옴
package com.devgsp.study.basic;
public class Operator {
public static void main(String[] args) {
int num1 = 100, num2 = 6;
System.out.println("num1 + num2 = " + (num1 + num2));
System.out.println("num1 - num2 = " + (num1 - num2));
System.out.println("num1 * num2 = " + (num1 * num2));
System.out.println("num1 / num2 = " + (num1 / num2));
System.out.println("num1 % num2 = " + (num1 % num2));
System.out.println("==========================");
double double1 = 3.0;
int num3 = 7;
System.out.println("num3 / double1 = " + (num3 / double1)); // 실수의 나눗셈 연산에서 정확한 결과값을 얻으려면 BigDecimal 클래스를 사용해야 함
System.out.println("num3 % double1 = " + (num3 % double1));
}
}
2. 증감연산자 : ++ --
산술연산자의 일종으로 단항 연산자이며 해당 숫자값을 1씩 증가 또는 감소시키는 연산자.
package com.devgsp.study.basic;
public class Operator2 {
public static void main(String[] args) {
int i = 0;
System.out.println("i = " + i);
i++;
System.out.println("i = " + i);
i--;
System.out.println("i = " + i);
}
}
3. 관계연산자 : < > <= >= ==(같다) !=(같지 않다)
<, > : 크다 혹은 작다
<=, >= : 크거나 같다 혹은 작거나 같다
== : 같다
!= : 같지 않다
true 혹은 false의 논리값을 결과값으로 가짐. 추후 학습할 조건식에서 주로 사용됨.
※ 일상에서 사칙 연산의 등호로 사용하는 '='는 대입 연산자로 값을 저장하는 데 사용함.
package com.devgsp.study.basic;
public class Operator3 {
public static void main(String[] args) {
int num1 = 13;
int num2 = 31;
System.out.println("13 < 31 : " + (num1 < num2));
System.out.println("13 > 31 : " + (num1 > num2));
System.out.println("13 <= 31 : " + (num1 <= num2));
System.out.println("13 >= 31 : " + (num1 >= num2));
System.out.println("13 == 31 : " + (num1 == num2));
System.out.println("13 != 31 : " + (num1 != num2));
}
}
4. 논리연산자 : && || !
&& : 논리곱. AND 연산으로 피연산자에 해당하는 조건들이 모두 true여야 결과값으로 true를 가지며, 조건들 중 하나라도 false이면 결과값으로 false를 가지는 연산자
|| : 논리합. OR 연산으로 피연산자에 해당하는 조건들이 모두 false여야 결과값으로 false를 가지며, 조건들 중 하나라도 true이면 결과값으로 true를 가지는 연산자
! : 부정연산자. NOT 연산으로 피연산자에 해당하는 조건이 true이면 false를, false이면 true를 결과값으로 가지는 단항 연산자
package com.devgsp.study.basic;
public class Operator4 {
public static void main(String[] args) {
int height = 170;
int weight = 63;
int age = 27;
System.out.println("키가 160cm를 넘거나, 몸무게가 72kg을 넘는 사람 : " + (height > 160 || weight > 72));
System.out.println("키가 160cm를 넘고, 몸무게가 72kg을 넘는 사람 : " + (height > 160 && weight > 72));
System.out.println("나이가 27살 이하이고 몸무게가 65kg가 안 되는 사람 : " + (age <= 27 && weight < 65));
System.out.println("=============================");
System.out.println("키가 170cm이고 몸무게가 63kg이며, 나이가 27살인 사람 : " + (height == 170 && weight == 63 && age == 27));
System.out.println("키가 170cm이 아니고 몸무게가 63kg이 아니며, 나이가 27살이 아닌 사람 : " + !(height == 170 && weight == 63 && age == 27));
}
}
5. 조건연산자 : 조건 ? expr1 : expr2
조건에 따라 처리되는 값이 달라지는 형태의 연산자. 삼항연산자라고도 부름.
문법 : [조건] ? [조건이 참일 경우 처리될 값] : [조건이 거짓일 경우 처리될 값]
public class Operator5 {
public static void main(String[] args) {
int score1 = 80;
int score2 = 70;
int score3 = 90;
int avgScore = (score1 + score2 + score3) / 3;
int passScore = 60;
String result = avgScore >= passScore ? "PASS" : "FAIL";
System.out.println("나의 평균 점수 : " + avgScore);
System.out.println("합격 점수 : " + passScore);
System.out.println("시험 결과 : " + result);
}
}
6. 대입 및 복합연산자 : =, +=, -=, *=, /=, %=, &=, |=
계산 후에 값을 변수 등에 대입하는 연산자. 연산 후 대입하는 복합연산자들은 원래의 식으로 대체 가능. 연산의 우선순위가 가장 낮은 연산자들.
예시1) a += b → a = a + b
예시2) a += 1 → a++
package com.devgsp.study.basic;
public class Operator6 {
public static void main(String[] args) {
String hot = "아, 덥다~";
System.out.println(hot);
hot += "~~~~~~";
System.out.println(hot);
hot += "!!!!!!";
System.out.println(hot);
System.out.println("===============================");
int num1 = 1;
int num2 = 10;
int num3 = 110;
num1 += num1;
System.out.println(num1);
num1 += num2;
System.out.println(num1);
num1 += num2 + num3;
System.out.println(num1);
num1 /= 12;
System.out.println(num1);
num1 -= 1;
System.out.println(num1);
num1 %= 4;
System.out.println(num1);
num1 *= num2;
System.out.println(num1);
}
}
연산자의 연산 우선순위
우선순위 | 연산자 |
1 | [], . |
2 | ++, --, +expr(양수 부호), -expr(음수 부호), !, (data type) |
3 | *, /, % |
4 | +, - |
5 | <, >, <=, >=, instanceof |
6 | ==, != |
7 | && |
8 | || |
9 | ? expr1 : expr2 |
10 | =, +=, -=, *=, /=, %=, &=, |= |
[예제] 1. com.devgsp.study.basic 패키지에 MyOperator 클래스를 생성하자. 2. double형 상수 HEIGHT와 WEIGHT를 선언하고, 각각 본인의 키(단위 m)와 몸무게(단위 kg)로 초기화하자. 3. double형 변수 bmiCalc와 bmiCut를 선언하자. bmiCalc 변수의 값은 BMI 지수 계산식으로 초기화하고, bmiCut 변수의 값은 비만의 기준이 되는 BMI 지수로 초기화하자. * 비만도 측정(BMI 지수) 계산식 : kg/㎡ * BMI 지수가 25 이상이면 비만이다. 4. String형 변수 result에 bmiCalc 변수의 결과값이 bmiCut 이상이면 "비만", 아니면 "비만 아님"을 저장하는 삼항연산자를 작성하자. 5. 아래와 같은 출력이 이루어지도록 코드를 작성하자. 나의 키 : xxxcm 나의 몸무게 : xxxkg 내 BMI 지수 : xxx 비만 기준 : xxx 검사 결과 : 비만 / 비만 아님 |
package com.devgsp.study.basic;
public class MyOperator {
public static void main(String[] args) {
final double HEIGHT = 1.703;
final double WEIGHT = 72.0;
double bmiCalc = WEIGHT / (HEIGHT * HEIGHT);
double bmiCut = 25.0;
String result = bmiCalc >= bmiCut ? "비만" : "비만 아님";
System.out.println("나의 키 : " + HEIGHT * 100 + "cm");
System.out.println("나의 몸무게 : " + WEIGHT + "kg");
System.out.println("내 BMI 지수 : " + bmiCalc);
System.out.println("비만 기준 : " + bmiCut);
System.out.println("검사 결과 : " + result);
}
}

'개발 지식 > Java' 카테고리의 다른 글
[Java] Switch 분기문 (0) | 2022.07.16 |
---|---|
[Java] If 분기문 (0) | 2022.07.15 |
[Java] 형 변환 (0) | 2022.07.13 |
[Java] 명명 규칙 (0) | 2022.07.12 |
[Java] 변수(4) - 상수 (0) | 2022.07.11 |