본문 바로가기

java46

Effective Java 아이템 17. 변경 가능성을 최소화하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. 불변 클래스 인스터스의 내부 값을 수정할 수 없는 클래스를 불변 클래스라고 말한다. 불변 인스턴스는 처음 생성될 때 주어진 정보를 간직하고 객체가 파괴되는 순간까지 유지한다. 불변 클래스는 가변 클래스보다 구현 및 사용하기가 쉬우며, 오류가 발생할 여지도 적고 안전하다. 가변 클래스의 경우에는 인스턴스를 생성하고 나서 중간에 값이 변경될 수 있고, 이를 알아채지 못하면 오류를 발생하는 코드를 작성하기 쉽다. 클래스를 불변으로 만드는 규칙 5가지 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 모든 필드를 final로 선언한다. 모든 필드를 private으로 선언한다.. 2019. 4. 14.
“” 또는 생성자를 사용하여 Java String 문자열 생성 이 글은 programcreek 사이트 튜토리얼을 번역한 자료입니다. 원문은 https://www.programcreek.com/2014/03/create-java-string-by-double-quotes-vs-by-constructor/ 에서 확인할 수 있습니다. “” 또는 생성자를 사용하여 Java String 문자열 생성 Java에서는 String을 두 가지 방법으로 생성할 수 있다. String s1 = "Hello, lelecoder"; String s2 = new String("Hello, lelecoder"); “”(큰 따옴표)를 사용하는 것과 생성자를 사용하는 것의 차이점은 무엇일까요? 1. “”(큰 따옴표) vs 생성자 이 질문은 두 가지 간단한 예제를 통해 대답 할 수 있습니다. Ex.. 2019. 4. 14.
Effective Java 아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. class Point { public double x; public double y; } Point 클래스는 데이터 필드에 직접 접근할 수 있다. 이러한 클래스를 만들면, 객체 지향에서 캡슐화 장점을 사용할 수 없다. 또한, 불변 클래스를 만들 수 없다. Point 클래스의 접근 제한자는 package-private이기 때문에 패키지 내부에서만 사용할 수 있다. 이러한 클래스를 보면 필드를 모두 private을 변경하고, setter 또는 getter 접근자를 추가하고 싶어할 것이다. Point 클래스에 접근자를 추가하고 필드는 각 접근자 메서드를 통해 접근할 수 있도록 변경한 코드이다. class .. 2019. 4. 14.
Java Map 컬렉션(Collection) 개념 및 종류 Map 컬렉션 개념 Map 컬렉션은 키(Key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있다. 키와 값은 모두 객체이며, 키는 중복될 수 없다. 만약, 동일한 키를 가지고 있는 Entry 객체를 Map 컬렉션에 저장하면, 기존의 값은 없어지고 새로운 값으로 대치된다. Map 컬렉션 기능 및 종류 Map 컬렉션 종류로는 HashMap, HashTable, LinkedHashMap, Properties, TreeMap 등이 있다. 다음은 Map 컬렉션에서 공통적으로 사용 가능한 Map 인터페이스의 메서드다. 위에서 살펴본 클래스 모두 Map 인터페이스를 구현하기 때문에 Map 인터페이스에 선언된 메서드를 모두 가지고 있다. Map 인터페이스의 메서드들은 키로 객체를 관리하기 때.. 2019. 4. 11.
쓰레드(Thread) 종료 방법 stop 플래그, interrupt() 쓰레드(Thread)는 run() 메소드가 모두 실행되면 자동적으로 종료된다. 어떤 경우에는 모든 작업을 수행하기 전에 쓰레드 수행을 즉시 종료 시켜야하는 상황도 생길 수 있다. 예를 들어, 크롬에서 어떤 프로그램을 다운로드를 받는 도중에 사용자가 취소 버튼을 눌러서 다운로드 중인 작업을 취소할 수 있다. Thread에는 작업을 즉시 종료시키는 stop() 메서드를 제공했지만 이제는 deprecated이 되었다. deprecated가 되었다는 이유는 어느 문제로 인해서 해당 메서드를 사용하지 않는 것을 권고한다는 것을 의미한다. stop() 메서드는 쓰레드를 종료시킴에 따라 쓰레드가 사용중인 자원들을 불완전한 상태로 남겨 놓는다. 자원이란 것은 데이터베이스 연결 하는 커넥션 자원, 네트워크 연결을 사용하.. 2019. 4. 11.
List(리스트)를 Array(배열)로 변환 방법 List(리스트)를 Array(배열)로 변경할 때 사용하는 메서드로는 toArray()가 있다. toArray() 메서드 종류는 2가지가 있다. 첫 번째는 반환값이 T[]이고, 두 번째는 반환값이 Object[]이다. toArray(T[] a), toArray() 메서드의 차이점은 반환값이 다르다. 제네릭을 사용한 메서드는 런타임에 자료형 값을 이용하기 때문에 String 리스트를 이용할 경우에 String[] 배열이 반환된다. 그러므로 배열을 사용할 때 자료형 변환을 할 필요가 없다. 하지만, Object[] 배열을 반환하는 toArray() 메서드는 배열을 사용할 때 필요한 자료형으로 변환해서 사용해야 한다. public class ListToArrayMain { public static void m.. 2019. 4. 11.