..
数値昇格は何ですか? これは、プログラムの非常に一般的な操作であり、 数値演算子 (例えば"+"に加えていることを示す)に関連付けられているオペランド (たとえば、加数)の暗黙の変換に対応しています。
オペランドは、操作のために期待されているデータの正確に型が一致しないときはいつでも、この変換が必要です。 いくつかのケースでは、 変換は明示的に(使用例:必要がキャストを )、したがって、プログラマの責任です。
他の場合、特により高度なプログラミング言語の場合には、分散(以下、我々はJava言語に特に参照する)で、 変換は、このように暗黙のうちに、自動的に行われます。 このケースでは、 数値昇格の話をすることが可能です。
単項数値昇格とバイナリ数値昇格、(単項またはバイナリ)演算に関係する算術演算の性質に大きく異なる:私たちは、 数値昇格の2つの主要なタイプを区別することができます。 また、Javaコードのいくつかの簡単な例を提供するために注意しながら、両方の鎖を見てみましょう。
例を見てみましょう:
バイトb = 2;
します。int a [] =新しいint [B];
文字c ='\ u0001と';
に[C] = 1;
[0] = C;
このケースでは、非常に単純なものの、我々は、 単項数値昇格の3つの例を識別することができます。 教育第一がします。int a [] =新しいint [B]。 bは byte 型の変数のときに"実際の配列のサイズは、 整数型(int型の変数)で表す必要があります。
その後、[C] =- 1私たちは教育に反映することができます。 この場合、それは再び"配列、ではなく、整数型のパラメータが、(この場合は)型の文字のインデックスとして渡されます。 同様に、次の文[0] =- C 0はint 型ではなく文字の値に"配列の位置を与える。
我々は、それが"代入演算子("="),従って単項演算子、オペランドが 1つだけに関連付けられているへの変換に関連付けられている最初の観察。 ここでは、 単項数値昇格を語ることができる理由です。 どのようにコンパイラが暗黙的にステップに関連付けられた変換を処理します?
すべての3つのケースでは、 変換は 2つの基本ステップに分解することができます。 最初の変換のタイプのアンボックス化である、(Byte型や文字のこの場合)のデータ、すなわち、対応するプリミティブデータ型(char型のバイト、それぞれ)に変換されます。
この時点で、検討中の3つのすべてのケースで、変換の第二段階に進みます拡大プリミティブ変換です。 要するに、情報の損失はありませんし、実際に、あなたが選択した新しいデータ型(int)は ( 変数 bに格納されている、またはByte 型のc、文字型)情報を格納するために比べて有り余るです。 このような理由から、コンパイラは変換を自分で行うことができます。
我々は、これらの記載されている数値昇格のコンテキストで暗黙的に実行することができる唯一の現実的な変換として、それを強調する。 そこに型変換のアイデンティティの可能性も実際にありますが、問題の変数のデータ型を維持し、従って興味の主に理論的です。
| |
Linuxの(コース)
オープンソースシステムへの完全なガイド。 49€から。 |
| |
PHP(コース)
動的なWebサイトを作成するためのフルコース。 49€から。 |
| |
RubyとRuby on Rails(コース)
RubyとRoRのと、ソフトウェアやWebアプリケーションを作成します。 39€から。 |