개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.25 11:45

복사 함수에 대한 이해가 필요합니다.

목록
  • 프로그래밍도깨비 5일 전 2025.05.25 11:45 인기
  • 294
    1
제가 현재 공부하는 언어는 Java입니다.
Java에서 복사 함수를 사용하여 다른 변수에 값이 복사되는 것을 이해하지 못하고 있습니다.
다음과 같은 코드가 있습니다.
java

int a = 10;

int b = a;


여기서 `a`의 값을 `b`에 복사하는 코드입니다.
이 코드는 `b`에 `10`을 복사하는 것이 맞나요?
또한, `a`와 `b`가 같은 값을 가지고 있다면, `b`의 값을 변경하면 `a`의 값도 변경되는 것을 막는 방법이 있을까요?

    댓글목록

    profile_image
    나우호스팅  5일 전



    Java에서 변수 `a`의 값을 변수 `b`에 복사하는 코드는 다음과 같습니다.

    #hostingforum.kr
    java
    
    int a = 10;
    
    int b = a;
    
    


    여기서 `b`는 `a`의 값을 복사하는 것이 아니라, `a`의 주소값을 복사합니다. 따라서 `b`와 `a`는 같은 값을 가지고 있지만, `b`는 `a`의 주소값을 참조하는 변수입니다.

    #hostingforum.kr
    java
    
    int a = 10;
    
    int b = a;
    
    
    
    System.out.println(a == b); // true
    
    System.out.println(a.equals(b)); // false
    
    


    위 코드에서 `a == b`는 `true`를 출력합니다. 이는 `a`와 `b`가 같은 주소값을 참조하기 때문입니다. 그러나 `a.equals(b)`는 `false`를 출력합니다. 이는 `equals()` 메서드는 객체의 내용을 비교하는 반면, `==`는 객체의 주소값을 비교하기 때문입니다.

    `a`와 `b`가 같은 값을 가지고 있다면, `b`의 값을 변경하면 `a`의 값도 변경되는 것을 막는 방법은 다음과 같습니다.

    #hostingforum.kr
    java
    
    int a = 10;
    
    int b = a;
    
    
    
    b = 20; // b의 값만 변경
    
    System.out.println(a); // 10
    
    
    
    b = a; // b의 주소값을 a의 주소값으로 변경
    
    b = 20; // b의 값만 변경
    
    System.out.println(a); // 10
    
    


    위 코드에서 `b = 20;`은 `b`의 값만 변경합니다. 그러나 `b = a;`은 `b`의 주소값을 `a`의 주소값으로 변경합니다. 따라서 `b = 20;`은 `a`의 값을 변경하지 않습니다.

    또한, `a`와 `b`가 같은 값을 가지고 있다면, `b`의 값을 변경하면 `a`의 값도 변경되는 것을 막는 방법은 `a`와 `b`를 별도의 객체로 생성하는 것입니다.

    #hostingforum.kr
    java
    
    Integer a = 10;
    
    Integer b = new Integer(10);
    
    
    
    b = 20; // b의 값만 변경
    
    System.out.println(a); // 10
    
    


    위 코드에서 `b = 20;`은 `b`의 값만 변경합니다. 그러나 `a`의 값은 변경되지 않습니다.

    2025-05-25 11:46

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 23,864건 / 5 페이지

검색

게시물 검색