좋은글이 있어, 남겨놓습니다.

자바의 기본원리에 대해 잘 정리해 놓은 글이 있어 공유합니다. 오랜 경력(경험)자도 잘 모르는 사람이 많을것입니다.


목차

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://www.mimul.com/pebble/default/2006/10/27/1161901140000.html