Updated:

산술 연산자

 +, -, *, / 와 같이 계산을 수행하는 기호를 연산자라고 한다. 자바에는 다음과 같은 다양한 연산자가 있다.

연산자와 피연산자

3 + 4
a + b
  • 연산자(operator): 연산 기호(e.g., +, -)
  • 피연산자(operand): 연산 대상(e.g., 3, 4, a, b)

산술 연산자

 산술 연산자는 주로 숫자를 계산하는 데 사용한다. 다음 코드를 보자.

package operator;

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 형 계산

        // 나머지
        int mod = a % b;
        System.out.println("a % b = " + mod);   // 출력: a % b = 1
    }
}

 만약 0으로 나누면 오류가 발생한다.
Exception in thread "main" java.lang.ArithmeticException: / by zero
 이는 예외처리를 해줘야 한다.

문자열 더하기

 자바는 문자열에도 + 연산자를 사용할 수 있다. 다음 코드를 보자.

package operator;

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); // 10을 문자열로 변환

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

 자바에서 문자와 숫자를 더하면 숫자를 문자열로 변경한 다음에 서로 더한다. 또한 자바는 문자열인 String 타입에 다른 타입을 더하는 경우 대상 타입을 문자열로 변경한다. 쉽게 이야기해서 문자열에 더하는 것은 문자열이 된다.

연산자 우선순위

 자바는 다음과 같은 연산자 우선순위가 있다. 높은 것에서 낮은 순으로 적혀있다.

  • 괄호 ()
  • 단항 연산자 (e.g., ++, –, !, ~, new, (type))
  • 산술 연산자 (*, /, % 우선, 그 다음에 +, -)
  • Shift 연산자 («, », »>)
  • 비교 연산자 (<, <=, >, >=, instanceof)
  • 등식 연산자 (==, !=)
  • 비트 연산자 (&, ^, |)
  • 논리 연산자 (&&, ||)
  • 삼항 연산자 (? :)
  • 대입 연산자 (=, +=, -=, *=, /=, %= 등)

 연산자 우선순위는 2가지만 기억하면 된다.

  • 상식선에서 우선순위를 사용하자
  • 애매하면 괄호()를 사용하자

증감 연산자

 증가 및 감소 연산자를 줄여서 증감 연산자라 한다. 증감 연산자는 ++, –로 표현되며, 이들은 변수의 값을 1만큼 증가시키거나 감소시킨다.

전위, 후위 증감연산자

 증감 연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 연산이 수행되는 시점이 달라진다.

  • ++a(전위(Prefix) 증감 연산자): 증감 연산자를 피연산자 앞에 둘 수 있다.
  • a++(후위(Postfix) 증감 연산자): 증감 연산자를 피연산자 뒤에 둘 수 있다.
package operator;

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 = 1, b = 2

        // 후위 증감 연산자 사용 예
        a = 1;
        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)이라는 결과가 나온다. 참, 거짓은 boolean 형을 사용한다.

문자열 비교

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

package operator;

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);    // 문자열 변수 비교
        
        // ctrl + shift + enter 단축기: 세미클론, 줄바뀜
        System.out.println("result1 = " + result1); // true
        System.out.println("result2 = " + result2); // true
        System.out.println("result3 = " + result3); // false

    }
}

논리 연산자

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

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

 논리 연산자를 활용하는 다음 코드를 보자.

package operator;

public class Logical2 {

    public static void main(String[] args) {
        int a = 15;
        // a는 10보다 크고 20보다 작다
        boolean result = a > 10 && a < 20;
        System.out.println("result = " + result); // true
    }
}

대입 연사자

 대입 연산자(=)는 값을 변수에 할당하는 연산자이다. 이 연산자를 사용하면 변수에 값을 할당할 수 있다.
 산술 연산자와 대입 연산자를 한번에 축약하여 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라 한다. 종류로는 +=, -=, *=, /=, %=가 있다.

댓글남기기