[Java] 기본형 vs 참조형 1️⃣ - 시작

코드 속의 "진돌"·2024년 1월 23일
1
post-thumbnail

변수의 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 변수에 직접 넣을 수 있는 기본형, 그리고 이전에 본 Student student1과 같이 객체가 저장된 메모리의 위치를 가리키는 참조값을 넣을 수 잇는 참조형으로 분류할 수 있다.

  • 기본형(Primitive Type) : int, long, double, boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다.
  • 참조형(Reference Type) : Student student1, int[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다. 참조형은 객체 또는 배열에 사용된다.

기본형 변수에는 직접 사용할 수 있는 값이 들어있지만, 참조형 변수에는 위치(참조값)가 들어있다. 참조형 변수를 통해서 뭔가 하려면 결국 참조값을 통해 해당 위치로 이동해야 한다.




✅ 기본형 🆚 참조형 - 기본


  • 기본형은 숫자 10, 20과 같이 실제 사용하는 값을 변수에 담을 수 있다. 그래서 해당 값을 바로 사용할 수 있다.
  • 참조형은 실제 사용하는 값을 변수에 담는 것이 아니다. 이름 그대로 실제 객체의 위치(참조, 주소)를 저장한다. 참조형에는 객체와 배열이 있다.
    • 객체.(dot)을 통해서 메모리 상에 생성된 객체를 찾아가야 사용할 수 있다.
    • 배열[]를 통해서 메모리 상에 생성된 배열을 찾아가야 사용할 수 있다.




✅ 기본형 🆚 참조형 - 계산


  • 기본형은 들어있는 값을 그대로 계산에 사용할 수 있다.
    • 예) 더하고 빼고, 사용하고 등등 (숫자 같은 것들은 바로 계산할 수 있음)
  • 참조형은 들어있는 참조값을 그대로 사용할 수 없다. 주소지만 가지고는 할 수 있는게 없다. 주소지에 가야 실체가 있다.
    • 예) 더하고 빼고 사용하고 못함! 참조값만 가지고는 계산 할 수 있는 것이 없음.

기본형은 연산이 가능하지만 참조형은 연산이 불가능하다.

int a = 10, b = 20;
int sum = a + b;

기본형은 변수에 실제 사용하는 값이 담겨있다. 따라서 +, -와 같은 연산이 가능하다.

Student s1 = new Student();
Student s2 = new Student();
s1 + s2;  // 오류 발생

참조형은 변수에 객체의 위치인 참조값이 들어있다. 참조값은 계산에 사용할 수 없다. 따라서 오류가 발생한다.

물론 다음과 같이 .을 통해 객체의 기본형 멤버 변수에 접근한 경우에는 연산을 할 수 있다.

Student s1 = new Student();
s1.grade = 100;
Student s2 = new Student();
s2.grade = 90;
int sum = s1.grade + s2.grade;  // 연산 가능




🔔 쉽게 이해하는 팁


기본형을 제외한 나머지는 모두 참조형이다.

  • 기본형은 소문자로 시작한다. int, long, double, boolean 모두 소문자로 시작한다.
    • 기본형은 자바가 기본으로 제공하는 데이터 타입이다. 이러한 기본형은 개발자가 새로 정의할 수 없다. 개발자는 참조형인 클래스만 직접 정의할 수 있다.
  • 클래스는 대문자로 시작한다. Student
    • 클래스는 모두 참조형이다.



💡 참고 - String

자바에서 String은 특별하다. String은 사실은 클래스다. 따라서 참조형이다. 그런데 기본형처럼 문자 값을 바로 대입할 수 있다. 문자는 매우 자주 다루기 때문에 자바에서 특별하게 편의 기능을 제공한다.



💡 출처

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글