優先度3の演算子

++x単項+演算子
--x単項-演算子
!!x論理否定演算子
++++x前置++演算子
----x前置--演算子

前置単項演算子です。右結合性を持ちます。


目次:


単項+演算子

単項-演算子

論理否定演算子

前置++演算子

前置--演算子

単項+演算子

単項+演算子はオペランドと同じ値、同じ符号を持つ新しいインスタンスを返します。

オペランドは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.

オペランドがproxyクラスを返す場合はproxyクラスの実体が自動的に使用されます。proxyクラスのEntityゲッターを呼び出したのと同じ結果になります。


int i = 10;

proxy pro = new proxy(i);

int j = +pro; // j is 10.

単項-演算子

単項-演算子はオペランドと同じ値、反対の符号を持つ新しいインスタンスを返します。

オペランドは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.

Copyright © Rice All rights reserved.