Programming/Java 66

String class가 final인 이유, String의 불변성 (Immutable)

Java의 final에 대해 공부하면서 String class가 대표적인 final class라는 것을 알게 되었고, String class가 final으로 정의된 이유가 궁금하여 찾아보게 되었습니다. Java String String str1 = new String("Hello"); // new 연산자를 통해 객체 생성 String str2 = "Hello"; // 리터럴 형태로 바로 할당 java에서 문자열(String) 타입의 특징은 참조 타입임에도 불구하고 직접 new 연산자를 통해 객체를 생성하는 방법이 아닌, 문자열 리터럴 형태로 사용하는 것이 허용된다는 것입니다. String의 불변성 (Immutable) String 객체는 최초 한 번 생성되면 절대로 그 값이 변하지 않습니다. String..

Programming/Java 2021.08.24

Static, Stack, Heap / Java 메모리 영역의 구조와 특징

Java를 사용하면서 알아야 할 메모리 구조 및 특징에 대해서 정리합니다. (Static, Stack, Heap) 먼저 프로그램을 구동하기 위해서는 운영체제(OS)가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 줍니다. 메모리는 컴퓨터에 있어 가장 핵심이 되는 부품이고, CPU가 처리할 데이터가 임시로 저장되는 공간입니다. 동작은 하드디스크에 저장된 데이터가 메모리에 올라가서 실행되며, 메모리(RAM)를 주 기억 장치라고 부릅니다. 메모리는 사용할 수 있는 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우됩니다. 따라서 Java 어플리케이션에서 메모리를 효율적으로 사용하기 위해서는 메모리 구조와 특징에 대해 이해할 필요가 있습니다. 1. Static..

Programming/Java 2021.08.23

Java 빌더 패턴 (Builder Pattern)이란?

Java 빌더 패턴 (Builder Pattern) 이란? Java에서는 클래스를 객체화하는 '점층적 생성자 패턴', '자바 빈즈 패턴', '빌더 패턴' 3가지 패턴이 존재합니다. https://wildeveloperetrain.tistory.com/29 (Java) 점층적 생성자 패턴 & 자바 빈즈 패턴 프로그래밍에서 Class를 설계하다 보면, 필수로 받아야 할 인자와 선택적으로 받아야 할 인자가 구분됩니다. 그리고 Java에서는 이렇게 설계된 다양한 형태의 Class들을 객체화하는 3가지 패턴이 존 wildeveloperetrain.tistory.com 이전 포스팅의 점층적 생성자 패턴, 자바 빈즈 패턴에 이어 점층적 생성자 패턴의 안전성과 자바 빈즈 패턴의 가독성을 더한 빌더 패턴 (Builder..

Programming/Java 2021.08.22

(Java) 점층적 생성자 패턴 & 자바 빈즈 패턴

프로그래밍에서 Class를 설계하다 보면, 필수로 받아야 할 인자와 선택적으로 받아야 할 인자가 구분됩니다. 그리고 Java에서는 이렇게 설계된 다양한 형태의 Class들을 객체화하는 3가지 패턴이 존재합니다. '점층적 생성자 패턴', '자바 빈즈 패턴', '빌더 패턴' 먼저 점층적 생성자 패턴 (Telescoping Constructor Pattern)과 자바 빈즈 패턴 (Java Beans Pattern)을 알아보고, 다음으로 점층적 생성자 패턴의 안전성과 자바 빈즈 패턴의 가독성을 더한 빌더 패턴 (Builder Pattern)에 대해서 알아보겠습니다. 점층적 생성자 패턴 (Telescoping Constructor Pattern) 이란? public class Member { private Str..

Programming/Java 2021.08.21

Java Primitive Type (원시 타입), Wrapper Class (래퍼 클래스) 차이점

프로젝트를 하면서 대부분의 경우에 Long을 쓰면서 가끔 어떤 경우에서는 IntelliJ가 자동으로 Long을 long으로 바꿔주는 경우가 있었습니다. 왜 그런지 이유를 몰랐고, 궁금하지도 않았다는 것을 반성하며 Java의 원시 타입 Primitive Type과 래퍼 클래스 Wrapper Class의 차이에 대해서 알아보았습니다. 먼저 Primitive Type, Wrapper Class에 어떤 것들이 해당하는지 보겠습니다. Primitive Type Wrapper Class byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character 원시 타입으로는 byte, short, int, l..

Programming/Java 2021.08.04

Java 문자열을 다루는 클래스 String, StringBuilder, StringBuffer 차이점은 무엇일까?

자바에서 문자열을 다루는 클래스는 String, StringBuilder, StringBuffer 세가지가 있습니다. 이 세가지 클래스의 차이점과 어떤 경우에 어떤 클래스를 사용하는 것이 적합한지 알아봅니다. String 먼저 String 입니다. String은 불변 (immutable) 의 속성을 가지고 있습니다. 문자열이 변할 때 마다 새로운 객체 (인스턴스) 를 생성합니다. StringBuilder, StringBuffer 반면 StringBuilder, StringBuffer는 가변 (mutable) 의 속성을 가지고 있습니다. 둘 다 문자열의 변경이 가능하며, 내부에 char 배열 공간이 존재하기 때문에 문자열의 크기가 늘어나면 자동으로 증가시켜주고, 배열이 꽉 차면 자동으로 늘려줍니다. Str..

Programming/Java 2021.07.16