일목요연한 JAVA 실천편.

3168 단어 기술서Java
좋은 책으로 불리는 외침이 높아 자바를 복습하면서 읽었다.

일목요연한 자바 입문 실천편 제2판(유창 시리즈) 나는 확실히 좋은 책이라고 생각한다.지금까지 어떻게 알았는지 정리도 다 됐고.문장의 장법과 말의 순서가 모두 잘 정리되어 끝까지 똑똑히 읽을 수 있다. 다음은 이해의 모호함을 중심으로 한 비망록.(일부만 있지만...) toString()/equals()/hash Code() 무시 정보 제1부 제4장 class를 만들 때, 이 방법을 다시 쓰지 않으면, 모음집이 정상적으로 실행되지 않을 수도 있습니다. 예컨대 ArrayList#remove() 내부에서 equals()를 불러 등가판정을 하기 때문에 제대로 움직일 수 없다.그러나 등효 판정이 뚜렷하게 필요 없는 클래스에서는 다시 쓸 필요가 없다(데이터가 아닌 클래스) HashSet, HashMap, HashTable 방법은 원가가 높기 때문에 자주 실시하지 않는다.hashCode()를 사용하여 효율적인 비교를 수행합니다.그래서 반드시 과속으로 운전해야 한다. toString() 텍스트 출력. equals() 등가를 보증하다.개발자가 올바르다고 생각하는 등효 판정 알고리즘을 JVM에 전달하기 위한 것이다 hashCode() 등가의 실례에서 반드시 같은 해시 값을 되돌려야 한다.가능한 한 다른 실례. public class Employee { private String name; private int age; private String address; ... public String toString() { 이름:+this.나이:+this.age + 주소 + thisaddress; } public boolean equals(Object o) { if (o == this) return true; if (o == null) retrun false; if (!(o instanceof Employee)) return false; Employee r = (Employee) o; if (!this.name.trim().equals(r.name.trim())) return false; if (!this.age.equals(r.age)) return false; if (!this.address.trim().equals(r.address.trim())) return false; return true; } public int hashCode() { int result = 11; // 0 이외의 적정 값 result = result * 31 + name.hashCode(); // 홀수와 소수 result = result * 31 + age; result = result * 31 + address.hashCode(); return result; } } 이 근처에 있는 Effective Java도 몇 페이지로 설명되어 있습니다. reflection 정보 제1부 제7장 반사, 액세스 제어 사용(provate/proteted/...)구성원은 무시할 수 있습니다. 엄숙하다 제2부 제10장 예를 들어, 인스턴스를 파일에 있는 그대로 저장할 때 심각히 처리합니다. public class Employee implements Serializable { .... } public class Main { public static void main(String[] args) throws Exception { Employee employee1 = new Employee(); // Save FileOutputStream fos = new FileOutputStrem("c:¥¥data.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(employee1); oos.flush(); oos.close(); // Restore FileInputStream fis = new FileInputStream("c:¥¥data.dat"); ObjectInputStream ois = new ObjectInputStream(fish); Employee employee2 = (Employee)ois.readObject(); ois.close(); } } 주의점 * Serializable이 구현되지 않은 필드는 직렬화되지 않습니다.그 필드는 복원할 때 비어 있습니다. *Static 필드는 객체가 되지 않습니다. * 수정된 필드는 객체가 아닙니다.

좋은 웹페이지 즐겨찾기