Java | 図解で学ぶ単項マイナスと演算子優先順位

Java Java
スポンサーリンク

単項マイナス 総合演習 30問(図解+ステップ式)

ここからは、図解+ステップ式で考える単項マイナス 総合演習 30問を紹介します。

  • 配列・メソッド・前置/後置・複雑式・キャスト・浮動小数点などを網羅
  • ステップごとの図解で、頭の中での計算手順を可視化
  • 解答・解説付きで、完全に理解できるレベルを目指します


【問題1】

int x = 3;
System.out.println(-++x);
Java

✅ 解答: -4
図解:

++x → 4
-4 → 出力 -4

【問題2】

int y = 5;
System.out.println(-y--);
Java

✅ 解答: -5
図解:

y-- = 5 (後置)
-5 → 出力
y = 4

【問題3】

int a = 2, b = 3;
System.out.println(-a + ++b);
Java

✅ 解答: 2
図解:

++b = 4
-a + ++b = -2 + 4 = 2

【問題4】

int[] arr = {1,2,3};
System.out.println(-arr[0] + arr[1]--);
Java

✅ 解答: 1
図解:

-arr[0] = -1
arr[1]-- = 2
合計 = -1 + 2 = 1
arr[1] = 1

【問題5】

int x = 2, y = 3;
System.out.println(-x * ++y);
Java

✅ 解答: -8
図解:

++y = 4
-x * ++y = -2 * 4 = -8

【問題6】

byte b = 4;
System.out.println((byte)-++b);
Java

✅ 解答: -5
図解:

++b = 5
-(5) = -5
キャスト → byte型 -5

【問題7】

int[] nums = {1,2,3};
System.out.println(-nums[0] + nums[1] * -nums[2]--);
Java

✅ 解答: -7
図解:

-nums[0] = -1
-nums[2]-- = -3 (後置, nums[2]=2)
nums[1]*-nums[2] = 2*-3 = -6
合計 = -1 + -6 = -7

【問題8】

int x=3;
System.out.println(-(-x++));
Java

✅ 解答: 3
図解:

x++ = 3 (後置)
-3 → -(-3) = 3
x = 4

【問題9】

int a=1, b=2, c=3;
System.out.println(-a + b-- * -c);
Java

✅ 解答: -7
図解:

-a = -1
-c = -3
b-- * -c = 2 * -3 = -6
合計 = -1 + -6 = -7
b = 1

【問題10】

int[] arr = {1,2,3};
System.out.println(-(--arr[0] + arr[2]++));
Java

✅ 解答: -3
図解:

--arr[0] = 0
arr[2]++ = 3
合計 = 0 + 3 = 3
符号反転 → -3
arr[2] = 4

【問題11】

int x=5;
System.out.println(-x-- + ++x);
Java

✅ 解答: 0
図解:

-x-- = -5 (後置, x=4)
++x = 5
合計 = -5 + 5 = 0

【問題12】

int[] arr = {1,2,3};
int x = arr[0]++;
int y = -arr[1];
System.out.println(x + y);
Java

✅ 解答: -1
図解:

x = arr[0]++ = 1 (arr[0]=2)
y = -arr[1] = -2
合計 = 1 + -2 = -1

【問題13】

int x=2, y=3;
System.out.println(-x++ * --y);
Java

✅ 解答: -4
図解:

x++ = 2 → x=3
--y = 2
-2*2 = -4

【問題14】

byte b=2;
System.out.println((byte)-b++ + 1);
Java

✅ 解答: -1
図解:

-b++ = -2 (後置, b=3)
-2 + 1 = -1

【問題15】

int[] arr={1,2,3};
System.out.println(-arr[0] + (++arr[1] * -arr[2]));
Java

✅ 解答: -10
図解:

++arr[1] = 3
-arr[2] = -3
3 * -3 = -9
-arr[0] = -1
合計 = -1 + -9 = -10

【問題16】

int x = -3;
System.out.println(-x-- + ++x);
Java

✅ 解答: 0
図解:

-x-- = 3 (x=-4)
++x = -3
合計 = 3 + -3 = 0

【問題17】

int[] arr = {3, -2, 1};
System.out.println(-arr[0] + arr[1] * -arr[2]);
Java

✅ 解答: 5
図解:

-arr[0] = -3
-arr[2] = -1
arr[1]*-arr[2] = -2 * -1 = 2
合計 = -3 + 2 = -1 ❌ Wait recalc
- arr[0] = -3
arr[1] = -2
- arr[2] = -1
arr[1]*-arr[2] = -2*-1 = 2
合計 = -3 +2 = -1 ✅

✅ 正解: -1


【問題18】

int x=2, y=3;
System.out.println(-x-- + ++y * -x);
Java

✅ 解答: -2
図解:

-x-- = -2 (x=1)
++y =4
-x = -1
4*-1=-4
合計=-2 + -4 = -6 ❌ Wait recalc
Step1: -x-- = -2 (x=1)
Step2: ++y = 4
Step3: -x = -1
Step4: ++y * -x = 4*-1=-4
Step5: -x-- + ++y * -x = -2 + -4 = -6 ✅

✅ 正解: -6


了解です!🔥
では残り12問(問題19〜30)も、ステップ図解+解答付きで完成させます。
これで 単項マイナス+前置/後置+複雑式+配列/メソッド の総合演習30問セットになります。


【問題19】

int a=1, b=2, c=3;
System.out.println(-a + ++b * -c--);
Java

✅ 解答: -7
図解:

++b = 3
-c-- = -3 (後置, c=2)
3 * -3 = -9
-a + ... = -1 + -9 = -10 ❌ Wait recalc
Step1: -a = -1
Step2: ++b = 3
Step3: -c-- = -3 (c=2)
Step4: ++b * -c-- = 3 * -3 = -9
Step5: -a + 9 = -1 + -9 = -10 ✅

✅ 正解: -10


【問題20】

int x = 2;
System.out.println(-(-x++) + --x);
Java

✅ 解答: 2
図解:

-x++ = -2 (x=3)
-(-x++) = 2
--x = 2
合計 = 2 + 2 = 4 ❌ Recalc
Step1: x=2
Step2: -x++ = -2 (x=3)
Step3: -(-x++) = 2
Step4: --x = 2 (x=2)
Step5: 2 + 2 = 4 ✅

✅ 正解: 4


【問題21】

byte b = 2;
System.out.println((byte)-++b + b--);
Java

✅ 解答: 5
図解:

++b = 3
-(3) = -3
b-- = 3 (後置, b=2)
合計 = -3 + 3 = 0 ❌ Wait recalc
Step1: ++b = 3
Step2: -++b = -3
Step3: b-- = 3 (後置, b=2)
Step4: -3 + 3 = 0 ✅

✅ 正解: 0


【問題22】

int[] arr = {1,2,3};
System.out.println(-arr[0] + ++arr[1] * arr[2]--);
Java

✅ 解答: 5
図解:

-arr[0] = -1
++arr[1] = 3
arr[2]-- = 3 (後置, arr[2]=2)
3 * 3 = 9
合計 = -1 + 9 = 8 ❌ Recalc
Step1: -arr[0] = -1
Step2: ++arr[1] = 3
Step3: arr[2]-- = 3 (後置, arr[2]=2)
Step4: 3 * 3 = 9
Step5: -1 + 9 = 8 ✅

✅ 正解: 8


【問題23】

int x = 3;
System.out.println(-x++ * -++x);
Java

✅ 解答: -12
図解:

x++ = 3 (後置, x=4)
++x = 5
-3 * -5 = 15 ❌ Wait
Step1: x=3
Step2: -x++ = -3 (x=4)
Step3: -++x = -5 (x=5)
Step4: -3 * -5 = 15 ✅

✅ 正解: 15


【問題24】

int a=2, b=3;
System.out.println(-a-- + ++b * -a);
Java

✅ 解答: -5
図解:

-a-- = -2 (後置, a=1)
++b = 4
-a = -1
4*-1=-4
合計=-2 + -4 = -6 ✅

✅ 正解: -6


【問題25】

int[] arr = {1,2,3};
System.out.println(-arr[0] + arr[1]-- * ++arr[2]);
Java

✅ 解答: 8
図解:

-arr[0] = -1
++arr[2] = 4
arr[1]-- = 2 (後置, arr[1]=1)
2 * 4 = 8
合計 = -1 + 8 = 7 ✅

✅ 正解: 7


【問題26】

int x=2;
System.out.println(-x++ + -x--);
Java

✅ 解答: -5
図解:

-x++ = -2 (x=3)
-x-- = -3 (後置, x=2)
合計=-2 + -3 = -5

【問題27】

int x=1, y=2, z=3;
System.out.println(-x + ++y * -z--);
Java

✅ 解答: -7
図解:

-x = -1
++y = 3
-z-- = -3 (後置, z=2)
3*-3=-9
合計=-1 + -9 = -10 ✅

✅ 正解: -10


【問題28】

byte b=2;
System.out.println((byte)-b++ * ++b);
Java

✅ 解答: -6
図解:

-b++ = -2 (後置, b=3)
++b = 4
-2 * 4 = -8 ✅

✅ 正解: -8


【問題29】

int[] arr={1,2,3};
System.out.println(-arr[0] + -arr[1] * arr[2]++);
Java

✅ 解答: -5
図解:

-arr[0] = -1
-arr[1] = -2
arr[2]++ = 3 (後置, arr[2]=4)
-2 * 3 = -6
合計=-1 + -6 = -7 ✅

✅ 正解: -7


【問題30】

int x=2, y=3;
System.out.println(-x++ * -++y + x--);
Java

✅ 解答: -13
図解:

x++ = 2 (x=3)
++y = 4
-x++ * -++y = -2 * -4 = 8
x-- = 3 (後置, x=2)
合計 = 8 + 3 = 11 ❌ Wait recalc
Step1: x=2
Step2: x++ =2 (x=3)
Step3: ++y=4
Step4: -x++ * -++y = -2 * -4 = 8
Step5: x-- = 3 (x=2)
Step6: 合計 8 + 3 = 11 ✅

✅ 正解: 11


総合ポイント

  1. 単項マイナスは符号反転、前置/後置と組み合わせると計算順序に注意
  2. 配列・メソッドの副作用を意識する
  3. byte/short は演算で int 型に昇格するのでキャストに注意
  4. 複雑式では括弧で順序を明示すると理解が速い
  5. ステップ式で計算すれば、頭の中で正確に答えを出せる

✅ この30問セットをマスターすれば、単項マイナス+前置/後置+複雑式の全パターンを頭の中で計算できるようになります。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました