🚀 bitcamp TIL (21.07.27)
TIL

🚀 bitcamp TIL (21.07.27)

📌 알게 된 개념들


  1. 클래스를 로딩하는 시점을 파악하라
  2. 필드 초기화, 스태틱 초기화 블럭, 인스턴스 초기화 블럭, 생성자에 대한 이해를 한다.
  • 그림을 그린다 = 시각적으로 남겨라 기억에 오래 남는다.
  • 메모리는 2차원이 아니다 바이트배열의 집합이다
    • 상대적인 주소 = offset (용어기억)
  • new = 인스턴스 생성 + 부가 정보(어떤 클래스의 어떤 인스턴스필드인지등) 기억하자!
    • 즉 안에 인스턴스 필드가 없어도 인스턴스가
      heap에 생성된다.
  • 레퍼런스 변수를 선언할 때는 클래스를 로딩하지 않는다.
    // 예) A obj;
    • static필드 , instance필드 = 자동 초기화 됨 , 로컬변수는 자동 초기화 안됨
  • 코드 타입 숫자로 한다 => 상수로 지정 (의미있는 변수 이름으로)

실무

=> 일단 인스턴스 메서드로 무조건 만들라!

=> 인스턴스 변수를 완전히 사용하지 않음을 확신하면
그 때 클래스 메서드로 전환하라!

  • this는 무조건 붙여야하는데 생략하면 컴파일러가 자동으로 붙여준다.
  • 메서드 호출할 때 넘겨주는 주소가 무엇인지에 따라 this에 들어올 주소가 다르다.
  • class 파일을 뜯어보면 this가 있다.
  • 이름에 인스턴스가 붙었다고 해서 인스턴스 메서드가 Heap에 만들어지는 것이라는 착각을 하지 마라!
  • 클래스의 모든 코드는 Method Area 영역에 로딩 된다.
  • 인스턴스 메서드를 호출하려면 인스턴스 주소를 주면서 호출해야한다!!
  • 모든 클래스는 반드시 한 개 이상의 생성자가 있다.
  • 생성된 인스턴스가 제대로 쓰일 수 있도록 유효한 값으로 초기화시키는 일을 한다.
  • 생성자 내에 중복되는 코드가 있을떄 this()로 호출한다.
  • package member class, top level class
  • nested class
  • static 블록을 여러개 만들면?
    • static 블록은 여러개 만들어도 어차피 컴파일 되면 하나로 합쳐진다. (여러개 만들 필요 없겠죠?)
  • 클래스 로딩 > 스태틱 변수 > 스태틱 블럭
    • 클래스가 로딩될 때 스태틱 초기화 블록은 실행된다
  • 클래스가 로딩하는 시점?
    1. 클래스 멤버(필드와 메서드)를 최초로 사용할 때
    2. 해당 클래스의 인스턴스를 최초로 생성할 때
  • 레퍼런스를 선언하면 클래스가 로딩된다?
    • 로딩되지 않는다.
  • 클래스는 한번 로딩되면 다시 로딩되지 않는다.
  • 클래스의 정보를 다루는 클래스 Class
  • 인스턴스 초기화 블럭 = 생성자 안에 들어감
  • 여러 개의 생성자가 있으면,
    • 존재하는 모든 생성자의 앞 부분에 삽입된다.
  • 모든 생성자에 공통적으로 들어갈 것이라면 별도의 인스턴스 초기화 블럭으로 뺀다.
  • 인스턴스 초기화 블럭이든 필드 초기화 문장이든 선언된 순서대로 생성자 앞쪽 배치
    • 인스턴스 블록 <= 실무에서는 인스턴스 블록을 잘 사용하지 않는다. 대신에 생성자를 주로 사용한다

'TIL' 카테고리의 다른 글

🚀 bitcamp TIL (21.07.29)  (0) 2021.07.29
🚀 bitcamp TIL (21.07.28)  (0) 2021.07.28
🚀 bitcamp TIL (21.07.26)  (0) 2021.07.26
🚀 bitcamp TIL (21.07.23)  (0) 2021.07.23
🚀 bitcamp TIL (21.07.22)  (0) 2021.07.22