분류 전체보기36 [Effective java] 불필요한 객체 생성 피하기 목표 똑같은 기능의 객체를 여러번 생성하는 것 보단 객체 하나를 재사용하는 것이 나을 때가 많습니다. 이 점을 고려할 때. 피해야하는 방법과 권장되는 방법 등을 알아봅시다. 1. 문자열 생성에서의 불필요한 객체 생성 피하기 문자열을 선언하는 방법에는 String 리터럴과 new String() 두 가지가 있습니다. "abc" 리터럴 값을 사용하여 새로운 인스턴스를 만드는 대신 하나의 String인스턴스를 사용할 수 있습니다. 반면, new String("abc")는 새로운 인스턴스를 만들기 때문에 이를 반복문이나 빈번하게 호출되는 메서드 안에서 호출하게 된다면 불필요하게 매모리를 낭비하게 될 수 있습니다. 참고: "abc" vs new String("abc") 더 알아보기 https://je-pa.tis.. 2023. 8. 22. [JAVA] Supplier<T> 인터페이스 Supplier 인터페이스는 Java 8부터 추가된 함수형 인터페이스(Functional Interface) 중 하나로서, 데이터 공급자 역할을 수행하는 함수를 나타냅니다. Supplier 인터페이스의 메소드인 get()은 매개변수를 받지 않고, 데이터 값을 반환합니다. 즉, 파라미터를 받지 않고 값을 리턴하는 메서드를 나타내기 위해 사용됩니다. Supplier는 다양한 기능과 유연성을 제공하며, 람다 표현식 및 스트림 API와 함께 사용하여 코드를 간결하고 가독성 좋게 작성할 수 있습니다. package java.util.function; @FunctionalInterface public interface Supplier { /** * Gets a result. * * @return a result *.. 2023. 8. 22. [JAVA] 리터럴 String vs String 객체 목표 문자열을 선언하는 방법에는 String 리터럴과 new String() 두 가지가 있다. 둘의 차이를 알아보자. String 리터럴 값 Java의 문자열 리터럴은 상수로 취급되며, 이러한 문자열들은 JVM 내부의 특정 영역인 상수 풀(String pool)이라고 하는 공유된 메모리 영역에 해당 문자열이 저장됩니다. 따라서 동일한 값을 가진 다른 변수가 같은 메모리 위치를 참조하게 되어 메모리를 절약할 수 있습니다. 참고: JAVA7부터 문자열 상수풀 위치가 Perm영역에서 Heap영역으로 옮겨졌다고 한다. String 객체 새로운 String 객체를 생성합니다. 이렇게 하면 항상 새로운 객체가 만들어지기 때문에, 같은 값의 문자열도 매번 새로운 메모리 공간에 할당됩니다. 즉, 가상 머신 안에서 이와.. 2023. 8. 22. [Effective java] 필요한 자원, 의존 객체 주입 사용하기 목표 A를 사용하기 위해서는 B가 필요할 때, A는 자원 B를 의존한다고 볼 수 있습니다. 이렇게 많은 클래스는 하나 이상의 자원에 의존합니다. 의존 자원을 어떻게 사용하는 것이 좋을지 알아봅시다. 책을 읽고 정리하자! 의존 객체 주입법에 대해 알아보자. 의존하는 자원을 직접 명시한다면? 맞춤법 검사기(spellChecker)는 맞춤법을 검사하기 위해 사전(dictionary)이 필요할 겁니다. 먼저 검사기에서 직접 자원을 명시하여 사용하는 법을 살펴봅시다! 1. 정적 유틸리티 클래스로 구현했을 때 // 객체 생성을 방지한 정적메서드와 필드만을 담은 유틸리티 클래스(SpellChecker)로 구현한 예 public class SpellChecker{ private static final Lexicon d.. 2023. 8. 21. 이전 1 2 3 4 5 ··· 9 다음 LIST