본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(10) - 산술, 비교연산자

by 머니테크리더 2023. 5. 1.
반응형

산술 비교 연산자 대표 이미지
산술 비교 연산자 대표 이미지

🔖 INDEX

     

     

    연산자(Operators)는 프로그래밍에서 특정한 연산을 수행하는 기호입니다. 연산자는 피연산자(Operand)를 필요로 하며, 피연산자는 연산의 대상이 되는 값입니다.

     

    자바에서는 다양한 연산자를 제공하며, 각 연산자는 피연산자를 조합하여 새로운 값을 만드는 역할을 합니다. 이러한 연산자들을 사용하여 프로그램에서 수학적인 계산부터 비교, 논리, 비트 연산 등 다양한 계산을 수행할 수 있습니다.

     

    연산자는 프로그래밍에서 가장 기본적인 개념 중 하나이며, 자바를 비롯한 대부분의 프로그래밍 언어에서 기본적으로 제공합니다. 연산자의 종류와 기능을 잘 이해하고 사용하는 것은 프로그래밍에서 필수적인 요소입니다.

     

    자바에서는 다양한 연산자를 제공합니다. 각 연산자는 다음과 같은 종류로 구분됩니다.

    • 산술 연산자 (Arithmetic Operators)
    • 비교 연산자 (Relational Operators)
    • 논리 연산자 (Logical Operators)

    2023.05.01 - [JAVA] - 초보 자바 프로그래밍(11) - 논리연산자 (Logical Operators)

     

    초보 자바 프로그래밍(11) - 논리연산자 (Logical Operators)

    📌 목차 1. 논리연산자 (Logical Operators) 2. 연산자 우선순위 3. 논리연산자 우선순위 논리연산자 (Logical Operators) 논리 연산자는 논리적인 조건을 만족하는지 검사하는 연산자입니다. 자바에서는 다

    moneylogging.tistory.com

    • 비트 연산자 (Bitwise Operators)

    2023.05.01 - [JAVA] - 초보 자바 프로그래밍(12) - 비트연산자 (Bitwise Operators)

     

    초보 자바 프로그래밍(12) - 비트연산자 (Bitwise Operators)

    📌 목차 1. 비트 연산자 (Bitwise Operators) 2. 비트 연산자는 어디에 사용되는가? 3. 사용 시 주의 사항 비트 연산자 (Bitwise Operators) 비트 연산자는 비트(bit) 단위로 연산을 수행하는 연산자입니다. 자

    moneylogging.tistory.com

    • 대입 연산자 (Assignment Operators)

    2023.05.01 - [JAVA] - 초보 자바 프로그래밍(13) - 대입연산자 (Assignment Operators)

     

    초보 자바 프로그래밍(13) - 대입연산자 (Assignment Operators)

    📌 목차 1. 대입연산자 (Assignment Operators) 2. 사용 시 주의 사항 대입연산자 (Assignment Operators) 대입 연산자(=)는 변수에 값을 할당할 때 사용하는 연산자입니다. 이 연산자는 변수의 값에 대입할 값

    moneylogging.tistory.com

    • 조건 연산자 (Conditional Operators)

    2023.05.01 - [JAVA] - 초보 자바 프로그래밍(14) - 조건연산자 (Conditional Operators)

     

    초보 자바 프로그래밍(14) - 조건연산자 (Conditional Operators)

    조건 연산자는 피연산자 중에 조건을 만족하는 피연산자를 반환하는 연산자입니다. 자바에서는 두 가지 종류의 조건 연산자가 제공됩니다. 📌 목차 1. 삼항 연산자(Ternary Operator) 2. 널 연산자(Nul

    moneylogging.tistory.com

     

     

    산술 연산자 (Arithmetic Operators)

    산술 연산자는 덧셈, 뺄셈, 곱셈, 나눗셈 및 나머지 연산을 수행하는 연산자입니다. 자바에서는 다음과 같은 산술 연산자를 제공합니다.

    • 덧셈 연산자 (+)
    • 뺄셈 연산자 (-)
    • 곱셈 연산자 (*)
    • 나눗셈 연산자 (/)
    • 나머지 연산자 (%)

    덧셈, 뺄셈, 곱셈 연산자는 이름 그대로 덧셈, 뺄셈, 곱셈 연산을 수행합니다. 예를 들어, 다음과 같은 코드를 작성하여 덧셈 연산을 수행할 수 있습니다.

    int a = 10;
    int b = 20;
    int result = a + b;
    System.out.println(result); //30 출력

     

    나눗셈 연산자는 피연산자를 나눈 결과를 반환합니다. 나눗셈 연산자(/)는 정수형 데이터 타입에 대한 나눗셈 연산을 수행할 때, 소수점 이하의 값을 버리고 몫만을 반환합니다. 예를 들어, 다음과 같은 코드를 작성하여 나눗셈 연산을 수행할 수 있습니다.

    int a = 10;
    int b = 3;
    int result = a / b;
    System.out.println(result); //3 출력

     

    나머지 연산자(%)는 피연산자를 나눈 후, 나머지 값을 반환합니다. 예를 들어, 다음과 같은 코드를 작성하여 나머지 연산을 수행할 수 있습니다.

    int a = 10;
    int b = 3;
    int result = a % b;
    System.out.println(result); //1 출력

    산술연산자의 우선순위는 곱셈(*)/나눗셈(/) > 덧셈(+) /뺄셈(-) 입니다. 수학에서 나오는 우선순위와 동일합니다.

     

    또한, 산술 연산자들은 서로 다른 데이터 타입 간의 연산을 수행할 때 자동으로 형변환을 수행합니다. 그러나, 형변환의 결과가 예상치 못한 값이 나올 수 있으므로, 피연산자의 데이터 타입이 일치하도록 명시적으로 형변환하여 정확한 결과를 얻을 수 있도록 해야 합니다.

     

     

    비교 연산자 (Relational Operators)

    비교 연산자는 피연산자들 사이의 관계를 비교하여 논리값(true/false)을 반환하는 연산자입니다. 자바에서는 다음과 같은 비교 연산자를 제공합니다.

    • 같음 비교 연산자 (==)
    • 같지 않음 비교 연산자 (!=)
    • 작음 비교 연산자 (<)
    • 큼 비교 연산자 (>)
    • 작거나 같음 비교 연산자 (<=)
    • 크거나 같음 비교 연산자 (>=)

    같음 비교 연산자(==)는 두 피연산자가 같으면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 10;
    boolean result = (a == b); // true

     

    같지 않음 비교 연산자(!=)는 두 피연산자가 같지 않으면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 20;
    boolean result = (a != b); // true

     

    작음 비교 연산자(<)는 첫 번째 피연산자가 두 번째 피연산자보다 작으면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 20;
    boolean result = (a < b); // true

     

    큼 비교 연산자(>)는 첫 번째 피연산자가 두 번째 피연산자보다 크면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 20;
    boolean result = (a > b); // false

     

    작거나 같음 비교 연산자(<=)는 첫 번째 피연산자가 두 번째 피연산자보다 작거나 같으면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 20;
    boolean result = (a <= b); // true

     

    크거나 같음 비교 연산자(>=)는 첫 번째 피연산자가 두 번째 피연산자보다 크거나 같으면 true를 반환합니다. 다음 예제를 참고하세요.

    int a = 10;
    int b = 20;
    boolean result = (a >= b); // false

     

    비교 연산자를 사용하여 조건문(if문, while문 등)을 구성할 수 있습니다. 예를 들어, 다음과 같은 코드를 작성하여 두 값을 비교하고 결과를 출력할 수 있습니다.

    int a = 10;
    int b = 20;
    if (a < b) {
       System.out.println("a는 b보다 작습니다.");
    } else {
       System.out.println("a는 b보다 크거나 같습니다.");
    }

     

    비교 연산자 사용 시 주의 사항

    비교 연산자를 사용할 때에는 주의해야 할 점이 있습니다. 이는 자바를 비롯한 대부분의 프로그래밍 언어에서 동일합니다. 주의해야 할 점은 다음과 같습니다.

     

    문자열 비교 시 주의

    문자열을 비교할 때는 같음 비교 연산자(==)를 사용하면 안 됩니다. 대신에, equals() 메소드를 사용해야 합니다. 이는 문자열이 가지고 있는 값 자체를 비교하는 것이 아니라, 문자열의 내용이 동일한지 비교합니다. 예를 들어, 다음 코드를 참고하세요.

    String str1 = "Hello";
    String str2 = "Hello";
    if (str1 == str2) {
        System.out.println("str1과 str2는 같습니다.");
    } else {
        System.out.println("str1과 str2는 다릅니다.");
    }

    위 코드는 "str1과 str2는 같습니다."를 출력합니다. 그러나, 다음 코드를 참고하세요.

    String str1 = "Hello";
    String str2 = new String("Hello");
    if (str1 == str2) {
        System.out.println("str1과 str2는 같습니다.");
    } else {
        System.out.println("str1과 str2는 다릅니다.");
    }

    위 코드는 "str1과 str2는 다릅니다."를 출력합니다. 이는 new 연산자를 사용하여 생성된 새로운 객체의 주소값이 다르기 때문입니다. 따라서, 문자열 비교 시에는 equals() 메소드를 사용하여 비교해야 합니다.

     

    부동 소수점 비교 시 주의

    부동 소수점 타입인 float, double의 경우, 정확한 값을 비교하는 것은 어렵습니다. 이는 컴퓨터가 실수를 이진수로 표현하는 방식 때문입니다. 예를 들어, 다음 코드를 참고하세요.

    double a = 0.1;
    double b = 0.2;
    if (a + b == 0.3) {
        System.out.println("a+b와 0.3은 같습니다.");
    } else {
        System.out.println("a+b와 0.3은 다릅니다.");
    }

    위 코드는 "a+b와 0.3은 다릅니다."를 출력합니다. 이는 0.1과 0.2가 이진수로 정확하게 표현되지 않기 때문입니다. 이러한 문제를 해결하기 위해서는 정확한 값을 비교하는 대신, 일정 범위 내의 오차를 허용하는 방식으로 비교해야 합니다. 예를 들어, 다음 코드를 참고하세요.

    double a = 0.1;
    double b = 0.2;
    if (Math.abs(a + b - 0.3) < 0.0001) {
        System.out.println("a+b와 0.3은 같습니다.");
    } else {
        System.out.println("a+b와 0.3은 다릅니다.");
    }

     

     

    댓글