Primitive Type | int, long, float, double |
Reference Type | Integer, Long, Float, Double |
레퍼런스 타입은 참조형 변수이므로 프리미티브 타입보다 연산속도가 더 느림
하지만 레퍼런스 타입은 컬렉션 프레임워크 등에서 정수형 또는 부동소수형을 저장할 때 사용
비트 연산자
int a = 13
int b = 4
System.out.println(a & b) # AND / 4
System.out.println(a | b) # OR / 13
System.out.println(a ^ b) # XOR / 9
System.out.println(~a) # NOT / -14
System.out.println(a << 2) # 왼쪽 시프트 (a에 2^2를 곱한 것과 동일) / 52
System.out.println(a >> 1) # 오른쪽 시프트 (a를 2^1로 나눈 것과 동일) / 6
엡실론(epsilon)
System.out.println(10.0 % 3.2) # 모듈러 / 0.39999999999999947
해당 결과 값이 0.4가 아니라 0.39999999999999947이라는 결과가 나오는데
이러한 이유는 부동소수형 데이터를 이진법으로 표현하기 때문 해당 과정에서 오차가 발생한다 이를 엡실론이라고 한다
이와 같은 현상 예제0.1을 3번 더한 a의 값에 0.3을 빼면 0이 아님
public class Solution {
public static void main(String[] args) {
double epsilon = 1E-5;
// 앱실론 출력
System.out.println(epsilon); // 1.0E-5
// 부동소수점 수 오차 검사
double a = 0.1 + 0.2;
double b = 0.3;
System.out.println(a - b); // 5.551115123125783E-17
if (a == b) {
System.out.println("a와 b는 같은 값입니다.");
} else {
System.out.println("a와 b는 다른 값입니다."); // 이 코드가 출력됨
}
if (Math.abs(a - b) < epsilon) {
System.out.println("a와 b는 같은 값입니다."); // 이 코드가 출력됨
} else {
System.out.println("a와 b는 다른 값입니다.");
}
}
}
'CS > 알고리즘' 카테고리의 다른 글
메서드 - 람다식 (compare) (0) | 2024.07.31 |
---|---|
문자열 (0) | 2024.07.31 |
정렬 알고리즘 2 (0) | 2024.07.30 |
기본 정렬 알고리즘 O(n^2) (0) | 2024.07.30 |
자료 구조 - 비선형 자료 구조 (트리) (0) | 2024.07.29 |