전체 글
-
[Java] BigDecimal 클래스란 무엇일까?Language/Java 2021. 1. 25. 17:37
BigDecimal이란? BigDecimal 클래스는 돈 계산과 같이 중요한 작업을 할 때 사용합니다. float, double은 사용하면 안될까요? public class Test { public static void main(String[] args) { double value = 1.0; for (int i = 0; i < 10; ++i) { value += 0.1; System.out.println(value); } } } 위의 코드를 보겠습니다. 결과는 무엇이 나올까요? 2.0이 나올까요? 1.1 1.2000000000000002 1.3000000000000003 1.4000000000000004 1.5000000000000004 1.6000000000000005 1.700000000000000..
-
[Java] String 클래스 문자열 인코딩, 디코딩 과정Language/Java 2021. 1. 25. 17:35
문자열 인코딩, 디코딩 이란? 이번 글에서는 인코딩, 디코딩이란 무엇이고 인코딩, 디코딩 방식에는 어떤 것이 있는지 알아보겠습니다. 인코딩(Encoding)이란? 인코딩(Encoding)이란 문자를 컴퓨터가 이해하기 쉽게 변환하는 과정이라고 생각하면 쉬울 것 같습니다. 디코딩(Decoding)이란? 디코딩(Decoding)이란 일반적으로 암호화되어 있거나 컴퓨터가 이해할 수 있는 값들을 알아보기 쉽게 변환하는 것을 말합니다. 간단히 말하면 인코딩, 디코딩은 위와 같이 정의할 수 있습니다. 그러면 흔히 많이 들어본 UTF-8, UTF-16, EUC-KR 등등은 무엇일까요? 이것이 바로 인코딩 방식입니다. 위의 인코딩 방식에 대해서 알기 위해서는 먼저 아스키 코드, 유니 코드가 무엇인지 알아야 합니다. 많이..
-
[Java] String이 불변 객체인 이유는 무엇일까?Language/Java 2021. 1. 25. 17:25
String이 불변 객체인 이유 String 객체가 불변 객체라는 것은 다들 알고 있을 것입니다. 불변 개체는 완전히 생성된 후에도 내부 상태가 일정하게 유지되는 개체입니다. 즉, 객체가 변수에 할당되면 참조를 업데이트하거나 내부 상태를 어떤 방법으로도 변경할 수 없습니다. 그러면 자바에서는 왜 String을 불변 객체로 만들었을까요? 성능, 동기화, 캐싱, 보안의 이유로 불변 객체로 만들었는데 하나씩 알아보겠습니다. 1. 성능(Performance) 자바에서 문자열은 정말 많이 사용됩니다. 그렇기 때문에 자바에서는 상수 풀이라는 것을 만들었습니다. 상수 풀이 무엇인지 아래 코드를 보면서 알아보겠습니다. public class Test { public static void main(String[] arg..
-
[Java] Queue가 ArrayList 대신 LinkedList를 사용하는 이유Language/Java 2021. 1. 25. 17:22
Queue의 구현체가 ArrayList가 아니라 LinkedList인 이유는? 먼저 ArrayList와 LinkedList의 차이를 잘 모른다면 여기 에서 데이터를 먼저 읽고 오는 것을 추천드립니다. 간단하게 요약하자면 순차적으로 데이터를 추가/삭제 하는 경우에는 ArrayList를 사용하고, 처음, 중간 데이터를 추가/삭제하는 경우에는 LinkedList를 사용하라는 것입니다. 그러면 Queue에서는 왜 ArrayList 대신 LinkedList를 사용했는지에 대해서 알아보겠습니다. Queue 구조 큐의 구조는 한쪽에서는 삽입만 일어나고 한쪽에서는 삭제만 하는 자료구조 입니다. 즉, 먼저 들어간 것이 먼저 나오는 FIFO 구조입니다. (예시로는 줄서기, 프린터 출력 같은 것이 있습니다.) 즉, 큐는 항..