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. この単純なPHP式はなぜ機能しないのですか?
- 3. Javaが配列を逆転させる標準機能を提供しないのはなぜですか?
- 4. XTextが提供しないANTLRの機能は何ですか?
- 5. なぜこの単純なJSFiddleは機能しませんか?
- 6. 単純なjQuery:これはなぜ機能しませんか?
- 7. なぜこのJavaコードは機能しませんか?単純計算機
- 8. 私の単純なケースではパディング左が機能しないのはなぜですか?
- 9. Symfony2コントローラのスワップが機能しない
- 10. なぜ、シングルトンインスタンスがJavaのデフォルトで提供されていないのですか?
- 11. JQuery検証プラグインが単純なボタンで機能しない
- 12. GoDaddyサーバーでホストされている場合、単純なサーブレットが機能しない、なぜですか?
- 13. Jqueryの単純なページ設定が機能しない
- 14. なぜ機能しないのですか?私はSQLに新たなんだ、単純なSQLクエリ
- 15. なぜこれは単純です:afterと:before擬似要素が機能しないのですか?
- 16. HQL to SQLiteデータベースでNHibernateの単純選択が機能しないのはなぜですか?
- 17. これはなぜ機能しないのですか? Java
- 18. なぜこの単純な挿入文が機能しないのですか(PDO)?
- 19. Noobie Jquery質問 - なぜこの単純なスクリプトは機能しませんか?
- 20. なぜこの単純なJSONエンコーディングは機能しませんか?
- 21. なぜこの単純なJavascript連結は機能しませんか?
- 22. なぜこの非常に単純なJavascriptコードは機能しませんか?
- 23. なぜこの単純なjQueryスクリプトは機能しませんか?
- 24. 単純なAndroid変換アプリケーションが機能しない
- 25. 単純なsparqlクエリが機能しない、日付比較
- 26. 非常に単純なソートアルゴリズムが機能しない
- 27. 本当に単純なUPDATEクエリが機能しない
- 28. 単純なカウント機能が働かない
- 29. Angular's ng-showのほとんどの単純なケースはなぜ機能しないのですか?
- 30. なぜこの単純なng-bindとng-showは機能しないのですか?
なぜ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