반응형

1. 함수와 메소드

  • 함수의 포인터 전달:
    • 자바에서 함수는 포인터(참조값)를 통해 전달된다. 이는 메소드에서 배열이나 객체를 인자로 전달할 때 실제 데이터가 아닌 참조가 전달됨을 의미한다.
    • 예를 들어, a.length를 사용하여 배열의 길이를 쉽게 구할 수 있다.
  • 메소드 오버로딩:
    • 동일한 이름의 메소드를 여러 개 정의할 수 있으며, 인자의 개수나 타입이 다르면 가능하다.
    • 리턴 타입이 다르더라도 메소드 이름이 동일하다면 오버로딩할 수 없다.
public void display(int a) { }
public void display(double a) { }

2. 메모리 관리

  • 가비지 컬렉션:
    • 자바 가상 머신(JVM)은 더 이상 사용되지 않는 객체(가비지)를 자동으로 메모리에서 삭제해준다. 프로그래머가 직접 메모리를 해제할 필요가 없다.
    • 가비지 컬렉션은 메모리 누수를 방지하고, 메모리 사용을 최적화하는 데 도움을 준다.
    • 특정 객체가 더 이상 참조되지 않으면, JVM의 가비지 컬렉터가 이를 감지하고 메모리를 회수한다.
  • 객체의 소멸:
    • 객체는 더 이상 사용되지 않거나 참조가 해제되면 소멸된다.
    • 자바에서는 finalize() 메소드를 사용하여 객체가 소멸되기 직전에 특정 작업을 수행할 수 있다. 그러나 이 메소드는 가비지 컬렉션에 의해 호출되므로 예측할 수 없다.
protected void finalize() throws Throwable {
    // 소멸 직전에 호출되는 코드
}

3. 클래스 및 접근 지정자

  • 디폴트 클래스:
    • 디폴트 접근 지정자를 가진 클래스는 같은 패키지 내에서만 접근할 수 있으며, 다른 패키지에서는 사용할 수 없다.
  • 접근 지정자:
    • public: 어떤 클래스에서도 접근 가능.
    • private: 같은 클래스 내에서만 접근 가능, 다른 패키지에서는 불가능.
    • 디폴트: 같은 패키지 내에서 접근 가능, 다른 패키지에서는 불가능.
    • protected: 다른 패키지에서는 불가능하지만, 상속받은 경우에는 접근 가능.

4. static과 final 키워드

  • static:
    • 클래스당 하나만 존재하며, 모든 객체가 공유한다.
    • static 변수는 클래스 이름으로 접근하는 것이 권장된다.
    • static 메소드는 static 변수만 사용할 수 있으며, 일반 메소드에서는 static 멤버에 접근할 수 있다.
    • static 메소드에서는 this 키워드를 사용할 수 없다.
       
      public class Example {
          static int count = 0;
          
          public static void increment() {
              count++;
          }
      }
  • final:
    • final 키워드는 클래스를 상속받지 못하게 하거나, 메소드를 오버라이딩하지 못하게 하거나, 변수를 상수로 만든다.
    • 변수가 final로 선언되면 값을 변경할 수 없다.
       
final int MAX_VALUE = 100;

5. 생성자

  • 생성자:
    • 객체가 생성될 때 호출되는 특별한 메소드이다. 객체 초기화를 담당한다.
    • 생성자는 클래스 이름과 동일하며, 리턴 타입이 없다.
    • 기본 생성자와 사용자 정의 생성자를 사용할 수 있다.
    • 생성자는 오버로딩이 가능하다.
       
public class MyClass {
    MyClass() { // 기본 생성자
        // 초기화 코드
    }
    
    MyClass(int a) { // 사용자 정의 생성자
        // 초기화 코드
    }
}

 

반응형

+ Recent posts