-
[Java] 변수와 메모리IT Study/컴퓨터 기초 2023. 3. 24. 17:42728x90
자바를 배우다보면 변수와 메모리라는 단어를 자주 또 많이 듣게 됩니다.
변수의 개념과 종류, 사용 예시를 확인하고
메모리의 개념과 종류, 사용 예시를 확인해보며 개념을 확실하게 잡고 넘어가겠습니다 !
1. 변수란?
변수란 값을 저장하는 메모리 공간의 이름을 의미합니다.
메모리 공간을 데이터를 저장할 때 사용되며, 데이터를 읽거나 수정할 수 있습니다.
자바에서는 멤버 변수, 지역 변수, 매개 변수 등의 다양한 종류의 변수를 사용할 수 있습니다.
1-1. 멤버 변수
멤버 변수란 클래스 내에 선언되는 변수로, 객체의 속성을 나타냅니다.
객체가 생성될 때 만들어지며, 객체가 소멸될 때까지 존재합니다.
public class Person { Stirng name; // name : 멤버 변수 int age = 9; // age : 멤버 변수 }
public class Main { public static void main(String[] args) { int num1 = 10; // num1 : 멤버 변수 int num2 = 20; // num2 : 멤버 변수 int res = num1 + num2; // res : 멤버 변수 System.out.println(res); } }
1-2. 지역 변수
지역 변수는 메서드, 생성자, 초기화 블록에서 선언되는 변술, 블록이 실행될 때 생성되며 블록이 끝날 때 소멸합니다.
지역 변수에서 가장 중요한 것은 선언과 동시에 초기화해야 한다는 것입니다.
아래 메모리를 배우며 설명을 덧붙이겠지만 지역 변수는 stack(스택)에 할당되어,
초기화되지 않은 변수를 사용하면 컴파일러가 자동으로 초기화하지 않고 컴파일 단계에 오류를 발생시킵니다.
public class Calculator { public int add(int x, int y) { // 메서드 int sum = x + y; // sum : 지역 변수 return sum; } }
public class Main { public static void main(String[] args) { int sum = 0; for(int i = 1; i <= 10; i++) { // 반복문 sum += i; // i : 지역 변수 } System.out.println("1`10까지 합 : " + sum); } }
1-3. 매개 변수
매개 변수는 메서드나 생성자에서 전달되는 인수를 받는 변수입니다. 메서드가 실행될 때 생성, 실행 종료 시 소멸합니다.
public void method(int i) { // i : 매개 변수 System.out.println(i); }
public class Calculator { public int add(int x, int y) { // x, y : 매개 변수 return x + y; } }
1-4. 변수의 사용 예시
public class Example { int a = 1; // a : 멤버 변수 public void method(int b) { // b : 매개 변수 int c = 3; // c : 지역 변수 int d = a + b + c; // d : 지역 변수 System.out.println(d); } }
2. 메모리란?
메모리는 프로그램 실행 시 데이터를 저장하고 처리하는 데 사용하는 공간으로,
위에서 소개한 변수와 더불어, 객체, 메서드, 배열이 메모리에 저장됩니다.
2-1. static 메모리 (정적)
프로그램 실행 중 데이터가 고정되어 있어, 변경이 불가한 메모리 영역을 의미합니다.
정적(static) 변수, 정적(static) 메서드를 저장하는 영역으로,
프로그램 시작 시 메모리에 저장되어 종료할 때까지 메모리에서 삭제되지 않습니다.
2-2. Heap 메모리 (동적)
동적으로 생성된 객체, 배열이 저장되는 영역으로, 실행 중에 메모리를 할당하고 해제합니다.
가비지 컬렉터(Garbage Collector, GC)에 의해 더 이상 사용하지 않는 객체는 바로 메모리에서 삭제합니다.
2-3. Stack 메모리
지역 변수와 매개 변수 등의 임시 데이터를 저장하는 영역으로, 함수 호출 시 정보가 스택에 쌓이며 반환 시 제거됩니다.
'IT Study > 컴퓨터 기초' 카테고리의 다른 글
[Java] 추상화와 인터페이스 (0) 2023.03.26 [Java] String, StringBuffer, StringBuilder (0) 2023.03.26 [Java] next()와 nextLine() 차이와 사용법 (0) 2023.03.24 [Java] String 클래스의 equals(), ==, = 의 차이점 (0) 2023.03.23 [Java] StringTokenizer (0) 2023.03.15