본문 바로가기

Java

(14)
BigDecimal BigDecimal 이란 BigDecimal은 Java에서 고정 소수점 연산을 정확하게 수행하기 위해 사용되는 클래스를 의미한다. double이나 float과 같은 부동 소수점 타입은 매우 큰 숫자나 매우 작은 숫자를 처리할 수 있지만 정확도가 떨어질 수 있다. 이러한 이유로 금융 계산과 같이 정확도가 중요한 경우 부동 소수점 타입을 사용해 연산을 처리하는 것은 적합하지 않다. 이때 BigDecimal을 사용하면 소수점 이하의 숫자도 정확하게 표현할 수 있다.   float과 double의 문제점 아래 코드를 보자일반적으로 우리는 연산의 결과가 0.3이 나오길 기대하지만 실제로는 0.30000000000000004 라는 이상한 값이 도출된다.double a = 0.1;double b = 0.2;Syste..
String과 String Constant Pool 들어가기 앞서 String을 보다 자세히 이해하기 위해서는 JVM 구조를 알고 있는 것이 좋다. JVM에 대한 자세한 내용을 알고 싶다면 https://jaystorage.tistory.com/8 을 참고하자 String 이란 Java에서 String은 문자열을 나타내는 객체이다. C/C++에서는 문자열이 단순히 char의 배열인데 반해, Java에서의 문자열은 java.lang안에 있는 String 클래스의 객체를 의미한다. 그렇기 때문에 String 은 int 와 char 와 같은 기본형(primitive type)이 아닌 참조형(reference type) 변수로 분류된다. (String의 첫 글자가 소문자가 아닌 대문자로 시작하는 이유가 이 때문이다.) Java의 String 은 불변(immuta..
상수(Constant)와 리터럴(Literal) 상수(Constant) 란 상수란 한 번 값을 할당하면 프로그램 실행 도중 그 값이 변경되지 않는 변수를 의미한다. Java 에서는 상수를 정의하기 위해서는 final 키워드를 변수 앞에 붙여 사용한다. 정적 상수를 선언할 때는 static final 키워드를 사용하며 대문자로 작성하고 공백은 ‘_’ 로 표시한다. 인스턴스 상수를 선언할 때는 final 키워드를 사용하며 일반 변수 처럼 카멜 케이스로 작성한다. 이러한 상수를 초기화 하는 방법은 다음과 같다. 1. 선언시 초기화 public static final int MAX_COUNT = 100; public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mydatabase"; 2. ..
GC(Garbage Collection, Garbage Collector) Garbage Collection 이란 Garbage Collection 이란 JVM의 Heap 영역에서 사용하지 않는 객체를 삭제하는 프로세스를 말한다. JVM의 Heap 영역에는 자바 프로그램을 실행하면서 생성된 모든 객체가 저장된다. 메모리 공간은 한정적이기 때문에 더 이상 쓰지 않는 객체를 제때 정리하지 않는다면 Out Of Memery Error (OOM)가 발생한다. 이를 막기 위해 JVM에는 자동으로 메모리 관리를 해주는 Garbage Collector가 존재한다. * C언어를 사용해본 사람이라면 free라는 명령어를 통해 직접 메모리를 해제해본 경험이 있을 것이다. 하지만 자바에서는 이 과정이 JVM에 의해 자동으로 일어난다. GC 동작 순서 GC 동작 순서는 다음과 같다.GC 수거 대상 ..
JVM 구조 JVM(Java Virtual Machine) 이란 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다. 자바 코드를 컴파일하여 .class 바이트 코드로 만든 후 실행시키면 이 코드가 JVM 환경에서 실행된다. 이렇듯 JVM이 자바와 OS 사이에서 중개자 역할을 하기 때문에 자바는 OS에 구애 받지 않는다. JVM의 구성 요소 Class loader System 클래스 로더는 컴파일 된 바이트코드(*.class)를 실행시점(RunTime)에 읽어들여서 메모리(Runtime Data Area)에 적절하게 배치한다. 작업은 로딩 -> 링크 -> 초기화 순서로 일어난다. 로딩 : 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 ..
에러(Error)와 예외(Exception) try-catch 문에 Exception 처리 과정을 만들고 특정 메소드에서 throws Exception 처리를 하는 건 대부분의 자바 개발자 분들에게는 익숙한 광경입니다. 그런데 정작 예외 처리 방법은 알고 있으면서 에러나 예외의 개념에 대해서는 다소 두루뭉술하게 알고 있는 경우가 많습니다. 오늘은 에러와 예외의 개념을 좀 더 명확하게 짚어보고자 합니다. 에러(Error) 자바에서 에러란 자바 프로그램 밖에서 발생한 문제로 인해 응용프로그램 실행 오류가 발생하는 것을 의미합니다. OS에 문제가 발생해 응용 프로그램에 문제가 발생하는 경우가 이에 해당한다고 볼 수 있습니다. 에러는 아무리 프로그램을 견고하게 만든다 한들 개발자가 직접 대처할 수 있는 방법이 없습니다. 예외(Exception) 잘못된 사..