hayu's 개발 일지

99클럽 코테 스터디 19일차 TIL + 기본형과 참조형 본문

기술/java

99클럽 코테 스터디 19일차 TIL + 기본형과 참조형

hayu00 2024. 6. 8. 21:10

 

학습 키워드

- 기본형과 참조형

 

공부한 내용

기본형과 참조형

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

기본형 vs 참조형 - 기본

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

기본형 vs 참조형 - 계산

  • 기본형은 들어있는 값을 그대로 계산에 사용할 수 있다.
  • 참조형은 들어있는 참조값을 그대로 사용할 수 없다. 주소지만 가지고는 할 수 있는게 없다. 주소지에 가야 실체가 있다!

자바는 항상 변수의 값을 복사해서 대입한다.

  • 자바에서 변수에 값을 대입하는 것은 변수에 들어있는 값을 복사해서 대입하는 것이다. 기본형, 참조형 모두 항상 변수에 있는 값을 복사해서 대입한다.
  • 기본형이면 변수에 들어 있는 실제 사용하는 값을 복사해서 대입하고, 참조형이면 변수에 들어있는 참조값을 복사해서 대입한다.
  • → 참조형의 경우 실제 사용하는 객체가 아니라 객체의 위치를 가리키는 참조값만 복사된다.
  • ⇒ Call by reference는 참조에 의한 호출을 말한다. Call by reference의 특징은 전달받은 값을 변경할 경우 원본도 변경된다. java에서는 Call by value로만 동작한다. 자바에서 Call by reference로 동작한다고 생각할 수 있지만 자바에서 매개변수를 넘기는 과정에서 주소값을 복사해서 넘기기 때문에 call by value로 작동한다.

변수와 초기화

변수의 종류

  • 멤버 변수(필드) : 클래스에 선언한다.
  • 지역 변수 : 메서드에 선언, 매개 변수도 지역 변수의 한 종류이다.

변수의 값 초기화

  • 멤버 변수 : 자동 초기화
    • 인스턴스의 멤버 변수는 인스턴스를 생성할 때 자동으로 초기화된다.
    • 숫자(int)=0, boolean = false , 참조형 = null ( null 값은 참조할 대상이 없다는 뜻으로 사용 된다.)
    • 개발자가 초기값을 지정할 수 있다.
  • 지역 변수 : 수동 초기화
    • 지역 변수는 항상 직업 초기화해야 한다.

null

  • null은 값이 존재하기 않는, 없다는 뜻이다.

Data 타입을 받을 수 있는 참조형 변수 data(Data 인스턴스)를 만든다. 여기에 null을 할당한다. 즉, data 변수에 가리키는 객체가 없다.

→ 이후 새로운 Data 객체를 생성해서 참조값을 data 변수에 할당한다. 이제 data 변수가 참조할 객체가 존재한다. → data에 다시 null 값을 할당했다. 이렇게 하면 data 변수는 앞서 만든 Data 인스턴스를 더는 참조 하지 않는다.

 

회고

발생한 문제

- 자료구조를 공부하면서 자바에 대한 공부도 부족하다는 것을 느꼈다.

 

해결 방법

- 자바 공부를 병행하기로 했다.

 

알게된 내용

- 기본형과 참조형의 차이와 자바에서는 call by value로만 동작한다는 사실을 알게 되었다.