이전 블로그에 있던 글입니다. 글쓴 시간 : 2007-03-22 11:43:48.0
잘 정리되어있다.
한번쯤 보고 넘어가도 좋은 내용들
- 1 객체지향의 구멍 static
- 1.1 Java는 객체지향 언어이다?
- 1.2 전역변수
- 2 Java는 Pointer언어이다? (Java에는 Pointer밖에 없다?)
- 2.1 Java는 primitive형을 제외하곤 모두 Pointer이다
- 2.2 null은 객체인가?
- 2.3 String에 대하여
- 2.4 객체지향의 캡슐화 파괴 주의
- 2.5 배열에 대하여
- 2.5.1 배열은 object 인가?
- 2.5.2 배열의 length는 왜 field(member variable)인가?
- 2.5.3 final과 배열에 대하여...
- 2.5.4 "Java에서의 다차원 배열은 존재하지 않는다."
- 2.6 인수(parameter/argument)전달의 개념
- 2.6.1 "Java에서 parameter(argument) 전달은 무조건 ’call by value’ 이다"
- 2.6.2 "C와 같은 언어는 static linking이지만, Java는 dynamic linking이다."
- 2.7 GC 에 대하여 잠깐!
- 2.7.1 "Garbage Collection은 만능이 아니다."
- 2.8 Java Pointer 결론
- 2.8.1 "결국 Java에는 pointer가 있는 것인가, 없는 것인가?"
- 3 상속과 interface의 문제점
- 3.1 상속
- 3.1.1 상속에 있어서의 생성자(constructor)
- 3.1.2 "down cast는 본질적으로 매우 위험하다"
- 3.1.3 "추상클래스에 final이 있으면 compile error이다"
- 3.2 interface
- 3.2.1 "interface는 interface일뿐 다중 상속의 대용품이 아니다."
- 3.3 상속 제대로 사용하기
- 4 package와 access 제어에 관한 이해
- 4.1 package
- 4.1.1 "package는 ’계층구조’ 인가?"
- 4.1.2 "compiler 가 인식하는 class검색 순서(소스코드내 클래스가 발견될 경우 그 클래스의 위치를 찾는 순서)"
- 4.2 access 제어
- 4.2.1 "interfacde member의 access 제어"
- 4.2.2 그렇다면 interface를 다른 package에 대하여 숨기고 싶으면 어떻게 하는가?
- 5 기타 Java 기능
- 5.1 Thread
- 5.1.1 "Multi Thread에서는 흐름은 복수이지만 data는 공유될 수 있다."
- 5.1.2 "Thread는 객체와 직교하는 개념이다."
- 5.1.3 "Synchronized 의 이해"
- 5.1.4 "Thread 사용법의 정석은?"
- 5.2 Exception
- 5.2.1 "finally 절은 반드시 어떠한 경우에도 실행되는가?"
- 5.2.2 "예외의 종류 3가지 (Error, RuntimeException, 그밖의 Exception)"
- 5.2.2.1 Error
- 5.2.2.2 RuntimeException
- 5.2.2.3 그밖의 Exception
- 5.2.3 "OutOfMemoryError는 어떻게 처리해야 하는가?"
- 5.3 Object Serialize
- 5.3.1 "Serialize를 위해서는 marker interface인 java.io.Serializable interface를 implements해야한다."
- 5.3.2 "super class는 Serializable이 아닌데 sub class만 Serializable인 경우의 문제점"
- 5.3.3 "transient field의 복원(?)관련"
- 5.3.4 "Stack Overflow에 주의하라!"
- 5.4 "nested class / inner class / 중첩클래스"
- 5.4.1 "중첩클래스의 개념"
- 5.4.2 "내부클래스는 부모의 참조를 몰래 보유하고 있다."
- 5.4.3 "local inner class에 대하여"
- 5.4.4 "anonymous class(무명클래스)에 대하여"
- 6 이래도 Java가 간단한가?
- 6.1 method overload 에서의 혼란?
- 6.1.1 "overload란 이름이 가고 인수가 다른 method에 compiler가 다른 이름을 붙이는 기능"
- 6.1.2 "그렇다면 overload에서 실제로 혼동되는 부분은 무엇인가?"
- 6.1.3 (참고) 또다른 혼동, overload한 method를 override 하면?
- 6.2 상속/override/은폐 에서의 복잡함
- 6.2.1 "Java class의 member 4 종류"
- 6.2.2 "override시 method 이름에 대한 함정"
- 6.2.3 "또다른 나의(?) 실수 - 말도 안되는 오타"
- 6.2.4 "static member를 instance를 경유하여 참조해서는 안 된다."
- 6.2.5 "super keyword는 부모의 this"
- 6.3 상속에 관한 또 다른 문제
- 6.4 그밖의 함정
- 6.4.1 "생성자에 void 를 붙인다면?"
- 6.4.2 "if / switch 의 함정"
- 7 Java 기능 적용 몇가지
- 7.1 대규모 개발에서 interface 분리하기
- 7.1.1 "interface 분리의 필요성"
- 7.2 Java에서의 열거형
- 7.3 Debug write
- 8 Java 5.0 Tiger 에 대하여
- 8.1 Working with java.util.Arrays
- 8.2 Using java.util.Queue interface
- 8.3 java.lang.StringBuilder 사용하기
- 8.4 Using Type-Safe Lists
- 8.5 Writing Generic Types
- 8.6 새로운 static final enum
- 8.7 Using java.util.EnumMap
- 8.8 Using java.util.EnumSet
- 8.9 Convert Primitives to Wrapper Types
- 8.10 Method Overload resolution in AutoBoxing
- 8.11 가변적인 argument 개수 ...
- 8.12 The Three Standard Annotation
- 8.13 Creating Custom Annotation Types
- 9 The for/in Statement
- 9.1 for/in 의 자주 사용되는 형태
- 10 Static Import
- 10.1 static member/method import
- 11 References
출처 : http://dna.daum.net/technote/java/PrincipleOfJavaInternalForDeveloperEasyToLost