본문 바로가기

Java45

Effective Java 아이템 11. equals를 재정의하려거든 hashCode도 재정의하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. 아이템 10에서 equals 메서드 재정의 규약에 대해서 알아봤다. 주의사항으로 equals 메서드를 재정의하는 경우 hashCode 메서드도 재정의해야 한다고 했다. equals를 재정의한 클래스에서는 hashCode도 재정의해야 한다. 이를 어길 경우에 HashMap, HashSet, HashTable 와 같은 해시 기반의 컬렉션에서 오동작이 발생한다. 다음은 Object 명세에서 발췌한 규약이다. 응용프로그램 실행 중에 같은 객체의 hashCode를 여러 번 호출하는 경우에 equals가 사용하는 정보들이 변경되지 않았다면, 언제나 동일한 해쉬값을 반환한다. 다만 프로그램이 재시작한 경우에는 동.. 2019. 4. 8.
Effective Java 아이템 10. equals는 일반 규약을 지켜 재정의하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. equals 메서드는 재정의하기 쉬워 보이지만 잘못된 재정의를 통해 프로그램 오류를 일으킬 수 있다. 이러한 문제를 회피하기 위한 가장 좋은 방법은 아예 재정의를 하지 않는 것이다. 그냥 두면 해당 인스턴스는 오직 자기 자신과만 같게 된다. equals 재정의 하기전 확인해야 할 사항 다음과 같은 조건 중 하나에 해당한다면 equals 메서드를 재정의하지 않는 것이 최선이다. 각각의 객체가 본질적으로 고유하다. 클래스에 논리적 동일성 검사 방법이 필요하지 않다. 상위 클래스에서 재정의한 equals가 하위 클래스에서도 사용하기에 적당하다. 클래스가 private 또는 package-private로 선.. 2019. 4. 8.
Java 시스템 속성 정보 가져오기 Java에서는 시스템 속성 정보를 가져올 수 있도록 System 클래스를 제공한다. System 클래스의 정적 메서드 getProperty를 이용하면 시스템 속성 정보를 가져올 수 있다. 시스템 속성 종류로는 OS 줄바꿈 문자, Java 버전, 사용자 작업 디렉토리, 사용자 홈 디렉토리 등이 있다. 시스템 속성 값 가져오기 System.getProperty 메서드의 인자로 시스템 속성의 키 값을 넘겨주면 해당하는 속성 값을 반환한다. String value = System.getProperty("key"); 시스템 프로퍼티 키 종류 Key Meaning file.separator Character that separates components of a file path java.class.path Pat.. 2019. 4. 8.
10진수를 2진수, 8진수, 16진수로 변환 소스 코드 public class Main { public static void main(String[] args) { // 10진수 int num = 120; String decimalToBinary = Integer.toBinaryString(num); String decimalToOctal = Integer.toOctalString(num); String decimalToHex = Integer.toHexString(num); System.out.println("10진수 -> 2진수, 8진수, 16진수로 변환"); System.out.println("10진수: " + num + ", 2진수: " + decimalToBinary); System.out.println("10진수: " + num + ",.. 2019. 4. 7.
char를 String으로 변환하기 Character 클래스 toString() 메서드 char ch = 'A'; String str = Character.toString(ch); String str2 = new Character(ch).toString(); Character 클래스의 toString() 메서드를 호출하면 내부적으로 String 클래스의 valueOf() 메서드를 호출한다. String 클래스 valueOf() 메서드 char ch = 'A'; char[] arrChar = new char[] {'a', 'b', 'c' }; String str = String.valueOf(ch); String str2 = String.valueOf(arrChar); String 클래스 생성자 String 클래스의 생성자를 이용하면 cha.. 2019. 4. 7.
String을 char로 변환하기 String을 char로 변환, charAt() String str = "Hello World"; // 'H' char ch = str.charAt(0); String을 char[]로 변환, toCharArray() String str = "Hello world"; // [H, e, l, l, o, , W, o, r, l, d] char[] arrChar = str.toCharArray(); 2019. 4. 7.