2

Java ではポインターを使用できないと読みました。ただし、C++ の「This」ポインターは「This」キーワードに置き換えられます。だから誰かがJavaの動的メモリ割り当てとポインタの置換について説明できますか

4

7 に答える 7

7

Javaにはポインターがありません。Java は参照を処理します。

Java には動的メモリ割り当ての概念はありません。したがってmalloc/calloc、Javaには代替手段はありません。JVM は、オブジェクトのメモリの作成と解放を処理します。JVM にはガベージ コレクションの機能が組み込まれているため、それに代わるものfreeも提供されていません。

于 2013-08-15T09:29:07.340 に答える
3

内部的には、オブジェクトへの参照はポインターとして実装されます。Java には、関数ポインターの代わりに使用できる匿名の内部クラスがあります。

2.2.9 もうポインターはありません

ほとんどの研究は、ポインターがプログラマーがコードにバグを挿入することを可能にする主要な機能の 1 つであることに同意しています。構造体がなくなり、配列と文字列がオブジェクトであることを考えると、これらの構造体へのポインターは不要になります。したがって、Java にはポインタ データ型がありません。C で配列、構造体、およびポインターを必要とするタスクは、オブジェクトおよびオブジェクトの配列を宣言することによって、より簡単かつ確実に実行できます。配列ポインターでの複雑なポインター操作の代わりに、算術インデックスによって配列にアクセスします。Java ランタイム システムは、すべての配列インデックスをチェックして、インデックスが配列の境界内にあることを確認します。

このスレッドをチェックしてください

于 2013-08-15T09:29:00.647 に答える
2

Java の参照はポインターではありません。Java では、参照を使用してポインター演算を行うことはできません。

ここでErik Demain による包括的な分析を読むことができますC to Java: Converting Pointers into References

于 2013-08-15T09:32:41.293 に答える
2

Java でのアンマネージ ポインターの「置換」はマネージ参照です。

両者の違いについては、プログラマー フォーラムのこの回答を参照してください。

于 2013-08-15T09:28:50.867 に答える
1
Nothing. Java does not have a concept that is equivalent to Pointers.
于 2013-08-15T09:31:34.550 に答える
1

Java は参照を使用して、変数の初期化、設定、取得などを行います。C++ では、ポインタは基本的にその変数のメモリへの参照です。したがって、ここでの各宣言は Java での参照であり、これは C++ のポインターと同等ですが、内部的にはプログラマーではなく JVM によって処理されます。Java はこれを内部的に処理します。前に c++ のようなポインターはありません。

于 2013-08-15T09:32:01.107 に答える
1

Java はポインターを使用します。「オブジェクト参照」として処理されます。たとえば、次のようになります。

String str = new String("efi");

// str is NOT the string object.
// It is a reference to the String object.

違いは、Java がこれを行い、自分で行うことはできないことです。C++を使用すると、それらを管理できます。

于 2013-08-15T09:29:16.633 に答える