2つの値を交換するたびに、実際のスワップを実行するために一時的に使用する必要があります。 Javaは、2つの変数の値を単純に入れ替えるために、どんなクラスでもファシリティメソッドを提供しないのはなぜですか?Javaが単純なスワップ機能を提供しないのはなぜですか?
4
A
答えて
12
JavaはPass-by-Valueです。そのため、簡単なスワップメソッド(ref)を作成することはできません。
ただし、別のオブジェクト内のあなたの参照をラップし、内部のREFを入れ替えることができます:それは可能ではないので
public static void main(String[] args) {
Ref<Integer> a = new Ref<Integer>(1);
Ref<Integer> b = new Ref<Integer>(2);
swap(a, b);
System.out.println(a + " " + b); // prints "2 1"
}
public static <T> void swap(Ref<T> a, Ref<T> b) {
T tmp = a.value;
a.value = b.value;
b.value = tmp;
}
static class Ref<T> {
public T value;
public Ref(T t) {
this.value = t;
}
@Override
public String toString() {
return value.toString();
}
}
3
Javaは、このような方法を提供していません。 変数は値によってメソッドに渡されます。はい、これらがオブジェクトであっても。この場合、オブジェクトを値で参照します。したがって、この変数を受け取ったメソッド内のソース変数の値をパラメータとして変更することはできません。
int a = 5;
int b = 6;
swap(a, b);
// a is still 5, b is still 6!
void swap(int first, int second) {
int tmp = first;
first = second;
second = tmp;
}
関連する問題
- 1. アセンブリ - スワップ機能 - なぜ機能しないのですか?
- 2. 私の単純なエコーコマンドが機能しないのはなぜですか?
- 3. なぜこの単純なコードが機能しないのですか
- 4. なぜこの単純なストアドプロシージャが機能しないのですか
- 5. なぜ単純なパスポートローカル認証が機能しないのですか?
- 6. この単純なAJAXスクリプトはなぜ機能しないのですか?
- 7. この単純なPHP式はなぜ機能しないのですか?
- 8. 単純なサーブレットが機能しない
- 9. 単純なバインディングが機能しない
- 10. Javaが配列を逆転させる標準機能を提供しないのはなぜですか?
- 11. XTextが提供しないANTLRの機能は何ですか?
- 12. この単純なリダイレクトスクリプトはなぜ機能しませんか?
- 13. なぜこの単純なJSFiddleは機能しませんか?
- 14. 単純なjQuery:これはなぜ機能しませんか?
- 15. このスワップ方法が機能しないのはなぜですか?
- 16. 私の単純な機能はなぜ機能しませんか?
- 17. ルビーでディープコピーが必要な最も単純な例を提供
- 18. なぜこのJavaコードは機能しませんか?単純計算機
- 19. なぜ簡単なchar *が機能しないのですか?
- 20. この単純な比較がJavaScriptで正しく機能しないのはなぜですか?
- 21. 私の単純なケースではパディング左が機能しないのはなぜですか?
- 22. なぜこの単純なコードが機能しないのですか?これを解決するには?
- 23. なぜ、シングルトンインスタンスがJavaのデフォルトで提供されていないのですか?
- 24. 単純なjavascriptフォームの検証でエラーメッセージが機能しない
- 25. Extjs6.5での単純な例フィドルが機能しない
- 26. Rのこれらの2つの単純なコード行が機能しないのはなぜですか?
- 27. 非常に単純なノックアウトバインディングが選択ボックスで機能しないのはなぜですか?
- 28. この単純なUI-Routerの例が機能しないのはなぜですか?
- 29. 私の単純なファイル名の拡張子チェックが機能しないのはなぜですか?
- 30. なぜjquery.inArrayは単純な文字列では機能しませんか?
なぜJavaはそれには何もないのですか? Javaクリエイターに相談してください。 – shift66
http://stackoverflow.com/questions/3624525/how-to-write-a-basic-swap-function-in-javaおよびhttp://stackoverflow.com/questions/2393906/how-do-i- make-my-swap-function-in-Java –
@Ademibanはあなたの文法を修正します。 – Juvanis