優先度3の演算子
単項+演算子
単項+演算子はオペランドと同じ値、同じ符号を持つ新しいインスタンスを返します。
オペランドはint、long、realクラスのどれかでなければなりません。そうでなければ、例外がスローされます。
int i = 10;
int j = i; // i and j refer to same instance.
int k = +i; // +i returns a new instance. Therefore, i and k refer to different instances.
単項-演算子
単項-演算子はオペランドと同じ値、反対の符号を持つ新しいインスタンスを返します。
オペランドはint、long、realクラスのどれかでなければなりません。そうでなければ、例外がスローされます。
int i = 10;
int j = -i; // j is -10.
オペランドがproxyクラスを返す場合はproxyクラスの実体が自動的に使用されます。proxyクラスのEntityゲッターを呼び出したのと同じ結果になります。
int i = 10;
proxy pro = new proxy(i);
int j = -pro; // j is -10.
論理否定演算子
論理否定演算子は値が反転した新しいインスタンスを返します。
オペランドはboolクラスでなければなりません。そうでなければ、例外がスローされます。
bool b = true;
bool c = !b; // c is false.
オペランドがproxyクラスを返す場合はproxyクラスの実体が自動的に使用されます。proxyクラスのEntityゲッターを呼び出したのと同じ結果になります。
bool b = true;
proxy pro = new proxy(b);
bool b2 = !pro; // b2 is false.
前置++演算子
前置++演算子はオペランドの値を1加算した後に、その値を持つ新しいインスタンスを返します。
オペランドはint、long、realクラスのどれかでなければなりません。そうでなければ、例外がスローされます。
オペランドが、そのクラスの最大値を持つ場合に前置++演算子を使ってもオーバーフローは起こりません。クラスの最小値になります。
int i = 10;
int j = ++i; // j is 11. i is 11.
オペランドがproxyクラスを返す場合はproxyクラスの実体が自動的に使用されます。proxyクラスのEntityゲッターを呼び出したのと同じ結果になります。
int i = 10;
proxy pro = new proxy(i);
int j = 10 + ++pro; // j is 21. i is decremented.
前置--演算子
前置--演算子はオペランドの値を1減算した後に、その値を持つ新しいインスタンスを返します。
オペランドはint、long、realクラスのどれかでなければなりません。そうでなければ、例外がスローされます。
オペランドが、そのクラスの最小値を持つ場合に前置--演算子を使ってもオーバーフローは起こりません。クラスの最大値になります。
int i = 10;
int j = --i; // j is 9. i is 9.
オペランドがproxyクラスを返す場合はproxyクラスの実体が自動的に使用されます。proxyクラスのEntityゲッターを呼び出したのと同じ結果になります。
int i = 10;
proxy pro = new proxy(i);
int j = 10 + --pro; // j is 19. i is decremented.