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

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

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

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

 

 

연산자(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은 다릅니다.");
}

 

 

반응형

댓글