빌더를 사용하는 장점은 무엇인가? 1. setter 방식의 단점 기존의 자주 사용하던 자바빈즈 패턴(= setter) 의 경우, 객체 하나를 만드려면 여러개의 메서드를 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 된다. (=객체의 불변성이 깨진 상태) 멀티 스레드 환경에서 안정성을 얻으려면 추가 작업을 해줘야 한다. 예) 여러개의 스레드가 Student라는 객체에 접근했을 때 1번 스레드는 Student에 아무 값이 없는 빈 객체일수도 있고 2번 객체는 이름과 나이가 setter로 설정된 객체일 수도 있다. 하지만 setter를 제거하고 애초에 처음 만들때 값을 가진 객체로 생성하고 그 값이 불변하다면 Thread-safe 하다고 말할 수 있다. 2. 불변 객체 (1) ..
int 와 Integer의 차이 int (Primitive 자료형) '자료형' 을 의미한다. (int, float, long, double 와 같은 하나의 primitive 자료형을 의미합니다.) '산술 연산'이 가능합니다. null 로 초기화 불가능합니다. (0으로 초기화 가능합니다.) Integer (Wrapper 클래스-객체) Wrapper 클래스입니다. Unboxing 을 하지 않으면 산술 연산이 불가능하지만, null값은 처리할 수 있습니다. null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이. 직접적인 산술연산은 불가능합니다. Wrapper 클래스란? Wrapper 클래스란 자바 기본형을 클래스화 시킨 것으로 기본 데이터형을 값이 아닌 객체로 사용할 수 있는 방법을 제공한다. Jav..
enum으로 legacy code 와 신규 코드 매핑 📌갓블로그 참고 Legacy DB의 JPA Entity Mapping (Enum Converter 편) - 우아한형제들 기술 블로그 1. 기존 코드와 Scrapping 시 보내주는 코드 기존 코드 01, 02, 03... 같은 숫자 코드. 스크래핑시 보내주는 코드는 한글 이름으로 보내줌. ex) 계산서, 수정계산서 2. 신규 코드 enum으로 정의 public enum TaxBillType implements CommonType { @JsonProperty("세금계산서") TAX_A("세금계산서", "01"), @JsonProperty("수정세금계산서") TAX_B("수정세금계산서", "02"), @JsonProperty("계산서") TAX_C("계산..
String str = "홍길동--2001/03/14-서울시"; String split[] = str.split("-"); for (int i = 0; i >차이점 * split : null 문자를 같은 데이터 인정 * StringTokenizer : null문자를 같은 데이터 인정하지 않음 StringTokenizer st = new StringTokenizer(str, "-"); int len = st.countTokens(); System.out.println("len = " + len); System.out.println(st.nextToken()); Sy..
package encode; public class mainClass { public static void main(String[] args) { String str = "abc012"; String result, ori; result = encode(str); System.out.println(str + "를 암호화 : " + result); ori = code(result); System.out.println(result + "를 복호화 : " + ori); } // 암호화 static String encode(String src) { // 암호표 char abcCode[] = { // a ~ z '`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')'..
package fibonnaci; public class mainClass { public static void main(String[] args) { // 피보나치 // 0 1 1 2 3 5 8 13 21 34 // a b c long a, b, c; long arrNum[] = new long [30]; int w = 0; a = 0; b = 1; arrNum[0] = a; arrNum[1] = b; while( w < 28) { c = a + b; arrNum[w+2] = c; a = b; b = c; w++; } for (int i = 0; i < arrNum.length; i++) { System.out.println("피보나치 수열 " + (i+1) + " 항 = " + arrNum[i]); ..