개체 또는 변수의 주소를 Java의 다른 개체에 저장할 수있는 방법은 무엇입니까? 우리가 C++에서하는 것처럼변수 Java의 참조 (주소) 저장
int a = & b; // b 또한 int입니다
참조 형식 개체를 Java에서 참조로 모든 메서드에 전달하려면 기본적으로이 cuz를 값으로 전달할 수 있습니다.
개체 또는 변수의 주소를 Java의 다른 개체에 저장할 수있는 방법은 무엇입니까? 우리가 C++에서하는 것처럼변수 Java의 참조 (주소) 저장
int a = & b; // b 또한 int입니다
참조 형식 개체를 Java에서 참조로 모든 메서드에 전달하려면 기본적으로이 cuz를 값으로 전달할 수 있습니다.
기본적으로 할 수 없습니다. 모두은 Java에서 값으로 전달되며이를 변경할 방법이 없습니다.
가장 가까운 사용자 지정 범용 가변 래퍼 유형을 만들거나 길이가 1 인 배열을 사용하는 것이 가장 좋습니다. 래퍼 방식을 사용하면 수행중인 작업이 훨씬 명확 해지지 만 효율성은 떨어집니다. 원할 경우 AtomicReference<V>
을 래퍼 유형으로 사용할 수 있습니다. 단, 사용하려는 경우 은을 의미하지만, 그렇지 않은 경우에는 동시성이 걱정됩니다.
프리미티브 유형의 래퍼의 경우 Integer
, Long
등 클래스를 사용하거나 각 프리미티브에 개별 래퍼 유형을 쓸 수 있습니다. (역시 후자가 약간 더 효율적일 것입니다.)
근본적으로는 을 사용해보십시오. 필요하지 않은 코드를 설계해야합니다. I 매우은 거의 유용한 기법이 아닙니다. 자신을 매우 자주하고 싶다면 다른 언어로 "생각하고"있을 수 있습니다 ...
Java에서는 주소를 사용할 수 없습니다. 그러한 능력은 단순히 존재하지 않습니다. 모든 것은 가치에 의해 전달됩니다. 당신이 변이되는 물체를 통과 할 때 여러 가지 방법이 있습니다
이A) 배열을 전달합니다
int [] valueArray = new int[1];
valueArray[0] = <your value>;
b는) 당신은 자기가 쓰기 갈까요 변경 가능한 래퍼를 전달합니다.
c)는 입력 INT에 합격하여 새 값 retur : 자바를 C++에서 차이를 온다
int a = 5;
a = sqr(a);
합니다. java에서 Object의 주소를 사용하는 것은 좋지 않지만, 논리 주소를 가져 오는 방법이 있습니다.
은 내가 당신을 도울 바랍니다.
요즘 우리는 이러한 참조를 시뮬레이트하기 위해 배열 대신 AtomicReference를 사용하고 있다고 생각합니까? – Bananeweizen
@Bananeweizen : 내가 편집하고있는 동안 당신이 코멘트를하고 있었음에 틀림 없다 :)이 둘 모두는 정말로 관련이 없다는 것을 암시한다. - 내가 AtomicReference를 사용한다면, 나는 보통 어떤 종류의 동시성이 있어야한다고 생각한다. 계속. –
with sun.misc.Unsafe, 당신은 당신의 자바를 가질 수 있고 당신의 C도 먹을 수 있습니다! ;) – sjr