반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- ArrayList
- string
- Array
- 이클립스
- html
- 이탈리아
- replace
- vscode
- IntelliJ
- list
- CSS
- math
- Eclipse
- date
- javascript
- 배열
- 자바
- 정규식
- input
- table
- js
- map
- 문자열
- 자바문법
- HashMap
- Java
- json
- Visual Studio Code
- 인텔리제이
- 자바스크립트
Archives
- Today
- Total
어제 오늘 내일
[Java] static이란? 본문
Java에서 static 키워드는 클래스에 속하는 멤버를 정의할 때 사용하는 중요한 키워드입니다. 객체를 만들지 않고도 사용할 수 있으며, 프로그램 전체에서 공유되는 특성을 가집니다. 이 글에서는 static의 개념과 사용 방법을 간단하고 명확하게 정리합니다.
1. static의 기본 개념
static은 클래스 수준의 변수나 메서드를 정의하는 데 사용되는 키워드입니다.
즉, 객체마다 따로 존재하는 것이 아니라 클래스가 로딩될 때 단 한 번 생성되고 모든 인스턴스가 공유합니다.
예:
class Counter {
static int count = 0;
}
설명
- count는 객체가 아닌 클래스에 속함
- 프로그램에서 하나만 존재
2. static 변수 (클래스 변수)
객체마다 다른 값을 가지는 인스턴스 변수와 달리, static 변수는 모든 객체가 공통으로 사용하는 변수입니다.
class Counter {
static int count = 0;
int id;
public Counter() {
count++;
this.id = count;
}
}
Counter c1 = new Counter();
Counter c2 = new Counter();
System.out.println(c1.id); // 1
System.out.println(c2.id); // 2
설명
- static 변수 count는 모든 객체가 공유
- 객체가 생성될 때 증가하므로 id가 순서대로 부여됨
3. static 메서드 (클래스 메서드)
static 메서드는 객체 생성 없이 호출할 수 있는 메서드입니다.
class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}
int result = MathUtil.add(3, 5); // 객체 없이 호출
특징
- 인스턴스 변수 접근 불가
- 객체 정보에 의존하지 않는 기능을 정의할 때 사용
4. 대표적인 static 사용 예 (Java 기본 API)
Java 표준 라이브러리에도 static은 매우 많이 사용됩니다.
Math.random();
Integer.parseInt("10");
Arrays.sort(arr);
설명
- 객체를 만들 필요 없이 바로 사용 가능한 기능 제공
5. static 블록
클래스가 로딩될 때 단 한 번 실행되는 초기화 블록입니다.
class InitExample {
static int value;
static {
value = 100; // 클래스 초기화 작업
}
}
설명
- static 변수 초기화나 설정 작업에 사용
6. 언제 static을 사용할까?
- 객체마다 달라질 필요 없는 값
- 여러 곳에서 공유해야 하는 데이터
- 유틸리티 성격의 메서드 (예: 계산, 변환)
- 프로그램 시작 시 한 번만 초기화하면 되는 값
7. 주의할 점
- 공유되므로 값 변경에 주의해야 함
- 객체 상태에 의존하는 로직에는 사용하면 안 됨
- 과도한 static 사용은 설계의 유연성을 해칠 수 있음
반응형
'IT > Java' 카테고리의 다른 글
| [Java] void 메소드 호출 (0) | 2025.12.19 |
|---|---|
| [Java] void 뜻 (0) | 2025.12.19 |
| [Java] 클래스와 객체 차이 (0) | 2025.12.18 |
| [Java] 삼항연산자, 중첩 삼항연산자 (0) | 2025.12.17 |
| [Java] @Override 어노테이션 (0) | 2025.12.17 |
Comments
