티스토리 뷰

한화시스템/백엔드

[BE] JAVA_연산자

jjam-mo 2024. 7. 13. 14:17

1. 연산자 개요

1-1. 연산자 정의

1-1-1. 연산자란?

💡프로그래밍 중에 데이터를 처리하여 결과를 만드는 것연산(operation)이라 한다.
연산 과정에 사용되는 기호 또는 부호연산자(operator) 라고 한다.
연산되는 데이터피연산자(operand)라고 한다.

1-2. 연산자 종류

1-2-1. 연산자 종류

종류 연산자
산술 연산자 +, -, *, /, % 사칙연산 포함 기타 연산자
대입 연산자 =, +=, -=, *=, /=, %= = 오른쪽에 있는 값을 왼쪽에 대입하는 연산자
증감 연산자 ++, -- 피연산자를 하나만 갖는 단항 연산자
비교 연산자 >, <, >=, <=, ==, != 두 피연산자의 상대적인 크기를 비교하는 연산자
논리 연산자 &&, ||, !, &, ^, ~ 주어진 논리식을 판단하여 true, false 를 결정하는 연산자
삼항 연산자 ? : 피연산자 항목이 3개인 연산자
비트 연산자 &, |, ^, ~, <<, >>, >>> , ^, ~, <<, >>, >>>

1-2-2. 연산자의 우선순위와 결합규칙

  1. 연산식에 사용되는 연산자가 둘 이상일 때, 연산 순서는 연산자의 우선순위를 따른다.
  2. 단항 연산자(unary operator)는 이항 연산자(binary operator)보다 우선순위가 높다.
  3. 만약 기존에 지정된 우선순위 외에 개발자가 임의로 우선순위를 지정하고 싶다면 () 괄호로 묶어주면 우선순위가 제일 높아진다.
  4. 연산자의 흐름은 왼쪽에서 오른쪽으로 흐르지만, 대입 연산자의 경우 오른쪽에서 왼쪽으로 흐른다.

같은 우선순위는 왼쪽에서 오른쪽으로 단(단항) 산(산술) 시(쉬프트) 교(비교) 비(비트) 논(논리) 삼(삼항) 대(대입)

 

2. 산술 연산자

2-1. 산술 연산자 개요

2-1-1. 산술 연산자란?

💡주로 사칙연산과 관련된 연산자
가장 기본적이면서 많이 사용되는 연산자.
연산의 실행이 가능하기 위해 필요한 값이나 변수가 두 개인 이항 연산자로 분류되며 피연산자들의 연산 방향은 왼쪽에서 오른쪽이다.

2-1-2. 산술 연산자 종류

package com.ohgiraffers.section01.arithmatic;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 산술연산자에 대해 이해하고 활용할 수 있다. */
        int num1 = 20;
        int num2 = 7;

        System.out.println("num1 + num2 = " + (num1 + num2));
        System.out.println("num1 - num2 = " + (num1 - num2));
        System.out.println("num1 * num2 = " + (num1 * num2));

        double testNum = num1 / (double)num2;
        System.out.println("testNum = " + testNum);

        /* 설명. 소수점 이하 세자리까지 표현해보기 */
        double resultNum = (int)(testNum * 1000)/(double)1000;
        System.out.println("resultNum = " + resultNum);
        System.out.println("num1 % num2 = " + (num1 % num2));


    }
}

// 실행 결과
num1 + num2 = 27
num1 - num2 = 13
num1 * num2 = 140
testNum = 2.857142857142857
resultNum = 2.857
num1 % num2 = 6

 

3. 대입 연산자

3-1. 대입 연산자 개요

3-1-1. 대입 연산자란?

💡변수에 값을 대입할 때 사용하는 이항 연산자
대입 연산자와 산술 복합 대입 연산자가 있다.

3-1-2. 대입 연산자 종류

package com.ohgiraffers.section02.assignment;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 복합대입 연산자를 이해하고 활용할 수 있다. */
        /* 필기.
         *   대입연산자와 산술 복합 대입 연산자
         *   '=', '+=', '-=', '*=', '/=', '%='
         */

        int num = 12;
        System.out.println("num = " + num);

        num = num + 3;
        System.out.println("num = " + num);

        num += 3;
        System.out.println("num = " + num);

        num -= 5;
        System.out.println("num = " + num);

        num *= 2;
        System.out.println("num = " + num);

        num /= 2;
        System.out.println("num = " + num);

        num %= 10;
        System.out.println("num = " + num);

        /* 주의 ! */
        num =- 5;       // equal(=) 기호 오른쪽은 복합 대입 연산자가 아니다.
        System.out.println("num = " + num);
    }
}

// 실행 결과
num = 12
num = 15
num = 18
num = 13
num = 26
num = 13
num = 3
num = -5

 

4. 증감 연산자

4-1. 증감 연산자 개요

4-1-1. 증감 연산자란?

💡피연산자를 1 증가 혹은 감소 시킬 때 사용하는 연산자
이 연산자는 피연산자가 하나다. (단항연산자)

전위 : 연산 전에 단항연산자 실행 후위 : 연산 후에 단항연산자 실행

4-1-2. 증감 연산자 종류

package com.ohgiraffers.section03.increment;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 단항 연산자이자 증감연산자에 대해 이해하고 활용할 수 있다. */
        int num = 20;
        System.out.println("num = " + num);

        num++;
        System.out.println("num = " + num);

        ++num;
        System.out.println("num = " + num);

        num--;
        System.out.println("num = " + num);

        --num;
        System.out.println("num = " + num);

        /* 설명. 증감연산자를 다른 연산(대입, 산술연산, 출력 등)과 함께 사용 */
        int firstNum = 20;

        int result1 = firstNum++ + 3;

        System.out.println("result1 = " + result1);
        System.out.println("firstNum = " + firstNum);
        System.out.println("firstNum++ = " + firstNum++);
        System.out.println("++firstNum = " + ++firstNum);

        /* 문제. */
        int a = 3;
        int b = 5;
        int c = -1;
        int d = a + --b;
        b = 2 * (-c + a++) - d;
        c *= 2;
        a = b++ + c;

        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        System.out.println("d = " + d);
    }
}

// 실행 결과
num = 20
num = 21
num = 22
num = 21
num = 20

result1 = 23
firstNum = 21
firstNum++ = 21
++firstNum = 23

a = -1
b = 2
c = -2
d = 7

 

5. 비교 연산자

5-1. 비교 연산자 개요

5-1-1. 비교 연산자란?

💡피연산자 사이에서 상대적인 크기를 판단하여 참 혹은 거짓을 반환하는 연산자
연산자 중 참 혹은 거짓을 반환하는 연산자는 삼항연산자의 조건식이나 조건문의 조건절에 많이 사용된다. (충분히 연습이 필요함) 

5-1-2. 비교 연산자 종류

package com.ohgiraffers.section04.comparison;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 비교연산자에 대해 이해하고 활용할 수 있다. */
        /* 목차. 1. 숫자값 비교 */
        int iNum1 = 10;
        int iNum2 = 20;
        System.out.println(iNum1 == iNum2);
        System.out.println(iNum1 != iNum2);
        System.out.println(iNum1 >= iNum2);
        System.out.println(iNum1 > iNum2);
        System.out.println(iNum1 <= iNum2);
        System.out.println(iNum1 < iNum2);

        /* 목차. 2. 문자값 비교('A'=65, 'a'=97)(결국 숫자값 비교와 동일) */

        /* 목차. 3. 논리값 비교 */
        boolean isNumber1 = true;
        boolean isNumber2 = false;
        System.out.println(isNumber1 == isNumber2);
        System.out.println(isNumber1 != isNumber2);
//        System.out.println(isNumber1 >= isNumber2);
//        System.out.println(isNumber1 > isNumber2);
//        System.out.println(isNumber1 <= isNumber2);
//        System.out.println(isNumber1 < isNumber2);

        /* 목차. 4. 문자열값 비교 */
        String str3 = "java";
        String str4 = "java";
        System.out.println(str3 == str4);
        System.out.println(str3 != str4);
//        System.out.println(str3 >= str4);
//        System.out.println(str3 > str4);
//        System.out.println(str3 <= str4);
//        System.out.println(str3 < str4);
		// 문자열의 값을 비교하고 싶은 경우에는 문자열.equals(비교할문자열) 을 이용하여 비교해야 한다. 
    }
}

// 실행 결과
false
true
false
false
true
true

false
true

true
false

 

6. 논리 연산자

6-1. 논리 연산자 개요

6-1-1. 논리 연산자란?

💡논리값(true or false)를 취급하는 연산

6-1-2. 논리 연산자 종류

package com.ohgiraffers.section05.logical;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 논리 연산자에 대해 이해하고 활용할 수 있다. */
        /* 필기.
         *   논리 연산자
         *   논리값(true or false)를 취급하는 연산자이다.
         *
         * 필기.
         *  논리 연산자의 종류
         *  1. 논리 연결 연산자
         *   1-1. &&(논리 AND): 두 논리값(또는 논리식)이 둘 다 참이면 참이고 나머지는 거짓
         *   1-2. ||(논리 OR): 두 논리값(또는 논리식)이 모두 거짓이면 거짓이고 나머지는 참
         *  2. 논리 부정 연산자
         *   2-1. !(논리 NOT): 논리식의 결과가 참이면 거짓으로, 거짓이면 참으로 반환한다.
         */

        /* 목차. 1. 논리 연산자 결과값 확인 */
        System.out.println(true && true);
        System.out.println(true && false);
        System.out.println(false && true);
        System.out.println(false && false);
        System.out.println();
        System.out.println(true || true);
        System.out.println(true || false);
        System.out.println(false || true);
        System.out.println(false || false);
        System.out.println();
        System.out.println(!true);
        System.out.println(!false);

        /* 목차. 2. 논리식에 논리 연산자 활용 */
        int num1 = 10;
        int num2 = 20;
        int num3 = 30;
        int num4 = 40;

        System.out.println(num1 < num2 && num3 < num4);     // 비교 연산자가 논리 연산자보다 우선순위 높다.
        System.out.println(num1 < num2 && num3 > num4);
        System.out.println(num1 > num2 && num3 < num4);
        System.out.println(num1 > num2 && num3 > num4);

    }
}

// 실행 결과
true
false
false
false

true
true
true
false

false
true

true
false
false
false
package com.ohgiraffers.section05.logical;

public class Application2 {
    public static void main(String[] args) {

        /* 수업목표. 논리 연산자 활용하기 */
        /* 목차. 1. 1부터 100 사이 값 확인 */
        int num1 = 55;
        int num2 = 101;
        System.out.println((num1 >= 1) && (num1 <= 100));
        System.out.println((num2 >= 1) && (num2 <= 100));

        /* 목차. 2. 영어 대문자인지 확인 */
        char ch1 = 'G';
        char ch2 = 'g';

//        System.out.println("A는 유니코드 번호 몇번이지? " + (int)'A');
//        System.out.println("Z는 유니코드 번호 몇번이지? " + (int)'Z');
//        System.out.println(ch1 >= 65 && ch1 <= 90);
        System.out.println(ch2 >= 'A' && ch2 <= 'Z');   // 문자 대소 비교는 문자로 가능하다.

        /* 목차. 3. 대소문자 상관없이 영문자 'y' 확인 */
        char ch3 = 'y';
        char ch4 = 'Y';
        System.out.println("y 입력했는지 확인: " + (ch3 == 'y' || ch3 == 'Y'));
        System.out.println("y 입력했는지 확인: " + (ch4 == 'y' || ch4 == 'Y'));
    }
}

// 실행 결과
true
false

false

y 입력했는지 확인: true
y 입력했는지 확인: true
  • 논리 연산 예
A B A && B A || B !A
true true true true false
true false false true false
false true false true true
false false false false true

 

💡논리 and 연산자와 논리 or 연산자의 우선순위
&& : 1순위
|| : 2순위
논리 and 연산자 우선순위가 논리 or 연산자 우선순위보다 높다
💡AND 연산과 OR 연산의 특징
논리식 && 논리식 : 앞의 결과가 false이면 뒤를 실행 안함
논리식 || 논리식 : 앞의 결과가 true이면 뒤를 실행 안함

 

7. 삼항 연산자

7-1. 삼항 연산자 개요

7-1-1. 삼항 연산자란?

💡자바에서 유일하게 피연산자 항목이 3개인 연산자
ex) (조건식) ? 참일 때 사용할 값1 : 거짓일 때 사용할 값1
조건식은 반드시 결과가 true 또는 false 가 나오게끔 작성
(비교/논리 연산자가 주로 사용됨)
package com.ohgiraffers.section06.ternary;

public class Application1 {
    public static void main(String[] args) {

        /* 수업목표. 삼항연산자에 대해 이해하고 활용할 수 있다. */
        /* 필기.
         *  삼항 연산자
         *  자바에서 유일하게 피연산자 항목이 3개인 연산자이다.
         *  (조건식) ? 참일 때 사용할 값1 : 거짓일 때 사용할 값2
         * */

        /* 목차. 1. 삼항연산자 단독 사용 */
        int num1 = 10;
        int num2 = -10;
        String result1 = (num1 > 0) ? "양수다." : "양수가 아니다.";
        String result2 = (num2 > 0) ? "양수다." : "양수가 아니다.";

        System.out.println("result1 = " + result1);
        System.out.println("result2 = " + result2);

        /* 목차. 2. 삼항연산자 중첩 사용(지양) */
        int num3 = 0;
        int num4 = 1;
        int num5 = -1;
        String result3 = (num3 > 0) ? "양수다." : (num3 == 0) ? "0이다." : "음수다.";
        String result4 = (num4 > 0) ? "양수다." : (num4 == 0) ? "0이다." : "음수다.";
        String result5 = (num5 > 0) ? "양수다." : (num5 == 0) ? "0이다." : "음수다.";

        System.out.println("result3 = " + result3);
        System.out.println("result4 = " + result4);
        System.out.println("result5 = " + result5);
    }
}

// 실행 결과
result1 = 양수다.
result2 = 양수가 아니다.

result3 = 0이다.
result4 = 양수다.
result5 = 음수다.

 

'한화시스템 > 백엔드' 카테고리의 다른 글

[BE] JAVA_패키지, 임포트  (0) 2024.07.13
[BE] JAVA_메소드  (0) 2024.07.13
[BE] JAVA_형변환  (0) 2024.07.13
[BE] JAVA_오버플로우  (0) 2024.07.13
[BE] JAVA_상수  (0) 2024.07.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함