본문 바로가기

분류 전체보기155

Effective Java 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이다. 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 다음 코드는 Boolan 클래스에서 발췌한 예이다. valueOf 메서드는 기본 타입 boolean 값을 받아서 Boolean 객체 참조를 반환한다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 정적 팩터리 메서드가 생성자보다 좋은 장점은? 장점 1. 이름을 가질 수 있다 생성자에 넘기는 매개변수와 생성자 자체만.. 2019. 4. 4.
Java 배열 원소 문자열 출력, toString() vs deepToString() 일차원 또는 다차원 배열의 원소를 문자열로 출력하는 방법에 대해 알아본다. Java 배열에 toString 메서드 배열의 원소 값이 어떻게 이루어졌는지 확인하기 위해서 아래 코드를 사용하면 원하는 결과의 형태로 출력이 되지 않는다. 배열의 원소가 아닌 hexadecimal 값이 출력된다. int[] arr = {1, 2, 3, 4, 5 }; System.out.println(arr.toString()); // hexadecimal 출력 ✅ 배열의 원소를 문자열로 출력하려면, Arrays 클래스의 toString, deepToString 메서드를 사용해야 한다. Arrays 클래스 toString, deepToString 메서드 Arrays 클래스의 toString과 deepToString 두 메서드 차이.. 2019. 4. 4.
Integer 클래스 valueOf, parseInt 메서드 차이점 Integer 클래스에는 valueOf, parseInt 메서드가 있다. 두 메서드는 매개 변수로 전달 받은 문자열(String) 값을 정수 형태로 반환다. 메서드 시그니처를 살펴보면, 두 메서드의 차이는 리턴 타입이 다르다는 것을 알 수 있다. valueOf 메서드 valueOf 메서드는 Integer 객체를 반환한다. 그리고 내부적으로 parseInt 메서드를 사용한다. public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); } parseInt 메서드 parseInt 메서드는 기본 자료형 int를 반환한다. 오버로딩 메서드 내부적으로 parseInt(s, 1.. 2019. 4. 4.
JDBC execute, executeQuery, executeUpdate 메서드 특징 execute, executeQuery, executeUpdate 메서드 JDBC Type 4 드라이버는 쿼리를 실행 할 수 있도록 execute, executeQuery, executeUpdate 3개의 메서드를 제공합니다. 이번 글에서는 각 메서드의 차이점과 특징에 대해 알아보겠습니다. 1. execute execute 메서드는 모든 유형의 SQL 문장과 함께 사용할 수 있으며, boolean 값을 반환합니다. 반환 값이 ‘true’이면, getResultSet 메서드를 사용함으로써 결과 집합을 얻을 수 있습니다. 반대로 반환 값이 ‘false’이면, 업데이트 개수 또는 결과가 없는 경우입니다. execute 메서드는 Select, Insert, Update, Delete, DDL 문을 모두 실행할 .. 2019. 4. 4.
Java TimeUnit 사용하기 TimeUnit java.util.concurrent 패키지에는 Enum 자료형의 TimeUnit이 있습니다. TimeUnit 종류는 다음과 같습니다. DAYS HOURS MINUTES MILLISECONDS MICROSECONDS NANOSECONDS TimeUnit은 시간 데이터를 가지고 있지 않기 때문에 입력으로 시간을 나타내는 값을 넣어줘야 합니다. public enum TimeUnit { /** * Time unit representing one thousandth of a microsecond */ NANOSECONDS { ... }, /** * Time unit representing one thousandth of a millisecond */ MICROSECONDS { ... }, /**.. 2019. 4. 4.