본문 바로가기
개발자 :-)/Java

[Java] 패키지와 static

by 뚜생첨 2022. 9. 2.

1. 패키지

Java 프로그램은 많은 클래스로 구성되고, 이러한 클래스를 폴더 형식으로 관리하는 것을 패키지라고 한다.

패키지명을 정할 때는

 - 패키지에 속해있는 클래스가 다른 클래스와 중복되는 것을 방지하도록 정한다.

 - 일반적으로 도메인을 거꾸로 이용한다.

   (패키지를 다른 프로젝트에 그대로 이식해서 사용할 때 도메인은 유니크하기 때문에) 

 - 개발 중 패키지의 이름과 구조는 변경할 수 있다.

 - 패키지명만 보고도 어떤 속성과 기능을 가지고 있는지 알 수 있어야 한다.

2. import

다른 패키지에 있는 클래스를 사용하기 위해서는 import 키워드를 이용한다.

package com.java.employee;

import com.java.dailyJournal.DailyJournal; //import
import com.java.dailyJournal.*; //dailyJournal 하위에 있는 여러 클래스를 import 하는경우

public class Employee{

	DailyJournal journal = new DailyJournal();

}
package com.java.dailyJournal;

public class DailyJournal{

}

 

3. static

클래스의 속성과 메서드에 static 키워드를 사용하면 어디서나 속성과 메서드를 사용할 수 있다.

static 변수 = 정적 변수

static 메서드 = 정적 메서드

static 변수/메서드는 객체에 소속된 것이 아닌 클래스에 고정된 멤버로 클래스로더가 클래스를 메모리영역에 적재할 때 일반적인 객체와는 별도로 관리

 

static 멤버들은 메모리의 static 영역에 할당된다.

(*static 영역 : 클래스들이 할당되고(객체 X), GC가 관리 X, 모든 객체가 메모리를 공유하는 영역)

(* 객체는 heap 영역에 할당되고, GC 가 관리해줌)

 

package com.java.employeeBank;

public class EmployeeBank{
	String name;
    static int amount = 0;
    
    public EmployeeBank(String name){
    	this.name = name;
    }
    
    public void saveMoney(int money){
    	amount += money;
    }
    
    public void getBankInfo(){
    //~~
	}
}
public static void main(String args){
	EmployeeBank park = new EmployeeBank("박찬호");
    park.saveMoney(100);
    
    EmployeeBank son = new EmployeeBank("손흥민");
   	son.saveMoney(300);
}

메모리에 생성된 amount를 객체 간 공유하여 son.saveMoney(300); 을 실행하고 나면 

amount 값은 400이 된다.

 

static을 너무 많이 사용하면 메모리에 부하를 주기 때문에 꼭 필요할 때 사용해야 한다.

728x90
반응형

'개발자 :-) > Java' 카테고리의 다른 글

[Java] 데이터 은닉  (0) 2022.09.03
[Java] 클래스 로더(Class Loader)  (0) 2022.09.03
[Java] 생성자와 소멸자 그리고 this  (1) 2022.09.02
[Java] 객체와 메모리  (0) 2022.09.02
[Java] 메서드  (0) 2022.09.02

댓글