본문 바로가기

Java45

Java 문자열 비교 compareTo, compareToIgnoreCase 메서드 Java에는 두 개의 문자열 값을 비교하여 int 형을 반환하는 메서드가 있다. 첫 번째는 compareTo 메서드이고, 두 번째는 compareToIgnoreCase 메서드이다. 두 메서드의 차이점은 비교할 때, 대소문자를 구분해서 비교하는지 여부이다. 이와 유사한 방식의 메서드로는 equals와 equalsIgnoreCase가 있다. compareTo 메서드 compareTo 메서드는 두 개의 문자열 값이 필요하다. 기준 문자열과 비교 문자열이다. 아래 코드에서는 str1이 기준 문자열이며, str2가 비교 문자열이다. str1.compareTo(str2) 메서드의 반환 값은 자료형은 int 형이며 값은 31이다. 31이라는 숫자는 str1, str2 두 문자열의 char로 비교한 결과를 나타낸다. .. 2019. 4. 15.
Effective Java 아이템 18. 상속보다는 컴포지션을 사용하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. 상속은 코드를 재사용하는 강력한 수단이지만 항상 최선의 방법은 아니다. 잘못 사용하게 되면 오류를 범하기 쉽다. 여기에서 말하는 상속은 "클래스가 다른 클래스를 확장(extends)하는" 구현 상속을 말한다. 클래스가 인터페이스를 구현하거나 또는 인터페이스가 또 다른 인터페이스를 확장하는 상속과는 무관하다. 상속을 이용하면 캡슐화 원칙을 위반하게 된다. 하위 클래스는 상위 클래스를 확장 했기 때문에 상위 클래스의 구현에 의존적일 수 밖에 없다. 따라서 상위 클래스 변화에 따라 하위 클래스도 발맞춰 변경 해야 한다. 그리고 다음 릴리스에서 상위 클래스에 새로운 메서드가 추가 되면, 하위 클래스는 추가된.. 2019. 4. 14.
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.