[이것이 자바다] 3장 정리

자바에서 산술 계산을 정확하게 하기 위해 실수 타입 대신 정수 연산이나 BigDecimal을 사용해야 한다. 또한, 나눗셈이나 나머지 연산에서 피연산자가 특정 조건을 만족할 경우 결과가 Infinity 또는 NaN이 될 수 있다. 문자열을 비교할 때는 ==, != 연산자보다는 equals() 메서드를 사용해야 한다.
Jan 04, 2024
[이것이 자바다] 3장 정리

AccuracyExample.java

package ch3; import java.math.*; public class AccuracyExample { public static void main(String[] args) { // int apple = 1; // double pieceUnit = 0.1; // 실수로는 정확한 연산이 불가능하다. // int number = 7; // double result = apple - number * pieceUnit; // 방법 1 // int apple = 1; // int number = 7; // double result = (apple * 10 - number) / 10.0; // 정수 연산으로 바꾸고 계산해야 한다. // 방법 2 BigDecimal apple = new BigDecimal(1); BigDecimal pieceUnit = new BigDecimal("0.1"); // BigDecimal은 문자열로 넣어도 변환해서 동작함 BigDecimal number = new BigDecimal(7); BigDecimal tmp = number.multiply(pieceUnit); BigDecimal result = apple.subtract(tmp); // BigDecimal로 계산한 모든 값은 정확하게 계산된다. System.out.println(result); } }
 

핵심 키워드

  • 산술 계산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다.
  • 정확한 계산이 필요한 경우 위 코드와 같이 두가지 방법을 이용한다.
    • 방법 1: 실수 연산을 정수 연산으로 변경해서 계산한다.
    • 방법 2: java.math의 BigDecimal 을 이용해서 값을 계산한다.
 

InfinityExam.java

package ch3; public class InfinityExam { public static void main(String[] args) { int a = 5; double b = 0.0; if(Double.isInfinite(a/b)) { System.out.println("a/b의 결과는 Infinity 입니다."); } if(Double.isNaN(a%b)) { System.out.println("a/b의 결과는 NaN 입니다."); } } }
 

핵심 키워드

  • 나눗셈 또는 나머지 연산에서 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f일 경우 연산의 결과가 Infinity 또는 NaN이 된다.
 

EqualExam.java

package ch3; import java.util.*; public class EqualExam { public static void main(String[] args) { String str = new String("abc"); // 객체 타입은 주소를 저장하므로 두 개는 같지 않다. System.out.println(str.equals("abc")); // equals 메서드를 쓰면 값을 비교할 수 있다. Scanner scan = new Scanner(System.in); System.out.print("패스워드를 입력하세요 -> "); String str1 = scan.nextLine(); if (str1.equals("codehows")) { System.out.println("환영합니다."); } else { System.out.println("잘못 입력했습니다."); } scan.close(); } }
 

핵심 키워드

  • 문자열을 비교할 때는 ==, != 연산자 대신 equals(), !equals() 메서드를 사용한다.
  • 객체 타입은 값이 아닌 주소를 저장하므로 객체 타입인 String을 ==로 비교할 수 없는 것이다.
 

결론

해당 문제를 풀면서 자바에서의 산술 계산, 비교 연산을 익힐 수 있었다.
 
Share article

More articles

See more posts

👨🏻‍💻DriedPollack's Blog