생활코딩 - Java(참조)

2024. 4. 18. 00:39·Java & Spring/Java
목차
  1. □ 복제
  2. □ 참조

□ 복제

복제

□ 참조

참조(reference)

 

ex)

메모장으로 예를 들었을 때

'복사본'의 경우 서로 복제된 상태로 더이상 연관이 없지만

'바로가기'의 경우 원본 '메모장'을 참조한 상태이므로 상호작용이 발생함

또한 복사의 경우 용량이 2배가 되는 것 이지만 바로가기는 훨씬 작은용량을 차지하게 됨

원본 / 복사본 / 바로가기 순

 

ex2)

아래 코드로 다시한번 참조에 대해 정리해보면

 

1)

runValue 메소드부터 확인해보면

기본변수 a에 1이라는 값이 들어있다.

그다음 _value라는 메소드를 호출 하는데 해당 메소드의 매개변수 b에 a를 넣는 상황이다(int b = a;).

그 후 변수 b의 값을 2로 바꾸더라도 a에 영향을 주지 않는다.

→ runValue, 1

 

2)

  1. A a = new A(1); : id 값이 1인 새로운 A 객체를 생성하고, a 변수가 이 객체를 참조합니다.
  2. _reference1(a); : a 변수가 참조하는 A 객체를 _reference1 메서드의 파라미터 b에 전달합니다.
  3. _reference1 메서드 내에서 b = new A(2);를 실행하면, b는 새로운 A 객체를 참조하게 됩니다.
    이것은 a 변수가 참조하는 객체와는 별개의 객체입니다.
  4. 따라서 _reference1 메서드 내에서 b의 변경은 a 변수가 참조하는 객체에는 영향을 주지 않습니다.
  5. System.out.println("runReference1, "+a.id);: a.id를 출력하면 여전히 1이 출력됩니다.

 

3)

  1. A a = new A(1); : id 값이 1인 새로운 A 객체를 생성하고, a 변수가 이 객체를 참조합니다.
  2. _reference2(a); : a 변수가 참조하는 A 객체를 _reference2 메서드의 파라미터 b에 전달합니다.
  3. _reference2 메서드 내에서 b.id = 2;를 실행하면, b가 참조하는 객체의 id 필드 값이 2로 변경됩니다.
  4. _reference2 메서드가 종료된 후에도 a 변수는 동일한 객체를 계속 참조하고 있습니다.
    따라서 a.id의 값도 변경된 값인 2가 출력됩니다.
  5. System.out.println("runReference2, "+a.id);: a.id를 출력하면 2가 출력됩니다.

 

 

출처 : 생활코딩 유튜브 : 

https://www.youtube.com/watch?v=Us8ZsdbQ9M8&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=142

 

'Java & Spring > Java' 카테고리의 다른 글

문자열 값 비교 'str.compareTo()'  (1) 2024.07.19
생활코딩 - Java(Collection framework)  (0) 2024.04.19
생활코딩 - Java(상수와 enum)  (0) 2024.04.17
생활코딩 - Java(Object 클래스)  (0) 2024.04.16
생활코딩 - Java(예외 Exception)  (0) 2024.04.15
  1. □ 복제
  2. □ 참조
'Java & Spring/Java' 카테고리의 다른 글
  • 문자열 값 비교 'str.compareTo()'
  • 생활코딩 - Java(Collection framework)
  • 생활코딩 - Java(상수와 enum)
  • 생활코딩 - Java(Object 클래스)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
DJ Hello World백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java arrays.copyofrnage()
    java기초
    java two-pointer
    java 제어자
    java 유클리드 호제법
    프로그래머스 java 기초트레이닝
    프로그래머스 java 기초 트레이닝
    데이터 타입
    Java this
    java 에라토스테네스의 체
    java 멤버
    자료구조
    개발로드맵
    Java 생성자
    java enhance switch
    java 메서드
    java
    java super
    java 세수의합
    데이터 크기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
생활코딩 - Java(참조)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.