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
- DB
- 네트워크
- 스프링
- 프로그래머스
- 데이터
- 시큐리티
- python
- 파이썬
- Spring Security
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- springboot
- 자바스크립트
- 데이터베이스
- postgresql
- CS지식
- CS
- 백준
- javascript
- 스프링부트
- spring
- 자바
- backjoon
- Java
- JPA
- 리눅스
- Flutter
- baekjoon
- 자료구조
- 플러터
- Oracle
Archives
- Today
- Total
Jin's Dev Story
[JAVA] 지역 변수 & 전역 변수 & static(정적) 변수 본문
지역 변수(stack 영역)
- 지역 안에서 선언된 변수
- 그 영역의 닫는 중괄호를 만났을 때 메모리에서 해제됨
- 사용자가 직접 초기화 해야 함
- 다른 영역에서 접근할 수 없기 때문에 보안성이 뛰어남
public class Main {
public static void main(String[] args) {
int a = 0; //지역변수.
}
}
전역 변수(data 영역)
- 클래스 영역 안에 있고, 전체 영역에서 사용 가능한 변수
- 클래스 영역 외의 어떠한 영역에도 포함되어 있지 않음
- new를 만났을 때 초기화 됨
- 프로그램 종료 시 메모리에서 해제 됨
- 다른 영역에서도 접근할 수 있기 때문에, 보안성이 상대적으로 낮음
- 전역 변수 종료
- static 변수 : 다른 클래스에서도 호출 가능
- 인스턴스 변수 : 같은 클래스 내에서 호출 가능
- 전역 변수 종료
public class Main {
int a = 0; //전역변수 - 인스턴스 변수
static int width = 100; //전역변수 - static 변수
public static void main(String[] args) {
}
}
인스턴스 메서드
- 인스턴스 객체를 생성 후 “인스턴스변수.메서드()” 형태로 호출하는 방식
- 인스턴스 멤버와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수를 사용할 수 있음
class Math1 {
//인스턴스 변수
int a,b;
// 인스턴스 메서드
int add(){
return a + b;
}
}
class Main {
public static void main(String args[]) {
//인스턴스 생성
Math1 mt1 = new Math1();
mt1.a = 200;
mt1.b = 100;
//인스턴스 메서드 호출
System.out.println(mt1.add());
}
}
static 변수, 클래스 변수(data 영역)
- 컴파일을 하게 되면 가장 먼저 메모리에 올라가고, 어떠한 경우에도 초기화가 되지 않음
- 단, 프로그램 종료 시 메모리에서 해제 됨
- 메모리에 고정되기 때문에 남용 시 메모리 혹은 프로그램 실행 속도에 악영향을 줌
정적(Static)
- 변하지 않는 것
정적 멤버(클래스 멤버)
- 정적 변수(정적 필드) + 정적 메소드
정적 변수
- 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수
정적 메서드
- 객체 생성 없이 “클래스.메서드()” 형태로 호출하는 방식
- 인스턴스 멤버와 관련 없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수를 사용할 수 없음
class Math1 {
//static 메서드
static int add(int a, int b){
return a + b;
}
}
class Main {
public static void main(String args[]) {
//static 메서드(클래스 메서드) 호출 => 객체 생성 없이 호출 가능
System.out.println(Math1.add(200,100);
}
}
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] List & Set &Map (0) | 2023.08.15 |
---|---|
[JAVA] Call By Value와 Call By Reference (0) | 2023.08.15 |
[JAVA] 인터페이스(interface) (0) | 2023.08.12 |
[JAVA] 가비지 컬렉션(Garbage Collection) (0) | 2023.08.01 |
[JAVA] JVM (0) | 2023.08.01 |