본문 바로가기
  • alert("Rocomi의 개발공부 블로그")
JAVA 공부

참조변수와 일반변수

by Rocomi 2024. 6. 24.

자바에서 변수는 기본적으로 두 가지 유형으로 나뉩니다: **기본 변수(Primitive Variables)**와 **참조 변수(Reference Variables)**입니다. 이 두 가지 변수 유형은 메모리에 저장되는 방식과 사용 방법에서 중요한 차이점을 가지고 있습니다.

기본 변수 (Primitive Variables)

기본 변수는 실제 값을 저장합니다. 이들은 단순한 데이터를 저장하며, 메모리의 스택(Stack) 영역에 저장됩니다. 기본 변수는 다음과 같은 기본 데이터 타입을 가질 수 있습니다:

  • byte, short, int, long: 정수형 데이터 타입
  • float, double: 실수형 데이터 타입
  • boolean: 논리형 데이터 타입 (true 또는 false)
  • char: 문자형 데이터 타입

기본 변수는 해당 값을 직접적으로 저장하기 때문에, 변수를 선언하면 해당 데이터 타입의 크기만큼의 메모리가 할당됩니다. 예를 들어,

1
2
3
4
5
int age = 30// 기본 변수 선언과 초기화
double pi = 3.14;
boolean isStudent = true;
char grade = 'A';
 
cs
 

참조 변수 (Reference Variables)

참조 변수는 객체의 주소를 저장합니다. 자바에서 객체는 클래스의 인스턴스, 배열, 문자열 등을 포함합니다. 참조 변수는 객체가 실제로 위치한 메모리 주소를 저장하며, 이들은 힙(Heap) 영역에 객체가 할당될 때 생성됩니다.

참조 변수는 클래스의 인스턴스를 가리키거나 객체의 메서드와 필드에 접근하는 데 사용됩니다. 예를 들어,

1
2
3
String name = "John"// 참조 변수 선언과 초기화
Scanner scanner = new Scanner(System.in); // 객체 생성 후 참조 변수에 할당
 
cs

위의 예제에서 name은 String 클래스의 인스턴스를 가리키는 참조 변수이고, scanner는 Scanner 클래스의 인스턴스를 가리키는 참조 변수입니다.

참조 변수와 객체

참조 변수가 객체를 참조할 때, 실제로 메모리에 저장된 것은 객체의 주소입니다. 예를 들어,

1
2
3
String name1 = "Alice";
String name2 = "Alice";
 
cs

위의 코드에서 name1과 name2는 동일한 문자열 리터럴을 참조하지만, 이들은 실제로 동일한 객체를 가리키지 않을 수 있습니다. 문자열 리터럴은 자바에서 풀(Pool) 영역에 저장될 수 있기 때문에 동일한 문자열 리터럴을 참조하는 참조 변수는 같은 객체를 가리킬 수 있습니다.

1
2
3
String name1 = new String("Bob");
String name2 = new String("Bob");
 
cs

위의 코드에서 name1과 name2는 서로 다른 String 객체를 가리킵니다. new 키워드를 사용하여 각각의 변수가 새로운 객체를 생성하게 됩니다.

참조 변수의 사용

참조 변수를 사용할 때는 객체의 메서드를 호출하거나 객체의 필드에 접근할 수 있습니다. 예를 들어,

1
2
3
4
String greeting = "Hello";
int length = greeting.length(); // length() 메서드 호출
char firstChar = greeting.charAt(0); // charAt() 메서드 호출
 
cs

위의 코드에서 greeting.length()은 String 클래스의 메서드를 호출하여 문자열의 길이를 반환하고, greeting.charAt(0)은 문자열의 첫 번째 문자를 반환합니다.

요약

  • 기본 변수: 실제 값을 저장하며, 스택 메모리에 할당됩니다.
  • 참조 변수: 객체의 주소를 저장하며, 힙 메모리에 객체가 할당될 때 생성됩니다.
  • 참조 변수는 객체를 참조하여 객체의 메서드를 호출하거나 필드에 접근하는 데 사용됩니다.

자바에서 변수는 데이터를 효율적으로 관리하고 다루기 위한 중요한 개념이며, 기본 변수와 참조 변수를 올바르게 사용하는 것이 중요합니다.

'JAVA 공부' 카테고리의 다른 글

오버라이딩  (0) 2024.06.24
오버로딩  (0) 2024.06.24
MVC 모델  (0) 2024.06.21
객체와 클래스  (0) 2024.06.21
2차원 배열  (0) 2024.06.21