2013-11-24 4 views
0

내가 Point class (안 클래스 빌드) 내 생성자 중 하나가이 경우앨리어싱

public class Point 
{ 
    private int _x; 
    private int _y; 

    public Point(Point p) 
    { 
     _x = p._x; 
     _y = p._y; 
    } 
} 

하면 확인을 복사 내 생성자의 새로운 포인트 회원이나 내가 할 필요가있다 앨리어싱을 피하기위한 다른 것? 문자열 복사는 어떻게됩니까?

+0

복사 문자열은 무엇을 의미합니까? – xmoex

+0

복사 할 문자열이있는 경우 동일한 방법으로 x와 y 점을 복사합니다. 문자열 st = new string (MyString)을 할 필요가 있습니까? – user2214609

+0

문자열 매개 변수로 빌드 작성자를 시도하고 직접 확인하십시오! – MeNa

답변

2

예, 괜찮습니다. 프리미티브 할당은 직접 값을 기준으로합니다. 그러나 객체 참조를 할당하면 참조를 할당하기 만하므로 필드 인 객체를 복사해야합니다.

ints, doubles 및 기타 프리미티브를 복사하는 경우에는 문제가 없습니다. 또한 문자열 객체는 변경 불가능이므로 문자열 객체에서도 작동합니다 (다른 객체에서는 보장되지 않음).

+0

문자열도 기본 요소입니까? 직접적인 가치에 대해 자세히 설명해 주시겠습니까? – user2214609

+0

@ user2214609 문자열은 원시적이 아니며,'String a = b; '는 별명을 만듭니다. 그러나 문자열은 불변이므로이 별칭을 사용하면 혼란을 일으킬 수 없습니다. – delnan

+0

@hexafraction 그 동작은 값 유형과 참조 유형과 아무런 관련이 없습니다 :'MyMutableType a = new MyMutableType (2); MyMutableType b = a; a = 새로운 MyMutableType (3); System.out.println (b);'또한 적절한 보일러 플레이트 생성자와'toString'을 사용하여 3이 아닌 2를 출력합니다. http://ideone.com/pUTcKC를 참조하십시오. – delnan

2

값 유형이므로 값으로 복사되므로 복사하는 것으로 충분합니다. 문자열의 경우 자바 문자열도 변경할 수 없으므로 문자열도 복사 할 수 있지만 이번에는 복사 할 수 있습니다. 건배.