PROGRAMMING LANGUAGE/JAVA

    [effective JAVA] 아이템6: 불필요한 객체 생성을 피하라

    객체를 만들어야 할때와 만들지 말아야 할 때를 구분하자. 올바른 객체 생성 방법과 불필요한 생성을 피하자. 객체가 제때 파괴됨을 보장하고, 파괴 전 수행해야 할 정리 작업을 관리하자. 아이템6: 불필요한 객체 생성을 피하라 기존 객체를 재사용해야 한다면 새로운 객체를 만들지 마라 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많습니다. 특히, 불변 객체는 언제든 재사용할 수 있습니다. String s = "test"; 이 코드는 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용합니다. 위 구조로 String 인스턴스를 생성한다면, 동일한 문자열 리터럴을 사용하는 모든 코드가 같은 객체 재사용함이 보장됩니다. String 클래스는 public final..

    [effective JAVA] 아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라

    객체를 만들어야 할때와 만들지 말아야 할 때를 구분하자. 올바른 객체 생성 방법과 불필요한 생성을 피하자. 객체가 제때 파괴됨을 보장하고, 파괴 전 수행해야 할 정리 작업을 관리하자. 아이템1: 생성자 대신 정적 팩토리 메소드를 고려하라 특정 클래스의 인스턴스를 얻는 방법 중 가장 먼저 떠오르는 건 public 생성자을 이용한 방법일 것입니다. 하지만, 모든 개발자들은 정적 팩토리 메소드(static factory method)를 통해 인스턴스를 얻는 방법 역시 알고 있어야 합니다. 정적 팩토리 메소드를 통해 인스턴스를 제공하는 방식에는 장단점이 존재합니다. 정적 팩토리 메소드 장점 1. 이름을 가질 수 있다. 정적 팩토리 메소드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사가 가능합니다. 특정 자..

    [JAVA] 자바가 확장한 객체 지향

    들어가기 전에 이번 포스팅은 스프링 입문을 위한 자바 객체 지향의 원리(김종민 저)를 읽으면서 자바가 제공하는 객체 지향 키워드 및 연산자에 대해 정리한 글입니다. 이해한 내용을 토대로 정리한 글이기 때문에, 책으로 읽어보는 것을 권장합니다. abstract 키워드 - 추상 메소드와 추상 클래스 추상 메소드(Abstract Method)란, 선언부는 있는데 구현부가 없는 메소드를 의미합니다. 추상 메소드를 하나라도 가지고 있다면 해당 클래스는 추상 클래스(Abstract Class)로 선언되어야 합니다. 구현 내용 없이 선언만 되어 있는 메소드가 필요한 이유에 대해 알아보도록 하겠습니다. 만약 아래와 같이 Animal 클래스 배열이 존재하고 각 배열의 원소는 Animal 클래스를 상속 받은 클래스의 객체..

    [JAVA] 객체 지향 4대 특성(캡! 상추다: 캡슐화/상속/추상화/다형성)

    들어가기 전에 이번 포스팅은 스프링 입문을 위한 자바 객체 지향의 원리(김종민 저)를 읽으면서 객체 지향 4대 특성에 대해 정리한 글입니다. 이해한 내용을 토대로 정리한 글이기 때문에, 책으로 읽어보는 것을 권장합니다. 기본 개념 잡기 객체(object)와 분류(class) 먼저, 실생활로 객체지향의 객체(object)와 분류(class)에 대해 간단히 살펴보겠습니다. 세상에 존재하는 모든 것은 사물(개체, 객체, object)입니다. 각각의 사물은 고유하며, 속성 및 행위를 가집니다. 사물을 하나하나 인지하기 보다는 사물을 분류(class)하여 이해를 합니다. 예) 밤하늘에 반짝이는 사물들을 별이라고 분류합니다. 객체란, 세상에 존재하는 유일무이한 사물(개체) 클래스란, 같은 속성과 기능을 가진 객체를..

    [JAVA] 자바 프로그램 개발 및 구동

    들어가기 전에 이번 포스팅은 스프링 입문을 위한 자바 객체 지향의 원리(김종민 저)를 읽으면서 자바 프로그램 개발 및 구동에 대해 정리한 글입니다. 이해한 내용을 토대로 정리한 글이기 때문에, 책으로 읽어보는 것을 권장합니다. 자바 프로그램 구동 방식(Write Once Run Anywhere) 현실 세계 가상 세계(자바) 소프트웨어 개발 도구 JDK(Java Development Kit, 자바 개발 도구) 운영체제 JRE(Java Runtime Environment, 자바 실행 환경) 하드웨어 (물리적 컴퓨터) JVM(Java Virtual Machine, 자바 가상 기계) 현실 세계에서 소프트웨어는 개발자가 개발 도구를 이용해 개발하고 운영체제를 통해 물리적 컴퓨터인 하드웨어 상에서 구동됩니다. 자바..

    [JAVA 개념] ArrayList 초기화

    ArrayList 객체 생성 및 초기화(기본형) List arr = new ArrayList(); arr.add(1); arr.add(2); arr.add(3); ArrayList 한 줄로 초기화 List arr = new ArrayList(Arrays.asList(1,2,3)); ArrayList의 constructor를 이용하면 추후 Arrays.asList를 통해 만들어진 리스트에 값을 추가할 수 있습니다. List arr = Arrays.asList(1, 2, 3); Arrays.asList()로 생성한 리스트는 값을 추가할 수 없습니다. 만약 위와 같은 경우에 arr.add(4);를 하게 되면 하기와 같은 runtime error가 발생합니다. ArrayList 중괄호 초기화 List arr =..

    [JAVA 개념] 길이 관련 메소드 사용법(length, length(), size())

    length 배열의 길이를 알고자 할 때 사용 String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; System.out.println(cars.length); // Outputs 4 length() String과 관련된 객체의 길이를 알고자 할 때 사용 - String, StringBuilder .. String txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; System.out.println("The length of the txt string is: " + txt.length()); size() Collection 객체의 길이를 알고자 할 때 사용 - ArrayList, Set .. List cars = new ArrayList(); cars.si..

    [JAVA 1.8↑] LocalDateTime, LocalDate, LocalTime

    LocalDate import할 패키지명 import java.time.LocalDate; 사용 예 LocalDate currentDate = LocalDate.now(); // 현재 날짜가 넣어진 LocalDate 객체 리턴(예: 2020-12-10) LocalDate startDate = LocalDate.of(2020,12,9); // of 메소드의 파라미터로 넘어간 값에 따라 날짜 저장된 LocalDate 객체 리턴 LocalDate 자료형 타입 변환 LocalDate → String (YYYYMMdd) LocalDate.of(2020,12,10).format(DateTimeFormatter.BASIC_ISO_DATE); LocalDate → String (원하는 형식 - 예: yyyy-MM-dd..