• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Error Note] 22. 얕은 복사 오류
        2024년 05월 10일
        • Song hyun
        • 작성자
        • 2024.05.10.:11
        728x90
        반응형

        [Error Note] 22. 얕은 복사 오류 

         

         

        "얕은 복사"라는 개념에 대해 공부하던 도중, 알게 된 오류에 대해 이야기해보고자 한다.

        아래의 코드를 읽어보자. 

        Type mismatch : cannot convert from element type Object to Integer

         

         

        해당 메세지를 읽어보면 Object 타입의 변수를 Integer 타입(=정수형, int)로 변환할 수 없다는 뜻임을 알 수 있다.

        변수 list는 ArrayList라는 자료구조를 가지고 있지만, 어떤 형태의 요소를 받을 것인지는 정의되지 않았다. 

        이럴 때 JVM은 기본 형태를 최상위 클래스인 Object로 선언하게 된다. 

        즉, 아래의 코드에서 list는 object 타입의 ArrayList인 셈이다.

         

        아래의 코드를 살펴보자.

        현재 list는 int형의 ArrayList로 정의되어, Integer(int)형의 요소들을 받게 되어 있다.

        list를 출력하면 3,10이 출력되는 것을 보아 현재 list는 두개의 요소만을 지니고 있다.

        그리고 변수 num이 list로 초기화 된 상태이다.

         

        이후 list에 1000이라는 요소를 더했다.

        정리해보자면

         

        nums=list(요소 추가 전)=[3,10]
        list=[3,10,1000]

         

         

        인 셈이다. 

        그런데 왜 nums를 출력했을 때 1000이라는 요소도 함께 출력되었을까?

         

         

        이는 바로 얕은 복사(Shallow Copy)라는 개념이 nums에게 적용되었기 때문이다.

        자바에는 얕은 복사(shallow copy)와 깊은 복사(Deep Copy)라는 개념이 있다.

         

        실존하는 집이 한 채 있다고 가정해보자.

         

        (1) 만약 얕은 복사를 하게 된다면, 집으로 향하는 지도를 복사하게 된다.

        즉, 실존하는 집이 아닌 집으로의 주소값이 복사되는 것이다.

        해당 지도에 택배를 보내게 된다면 어떻게 될까?

        지도가 아닌, 지도가 가리키는 원본 집으로 물건이 배달될 것이다.

         

        (2) 깊은 복사를 하게 된다면, 집 그 자체를 복사하게 된다.

        집 안의 물건, 인테리어 등 집을 구성하는 요소들을 모두, 그대로 복사하게 된다.

        즉, 깊은 복사를 한 객체에 물건을 보내게 된다면,

        새로 복사된 집으로 물건이 보내질 것이다. 

         

        위의 개념을 앞의 코드에 적용해 생각해보자.

        nums는 초기화 후, list에 추가된 요소들도 지니고 있었다.

        만약 깊은 복사가 진행되었다면 nums에는 [3,10]의 요소만 있었을 것이다.

        즉 nums는 list의 주소값을 복사, 얕은 복사를 한 객체라는 점을 알 수 있다.

        객체를 복사할 때 신경써서 사용하자!

        728x90
        반응형

        'Error Note' 카테고리의 다른 글

        [Error Note] 24. 쓰레드 동시 실행 오류 : Illegal Thread State Exception  (0) 2024.05.16
        [Error Note] 23. Git: Error: failed to push some refs to  (0) 2024.05.16
        [Error Note] 21. The blank final field ~ may not have been initialized  (0) 2024.05.02
        [Error Note] 20. 파일 오류: Unhandled exception type FileNotFoundException  (0) 2024.05.01
        [Error Note] 19. 추상 메서드(상속) 오류: The type must implement the inherited abstract method  (0) 2024.04.30
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바