국비 17일차 static
2021. 1. 27. 18:48
2021.01.27 국비교육 17일차
[TOC]
Static
- 소스코드 작성
- 클래스파일 생성
- 클래스파일 실행
- 클래스 로딩
- static 키워드를 사용한 변수와 메소드가 메모리에 자동으로 로딩도니다.
- 대표적으로 main메소드가 있다.
- main 메소드 실행
- 여러 static 메소드들 중에서 시작점 기능을 하는 main메소드 실행
- 인스턴스 생성
- 인스턴스 변수와 메소드를 메모리에 로딩
- 메소드 호출
- 메소드 안에서 선언된 로컬변수 생성
- 결과값 출력
=================================================
static 특징
- 클래스, 변수, 메소드 지정자로 사용 가능
- 단 한번 생성
- 객체 생성과 무관
- 프로그램 종료시 함께 종료
static 용도
- 클래스 용도 : inner클래서에서만 사용 가능
- 메소드 용도 : 객체 생성없이 메소드 사용
- 주의할 점은 static 메소드 내에서 인스턴스 변수 사용하지 못함
- 변수 용도 : 데이터 누적용
- 프로그램 내애서 특정 데이터값을 계속 유지할 목적이라면 static변수가 적합
변수명 | 정의 | 생성 ~ 소멸 | 저장 위치 | 특징 |
---|---|---|---|---|
로컬변수 | 매서드내에서 정의 | 메소드 호출시 생성하고 메소드 끝나면 제거 (메소드 호출시마다 생성됨) |
stack 메모리 | 사용전에 반드시 초기화 해야함 |
인스턴스변수 | 매서드밖에서 정의 | 객체 생성시 생성되고 객체 소멸시 제거 (new할때마다 생성됨) |
heap 메모리 | 초기화하지 않으면 자동으로 기본값 설정 |
static변수 (class변수) |
매서드 밖에서 정의. 단, static키워드 사용 |
프로그램 실행시 생성되고 프로그램 종료시 제거 (단 한번만 생성) |
method area영역 | 초기화하지 않으면 자동으로 기본값 설정 |
package com.test;
class Counter{
static int count; // static 변수 : 객체 생성전, 클래스 로드시 생성, 자동초기화, 클래스 이름으로 접근가능, 객체의 공유변수, 클래스 내 사용가능
int num; // 일반 멤버 변수 : 객체 생성 후 사용 가능, 객체마다 새로 생성, 클래스 내 사용 가능
public Counter() { // counter가 호출되면 자동으로 count up
count ++; //static 변수 1씩 증가
num = count;
}
public int getNum() {return num;}
public void setCount(int count) {
Counter.count = count;
}
}
public class Ex05_18 {
public static void main(String[] args) {
//Counter Counter = new Counter();
System.out.println("객체 생성 횟수 : " + Counter.count);
Counter c = new Counter();
System.out.println("객체 생성 횟수 : " + c.getNum() );
Counter c2 = new Counter();
System.out.println("객체 생성 횟수 : " + c2.getNum());;
System.out.println("객체 생성 횟수 : " + Counter.count);
Counter c3 = new Counter();
System.out.println("객체 생성 횟수 : " + Counter.count);
}
}
package com.test;
class Counter2{
static int count;
int num;
public Counter2(){
count++;
num = count;
}
public int getNum() {return num;}
public static int getCount() {return count;}
}
public class Ex05_19 {
public static void main(String[] args) {
System.out.println("객체 생성 횟수 : " + Counter2.getCount());
Counter2 c = new Counter2();
System.out.println("객체 생성 횟수 : " + c.getNum());
Counter2 c2 = new Counter2();
System.out.println("객체 생성 횟수 : " + Counter2.getCount());
}
}
'ETC > 국비교육' 카테고리의 다른 글
국비 19일차 상속, 오버라이드 (0) | 2021.01.29 |
---|---|
국비 18일차 JAVA 초기화블록, 싱글톤, final, vargars (0) | 2021.01.28 |
국비 16일차 JAVA(생성자, 객체 생성, 오버로딩, this, getter/setter) (0) | 2021.01.26 |
국비 15일차 JAVA 배열, 클래스 (0) | 2021.01.25 |
국비 14일차 JAVA (for문, break, label, 배열) (0) | 2021.01.22 |