これは過去の試験問題であり、私はプリミティブ型と参照型が最初に何であるか疑問に思っていましたか?配列では、参照型は配列がオブジェクトまたは変数で構成される場所ですが、プリミティブ型はintまたは文字列だけで配列を作成する場所です。 (右?)
テストに関する質問にどのように答え、良い評価が与えられると思いますか?本当にプリミティブなARRAY型を直接参照せずに...それなしでそれを行う方法はありますか?または、配列で説明するだけでいいと思いますか。
これらは、Javaのプリミティブ型です。
他のすべての型は参照型です:それらはオブジェクトを参照します。
これは 言語の基礎に関するJavaチュートリアル の最初の部分です。
原始データ型:
参照/オブジェクトのデータ型:
これらはプリミティブデータ型です
一方、GCが管理するメモリの先頭に格納されているオブジェクトデータ型または参照データ型が管理されているメモリのスタックに保存されます。
これが最も重要な違いです
多くの人が多かれ少なかれ参照型とプリミティブ型を正確に述べているので、Javaにはもっと関連性のある型があることに興味があるかもしれません。 Javaの型の完全なリストを次に示します(私が知っている限り(JDK 11))。
値を説明します(タイプではありません)。
11
インスタンスがObject(インターフェース、クラス、列挙、配列)を拡張する具象型を記述します。さらに、TypeParameterは実際には参照型です!
Integer
注:プリミティブ型と参照型の違いにより、ボックス化に依存してオブジェクトインスタンスのプリミティブを変換したり、その逆に変換したりする必要があります。
注2:型パラメーターは、オプションの下限または上限を持つ型を表し、そのコンテキスト内で名前で参照できます(ワイルドカード型とは対照的)。型パラメーターは通常、パラメーター化された型(クラス/インターフェイス)およびメソッドに適用できます。パラメータタイプは、タイプ識別子を定義します。
Superまたはextendを使用して下限または上限を設定できる不明なタイプ(TypeScriptのような)を表します。
? extends List<String>
? super ArrayList<String>
何もない。値/インスタンスはありません。
void method();
唯一の表現は「null」です。特にタイプ干渉計算中に使用されます。 nullは、論理的に任意の型に属する(任意の型の任意の変数に割り当てることができる)特殊なケースですが、実際にはどの型のインスタンスとも見なされません(例:(null instanceof Object)== false)。
null
ユニオン型は、実際には一連の代替型である型です。悲しいことにJavaには、マルチキャッチステートメントに対してのみ存在します。
catch(IllegalStateException | IOException e) {}
複数のタイプと互換性のあるタイプ。 Javaでは、クラスには最大で1つのスーパークラス(オブジェクトにはない)があるため、干渉タイプでは最初のタイプのみがクラスになり、他のすべてのタイプはインターフェイスタイプでなければなりません。
void method(List<? extends List<?> & Comparable> comparableList) {}
タイプは不明です。これは、特定のLambda定義の場合です(括弧で囲まれていない、単一のパラメーター)。
list.forEach(element -> System.out.println(element.toString)); //element is of unknown type
'var'キーワードを見つけた変数宣言によって導入された不明なタイプ。
var variable = list.get(0);
プリミティブと参照
最初:-
プリミティブ型は、データの基本型です:byte
、short
、int
、long
、float
、double
、boolean
、char
。プリミティブ変数はプリミティブ値を保存します。参照タイプは、配列と同様にインスタンス化可能なクラスです:String
、Scanner
、Random
、Die
、int[]
、String[]
など。変数は、データが保存されるメモリ内の場所にアドレスを保存します。
秒:-
プリミティブ型は値を格納しますが、参照型はヒープ領域のオブジェクトへのハンドルを格納します。参照変数は、CやC++で見られるようなポインターではなく、オブジェクトへの単なるハンドルであるため、参照変数にアクセスしてオブジェクトの状態を変更できることに注意してください。
簡単な答えは、プリミティブはデータ型であり、参照はポインターであり、値を保持するのではなく、値を指し、オブジェクト上で使用されるポインターです。
Primatives:
ブール値
キャラクター
バイト
ショート
整数
長いです
float
ダブル
これらの基本概念を説明する優れたリファレンスがたくさんあります。 http://www.javaforstudents.co.uk/Types