Java

반응형

1. 클래스 / 객체(오브젝트) / 인스턴스 차이

2. final / finally/ finalize 차이

3. 추상클래스 / 인터페이스 차이

4. 다형성(오버로딩, 오버라이드, 형 변환)

5. static : 클래스에 위치 (메소드 영역) --> 한 클래스에서 생성된 객체들이 공유.

    main함수도 static. 클래스 로더에 의해 가장 먼저 적재(로딩)

    객체 생성없이 바로 사용할 수 있다. 대신 인스턴스 멤버(필드, 메소드)에 접근 불가.

    인스턴스 멤버는 객체 생성 후 사용할 수 있음.(객체 고유의 값들..)

    인스턴스 메소드는 객체들이 공유하는 부분이므로 메소드영역에 저장되어 객체들이 공유

6. 접근제한자(Access Modifier) : public < protected(동일 패키지 & 다른 패키지의 자식클래스) < default(동일 패키지) < private(클래스 내부)

7. 자동타입변환.

    동물 ---> 고양이("샘")  

           ---> 개

   Animal animal = new Cat("샘"); //자식 객체를 부모 객체로 취급. 

   --> 이렇게 되면 자식에서 재정의된 메소드 및 부모 메소드만 사용 가능. 자식 고유의 메소드 사용불가.

   --> 자식꺼 쓰고 싶으면 다시 자식 타입으로 강제타입변환 해야된다. 

   Cat cat = (Cat) animal;

   Dog dog = (Dog) animal; --> ClassCastException 발생.

8. 추상클래스 : 실체클래스가 공통적으로 가지는 기능에 대해 확장. 추상메소드, 일반메소드로 구성

    인터페이스 : 추상메소드와 상수로만 구성. 구현을 위한 것. 다른 구현 객체들의 공통된 동작을 위함. 다중 상속 가능.

    Abstract Class, Interface 모두 javac에 의해 .java에서 .class파일로 컴파일.

 

9. 익명 객체 : 클래스 정의 없이 특정 위치에서만 사용하기 위해 필요한 부분에서만 사용하는 객체

10. 로컬클래스 : 메소드 내에 위치한 클래스. 메소드 내 인스턴스에 접근 불가. final로 정의된 변수에만 접근가능. java8부터 메소드 내에 final 안써도 자동으로 final화 되어 컴파일된다.(?) 클래스이므로 메소드 영역에 저장. 메소드는 종료 후 스택에서 빠지게 되므로 값을 못읽음. 하지만 상수라면 메소드영역의 constant pool에 저장되어 읽어오기 가능.

 

11. 예외 -> 예외 클래스로 구성. 상위 : java.lang.Exception

    Checked Exception : 컴파일 타임에 잡히는 예외

    Non-Checked Exeption(java.lang.RuntimeException) : ClassCastE(타입변환 시), NumberFormatE(문자형 숫자가 아닌 문자를 숫자로 변경할 시), ArrayOutOfBoundE(인덱스 넘어갈 시), NullPointerE(Null을 가리키고 있는 거 사용할 때, ArithmeticE(정수형에서 / by zero) etc...

     실수형에서 0으로 나누게 되면 무한대 출력. (C++, Java) / 파이썬은 에러남

 

12. 제네릭 : 컴파일타임에 안잡히는 오류 -> 런타임 오류를 방지하기 위해 변수, 메소드, 클래스 선언 시 쓰이게 될 타입을 미리 지정함.

                 (타입은 참조형으로 표시. String, Array, Wrapper(Integer, Character etc)

13. AOP : Aspect Oriented Programming. OOP를 더 OOP 답게.

             핵심모듈과 공통 모듈을 분리해서 개발. 공통모듈 : 핵심모듈과 구분되는 로깅, 예외처리 등. 

 

14. Try - Catch - Finally ===> Try-with-resources

 

15. Collection Framework

 

List 

- ArrayList (가변형. Array는 고정형)

- Vector (동기화)

- LinkedList (우리가 아는 링크드 리스트. 검색이 O(n))

 

Set

인덱스가 없어 iterator호출해서 접근

-HashSet (Hashcode(), equals()로 중복 데이터 검사)

-TreeSet (레드블랙트리 구조)

 

Map

-HashMap (파이썬 딕셔너리 느낌. 동기화 검사하는 로직이 없으므로 싱글 스레드에서 HashTable보다 빠름.)

-HashTable (동기화)

-ConcurrentHashMap (동기화, 해쉬테이블보다 빠르다. 자료구조 전체에 락을 안걸어서)

-TreeMap (레드블랙트리 구조)

-LinkedHashMap (순서 지킴. 파이썬 defaultDict())

 

 

16. JVM 구조

 

17. String(immutable) /, StringBuilder, StringBuffer(동기) (mutable)

반응형

'DevOps' 카테고리의 다른 글

기타  (0) 2020.11.21
데이터베이스  (0) 2020.11.20
컴퓨터 네트워크  (0) 2020.11.20
운영체제(OS) / 컴퓨터구조  (0) 2020.11.20
자료구조, 알고리즘  (0) 2020.11.20