본문 바로가기

Java/Java 정리

제어자 (modifier)

*** 접근 지정자***

1. public : + 제약x 서로 다른 패키지도 접근 가능.

2. protected #  같은 패키지만 접근 가능, 패키지가 달라도 접근 가능할 경우는 상속 관계여야한다.

3. default  같은 패키지만 접근 가능

4. private:  -  같은 클래스에서만 접근 가능

위 접근지정자 순으로 public -> private (1~4번순)으로 갈수록 제약이 커진다.

 

***static ***

클래스 작성의 경우 outer 클래스 및 inner 클래스가 있음

위 두가지 클래스를 동시 사용시 inner 클래스에서만 사용 가능하다.

메서드에서 사용할 시, 객체 생성 없이 메서드를 사용하기 위함.

변수: 프로그램 내에서 특정 데이터 값을 계속 유지할 목적이라면 static 변수가 적합.

static 키워드는 프로그램 실행 시 단 한번 생성됨. (method area 메모리 영역)

인스턴스 메서드 및 변수는 객체 생성(new)시 생성  -- heap 메모리 영역 , 객체 소멸시 삭제

static 키워드의 경우 클래스명으로 바로 접근 가능하다

인스턴스 키워드의 경우 객체 명으로 접근 가능하다.

static에서 힙쪽으로는 접근 x

힙에서는 static으로 접근 가능 

why? ==>  static은 이미 생성이 돼있는 상태이고, 힙은 new 생성시 후에 만들어지기 때문이다.

 

메모리 구조

메소드 에어리어(method area) 클래스 영역, static 영역, 상수 영역(final, contant) .. 으로 구성됨}

 

객체의 소멸 ==> 자바의 가비지컬렉션(GC)가 더 이상 필요하지 않는 객체를 수집하여 메모리에서 제거시킴.

ex) Student s = new Student("홍길동");   ---> 아래 이순신으로 새로운 정보를 입혔으므로 GC가 삭제시킴.

      Student s = new Strudent("이순신");

 

초기화 블럭

***기본적으로 실행문은 블럭안에 있어야 한다.

ex) system.out.println();  == > 메서드 안에서나 생성자 안. 클래스 중괄호도 블럭이라고 생각할 수 있지만 안된다. 무조건 생성자 이상의 블록에서 실행 가능.

인스턴스 블럭은 호출하지 않으면 실행되지 않는다.

static 블럭은 호출하지 않아도 실행된다.

 

'Java > Java 정리' 카테고리의 다른 글

Wrapper Class 래퍼 클래스  (0) 2022.10.21
컬렉션 프레임워크 - HashSet  (0) 2022.10.21
패키지(Package)  (0) 2022.08.21
인터페이스 (Interface)  (0) 2022.08.21
추상(Abstract)  (0) 2022.08.21