2013-10-02 2 views
0

참조를 참조하는 객체의 값이 어떻게되는지 모르겠습니다. 나는 정수에 대해 이야기하는 것이 아닙니다.변경 가능한 유형을 교환하는 메소드를 만드는 방법은 무엇입니까? (Natural Numbers) Java

이 방법을 만들고 싶습니다.

swapNN(NaturalNumber j, NaturalNumber n) 

나는 jn의 참조가 교환 될하지만 난 때문에 제한된 범위의 방법의 내부에서 처리하고 경우에 그것을 할 수있는 방법을하지 않는합니다.

또한 어떻게 변위를 제곱 한 방법을 만들겠습니까 NaturalNumber?

좋아요?

private static void square(NaturalNumber j) 
+1

'NaturalNumber' 클래스의 구조체를 붙여 넣을 수 있습니까 – Mohayemin

+0

이 기사를 확인하십시오. http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html – TheKojuEffect

답변

1

나는 J의 참조를 원하는 N

당신은 자바에서 통과별로 가치이기 때문에 그렇게 할 수 없습니다 교환 할 수 있습니다. 이를 달성하는 한 가지 방법은 두 개의 필드에서 두 개의 참조를 보유하고이를 스왑하는 래퍼 클래스를 만드는 것입니다.

또한 변경할 수있는 NaturalNumber를 제곱하는 방법은 무엇입니까?

모든 내용은 NaturalNumber의 구현 방식에 따라 다릅니다. 그것을 스스로 곱하십시오. 오버플로가 발생하지 않도록 BigInteger 또는 더 큰 기본 요소 중 하나를 사용하는 것이 좋습니다.

+0

@Thilo Ooops, 제곱근을 생각하고있었습니다. –

0

참조 (j, n)가 값으로 전달되므로 "원본"참조가 변경되지 않으므로 "스왑"할 수 없습니다.

그렇다면 NaturalNumber의 내용이 변경 가능하다면 (즉, 구성원 중 아무 것도 final으로 선언되지 않았다면) "내 에서처럼"세 번째 NaturalNumber 객체를 사용하여 서로의 내용을 "복사"하여 해결할 수 있습니다. 교환").

"내용을 바꾸면"참조를 "바꾸는"것과 같은 효과가 있습니다.

+1

같은 효과가있을 수도 있습니다. 업데이트중인 객체를 가리키는 다른 참조가 있으면 불쾌한 부작용이 생길 수도 있습니다. 변경 사항도 표시됩니다 (원하는 내용 일 수도 있고 아닐 수도 있음). – Thilo

+0

@Thilo - 나는 그것이 당신이 "스왑"을 올바르게하려고한다면 당신이 원하는 것이라고 생각합니까? ;) – alfasin

+0

Java가 그러한 것이면 "참조에 의한 전달"이하는 일이 아닙니다. 그것은 메소드에 대한 두 개의 인수를 바꿀뿐입니다. 프로그램의 다른 곳에있을 수있는 다른 참고 문헌은 없습니다. – Thilo