@Test public void 문자열_비교() { // when String hello = "hello"; String hello2 = "hello"; //TODO 이 방법은 권장하지 않습니다. String hello3 = new String("hello"); //then assertThat(hello == hello3).isFalse(); assertThat(hello.equals(hello2)).isTrue(); assertThat(hello == hello2).isTrue(); assertThat(hello == hello2).isTrue(); } 동일한 기능을 함에도 여러번 생성하는 경우들이 있는데 하나씩 알아보자 1️⃣ 문자열 📌 문자열 생성 방법 String hello1 = "hello"; ..
애플리케이션을 만들다보면 어떤 인스턴스가 애플리케이션에서 하나만 있어야 하는 경우가 있다. 객체의 인스턴스가 오직 1개만 생성되는 디자인 패턴인 싱글턴 패턴을 이용할 수 있다. 대규모 트래픽을 처리할 수 있도록 spring에서 Application Context에 의해 등록된 빈은 싱글톤으로 관리하고 있다. 더보기 요청 1번에 5개의 객체가 만들어진다고 하고, 1초에 500번 요청이 온다고 하면 초당 2500개의 새로운 객체가 생성된다. 아무리 GC의 성능이 좋아졌다 하더라도 부하가 걸리면 감당이 힘들 것이다. 이러한 문제를 해결하고자 빈을 싱글톤 스코프로 관리하여 1개의 요청이 왔을 때 여러 쓰레드가 빈을 공유해 처리하도록 하였다. 출처: https://mangkyu.tistory.com/151 [Ma..
생성자와 정적 팩터리는 매개변수가 많을 때 적절히 대응하기 어렵다. public class NutritionFacts { private final int servingSize; // 필수 private final int servings; // 필수 private final int calories; // 선택 private final int fat; // 선택 private final int sodium; // 선택 private final int carbohydrate; // 선택 public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohydrate ) { this.servingSize ..
객체를 생성하는 방법 public 생성자 public 클래스 이름 () { } 정적 팩터리 메서드 (Boolean에서 사용하는 정적 펙터리 메서드) 디자인 패턴에서의 팩터리 메서드와 다르다. public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } 생성자 말고 정적 팩터리 메서드를 썻을 때 장점과 단점을 알아보자 장점 1. 이름을 가질 수 있다. 이름을 통해서 반환될 객체의 특성을 쉽게 묘사할 수 있다. 생성자, 정적 팩터리 메서드 중에서 “값이 소수인 BigInteger를 반환한다.”라는 뜻을 명확하게 표현하는지 생각해보면 이름의 장점을 얻을 수 있다. public BigInteger(int bitLength, int certain..
인터페이스를 바꾸면 인터페이스를 구현한 모든 클래스도 모두 고쳐야 하지만 java 8에서는 기본 구현을 포함하는 인터페이스를 정의하는 2가지 방법이 있다. 인터페이스 내부에 정적 메서드 사용하기 기본 구현을 제공할 수 있도록 디폴트 메서드 기능을 사용하기 기존 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. 더보기 각각의 호환성은 low level 공부를 좀 하고 다시 알아보자 디폴트 메서드란 무엇인가? 공개된 API에 새로운 메서드를 추가하면(구현하고 있는 클래스들 override해야되는) 문제로 java 8 에서는 호환성을 유지하면서 API를 바꿀 수 있도록 default method를 제공한다. default method는 인터페이스 구현체..
uhanuu
'책' 카테고리의 글 목록