인프런/김영한 자바

[김영한의 자바 입문] - 3. 연산자

sson-coding 2025. 8. 27. 15:20

본 글에 사용된 코드와 이미지의 일부는 김영한 님의 『김영한의 자바 입문』 강의를 참조하여 발췌·활용하였습니다.


연산자

연산자란?

연산자란 + , - , * , / 와 같이 계산을 수행하는 기호를 말한다.

추가로 피연산자란 연산 대상을 뜻한다.

연산자의 종류

  • 산술 연산자: + , - , * , / , % (나머지 연산자)
  • 증감(증가 및 감소) 연산자: ++ , --
  • 비교 연산자: == , != , > , < , >= , <=
  • 논리 연산자: && (AND), || (OR), ! (NOT)
  • 대입 연산자: = , += , -= , *= , /= , %=
  • 삼항 연산자: ? :

산술 연산자

산술 연산자는 주로 숫자를 계산하는 데 사용되고, + , - , * , / , %(나머지) 가 있다.

코드로 살펴보자.

public class Operator1 {
    public static void main(String[] args) {
        // 변수 초기화
        int a = 5;
        int b = 2;
        // 덧셈
        int sum = a + b;
        System.out.println("a + b = " + sum); // 출력: a + b = 7
        // 뺄셈
        int diff = a - b;
        System.out.println("a - b = " + diff); // 출력: a - b = 3
        // 곱셈
        int multi = a * b;
        System.out.println("a * b = " + multi); // 출력: a * b = 10
        // 나눗셈
        int div = a / b;
        System.out.println("a / b = " + div); // 출력: a / b = 2
        // 나머지
        int mod = a % b;
        System.out.println("a % b = " + mod); // 출력: a % b = 1
    }
}

---실행결과---
a + b = 7
a - b = 3
a * b = 10
a / b = 2
a % b = 1

문자열 더하기

자바는 문자열에도 + 연산자를 사용해 두 문자를 연결할 수 있다.

또한 문자와 숫자를 더하면 숫자를 문자열로 변경한 다음에 서로 더한다.

public class Operator2 {
    public static void main(String[] args) {
        //문자열과 문자열 더하기1
        String result1 = "hello " + "world";
        System.out.println(result1);

        //문자열과 문자열 더하기2
        String s1 = "string1";
        String s2 = "string2";
        String result2 = s1 + s2;
        System.out.println(result2);

        //문자열과 숫자 더하기1
        String result3 = "a + b = " + 10;
        System.out.println(result3);

        //문자열과 숫자 더하기2
        int num = 20;
        String str = "a + b = ";
        String result4 = str + num;
        System.out.println(result4);
    }
}

---실행결과---
hello world
string1string2
a + b = 10
a + b = 20

연산자 우선순위

수학에서 덧셈보다 곱셈이 우선순위가 더 높듯이, 연산자에도 우선순위가 있다.

다음은 연산자 우선순위를 높은 것에서 낮은 순으로 나열한 것이다.

  1. 괄호 ()
  2. 단항 연산자 (예: ++ , -- , ! , ~ , new , (type) )
  3. 산술 연산자 ( * , / , % 우선, 그 다음에 + , - )
  4. Shift 연산자 ( << , >> , >>> )
  5. 비교 연산자 ( < , <= , > , >= , instanceof )
  6. 등식 연산자 ( == , != )
  7. 비트 연산자 ( & , ^ , | )
  8. 논리 연산자 ( && , || )
  9. 삼항 연산자 ( ? : )
  10. 대입 연산자 ( = , += , -= , *= , /= , %= 등등)

이 많은 우선순위를 외울 필요가 있을까? 외우면 좋지만 대부분의 실무 개발자들은 연산자 우선순위를 외우지 않는다.

상식선에서 생각하고 모르면 찾아보면 된다.


증감 연산자

증감 연산자란 증가 및 감소 연산자를 줄인것이다.

증감 연산자는 ++ , -- 로 표현되며, 이들은 변수의 값을 1만큼 증가시키거나 감소시킨다.

전위, 후위 증감 연산자

  • 전위 연산자(++a) : 증감 연산이 먼저 수행된 후 나머지 연산이 수행된다.
  • 후위 연산자(a++) : 다른 연산이 먼저 수행된 후 증감 연산이 수행된다.
public class OperatorAdd2 {
    public static void main(String[] args) {
        // 전위 증감 연산자 사용 예
        int a = 1;
        int b = 0;
        b = ++a; // a의 값을 먼저 증가시키고, 그 결과를 b에 대입
        System.out.println("a = " + a + ", b = " + b); // 결과: a = 2, b = 2

        // 후위 증감 연산자 사용 예
        a = 1; // a 값을 다시 1로 지정
        b = 0; // b 값을 다시 0으로 지정
        b = a++; // a의 현재 값을 b에 먼저 대입하고, 그 후 a 값을 증가시킴
        System.out.println("a = " + a + ", b = " + b); // 결과: a = 2, b = 1
    }
}

 


비교 연산자

비교 연산자는 두 값을 비교하는 데 사용되고, 주로 조건문과 함께 사용한다.

비교 연산자는 아래와 같다.

  • == : 동등성 (equal to)
  • != : 불일치 (not equal to)
  • : 크다 (greater than)
  • < : 작다 (less than)
  • = : 크거나 같다 (greater than or equal to)
  • <= : 작거나 같다 (less than or equal to)

비교 연산자를 사용하면 true 또는 false 라는 결과가 나온다. 주의할 점은 =(대입 연산자) 와 ==(비교 연산자) 를 헷갈리면 안된다.

public class Comp1 {
    public static void main(String[] args) {
        int a = 2;
        int b = 3;
        System.out.println(a == b); // false, a와 b는 같지 않다
        System.out.println(a != b); // true, a와 b는 다르다
        System.out.println(a > b); // false, a는 b보다 크지 않다
        System.out.println(a < b); // true, a는 b보다 작다
        System.out.println(a >= b); // false, a는 b보다 크거나 같지 않다
        System.out.println(a <= b); // true, a는 b보다 작거나 같다
        //결과를 boolean 변수에 담기
        boolean result = a == b; //a == b: false
        System.out.println(result); //false
    }
}

문자열 비교

문자열이 같은지 비교할 때는 .equals() 메서드를 사용해야 한다.

public class Comp2 {
    public static void main(String[] args) {
        String str1 = "문자열1";
        String str2 = "문자열2";

        boolean result1 = "hello".equals("hello"); //리터럴 비교
        boolean result2 = str1.equals("문자열1");//문자열 변수, 리터럴 비교
        boolean result3 = str1.equals(str2);//문자열 변수 비교

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

---실행 결과
result1 = true
result2 = true
result3 = false

논리 연산자

논리 연산자는 boolean 형인 true,false 를 비교하는데 사용한다.

논리 연산자는 아래와 같다.

  • && (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘중 하나라도 거짓이면 거짓을 반환
  • || (또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환
  • ! (부정) : 피연산자의 논리적 부정을 반환. 즉, 참이면 거짓을, 거짓이면 참을 반환

코드로 살펴보자

public class Logical1 {
    public static void main(String[] args) {
        System.out.println("&&: AND 연산");
        System.out.println(true && true); //true
        System.out.println(true && false);//false
        System.out.println(false && false);//false
        System.out.println("||: OR 연산");
        System.out.println(true || true); //true
        System.out.println(true || false);//true
        System.out.println(false || false);//false
        System.out.println("! 연산");
        System.out.println(!true); //false
        System.out.println(!false); //true
        System.out.println("변수 활용");
        boolean a = true;
        boolean b = false;
        System.out.println(a && b); // false
        System.out.println(a || b); // true
        System.out.println(!a); // false
        System.out.println(!b); // true
    }
}

대입 연산자

대입 연산자는 값을 변수에 할당하는 연산자이다.

예를 들어, int a = 1 는 a 라는 변수에 1 이라는 값을 할당한다.

축약(복합) 대입 연산자

산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있다.

연산자의 종류로는 += , -= , *= , /= , %= 이 있다.

i += 3 → i = i + 3 으로 표현할 수 있다.