반응형
Variable
- 데이터를 저장할 수 있는 메모리상의 공간
- 변수에는 데이터 타입과 일치하는 단 하나의 값만 저장할 수 있음
- data type(자료형) = 기본형 + 참조형
Primivite type(기본형)
- 어떠한 값에 대한 연산이 필요한 경우 사용
- 8개
- boolean
- char
- byte
- short
- int
- long
- float
- double
Reference type(참조형)
- 기본형을 제외한 모든 타입(클래스, 인터페이스 등)
- null값 저장 가능
- 객체의 주소(4 byte 정수) 저장 가능
- memory address(실제 데이터가 저장된 주소)를 저장함
package day2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MemberTest {
private static final Logger logger = LoggerFactory.getLogger(StringSharingExample.class);
public static class Member {
int age = 20;
int height = 180;
int weight = 80;
}
public static void main(String[] args) {
Member member = new Member();
logger.info("member : {}", member);
logger.info("age : {}", member.age);
logger.info("height : {}", member.height);
logger.info("weight : {}", member.weight);
}
}
- 위의 코드의 결과를 보면 member에는 Memeber 클래스로부터 생성된 객체의 주소가 저장된다는 것을 알 수 있음
- member의 실제 데이터 : 메모리의 heap 영역에 저장
- member의 주소값 : 메모리의 stack 영역에 저장
자바의 변수 종류
Class Variable(클래스 변수, = static 변수, = 공유 변수)
- 필드 내에서 static 키워드와 함께 선언된 변수
- 해당 클래스의 모든 인스턴스가 공유
- 클래스가 메모리에 로드될 때 생성됨 -> 프로그램이 시작될 때 또는 해당 클래스를 처음 사용할 때 발생
- 클래스의 인스턴스를 생성하지 않고도 접근할 수 있음
- 클래스 변수는 프로그램의 실행 내내 메모리에 유지됨
package day2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ClassVariableExample {
static int classVariable = 0;
private static final Logger logger = LoggerFactory.getLogger(LoggerExample.class);
public ClassVariableExample() {
classVariable++; // 인스턴스가 생성될 때마다 증가
}
public static void main(String[] args) {
//인스턴스를 생성하지 않고 클래스 변수에 접근
logger.info("Initial count : {}", ClassVariableExample.classVariable);
//첫 번째 인스턴스 생성
ClassVariableExample obj1 = new ClassVariableExample();
//두 번째 인스턴스 생성
ClassVariableExample obj2 = new ClassVariableExample();
//인스턴스를 통해 접근
logger.info("total : {}", classVariable);
}
}
- 위의 코드에서 classVariable이 static으로 선언되었기 때문에 클래스 이름을 통해 직접 접근할 수 있는 것을 볼 수 있음
Instance Variable(인스턴스 변수)
- 클래스의 인스턴스(객체)가 생성될 때마다 각각의 객체에 속하는 변수
- 각 인스턴스는 자신의 인스턴스 변수에 대해 별도의 값을 가짐
- new 생성자()를 통해 인스턴스가 생성될 때 만들어짐
- 인스턴스를 생성한 뒤 '인스턴스명.인스턴스변수명'을 통해 사용할 수 있음
- 인스턴스는 힙 메모리의 독립적인 공간에 저장됨
- 동일한 클래스로부터 생성되어도 객체의 고유한 개별성을 가짐
package day2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class InstanceVariableExample {
private static final Logger logger = LoggerFactory.getLogger(StringSharingExample.class);
String color; // 인스턴스 변수
String name; // 인스턴스 변수
public InstanceVariableExample(String color, String name) {
this.color = color;
this.name = name;
}
public static void main(String[] args) {
InstanceVariableExample ex1 = new InstanceVariableExample("red", "빨강");
InstanceVariableExample ex2 = new InstanceVariableExample("blue", "파랑");
logger.info(ex1.color);
logger.info(ex2.color);
}
}
Local Variable(지역 변수)
- 특정 블럭 또는 메소드 네에서 선언되고 사용되는 변수
- 선언된 블록, 메서드, 함수 내에서만 유효하며 해당 블록을 벗어나면 사용할 수 없음
- 메소드 내에서 선언된 변수는 그 메소드가 실행되는 동안에만 존재함
- 지역변수는 사용하기 전 반드시 초기화해야 함
- 같은 이름의 지역 변수가 여러 블록에서 선언될 수 있는데, 이 경우 각 블록의 지역 변수는 서로 독립적임
반응형
'첫 개발 경력, 바른개발연구소 > OJT' 카테고리의 다른 글
File I/O Handling (0) | 2025.01.22 |
---|---|
LGEricsson JAVA Standard (3) | 2025.01.20 |
Windows-based Development Environment Settings (1) | 2025.01.20 |