手を動かして学ぶ Java入門 (数値と変数)
環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の数値と変数について学びます。
10分くらいで、さくっと終わる記事をめざしています。
シリーズ一覧
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)
- 手を動かして学ぶ Java入門 (定数の定義)
- 手を動かして学ぶ Java入門 (クラス継承の超基本)
- 手を動かして学ぶ Java入門 (メソッドのオーバーライド)
- 手を動かして学ぶ Java入門 (メソッドのオーバーロード)
続きは近日公開予定!
はじめに
この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/12/17 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)
実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。
詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。
変数とは
変数というと、数学の変数(xとかy) を思い浮かべるかもしれません。
例えば、次のような式です。
y = 2x + 1
しかし、Java の変数は、数学のそれとは少し違います。
それぞれの変数のイメージは…
- 数学の変数 : 数が 不定 であることを表す
- Java の変数 : 好きな数値 を保存しておく入れ物
こんな感じでしょうか。
【注意】
今回の記事では、変数には 数値 を入れることを前提に解説します。
数値の他には、まだ解説していませんが オブジェクト というものがあります。
オブジェクトも変数に入れることができますが、また少し違った考え方が必要なので、別途記事にする予定です。
さて、Java の変数は、
- 変数に名前をつけて 宣言
- 変数に数値を 代入
- 変数を 参照
という流れで使います。
コード例
それでは、プログラムで実際の動きを確認してみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
123
と表示されたら成功です。
コード解説
それでは、コードを少しずつ見ていきましょう。
int x;
x = 123;
System.out.println(x);
変数の宣言
最初は「変数の宣言」ですね。
int x;
この行は、
- 数値(int) を入れる x という名前の変数を用意しなさい
という意味になります。
少し言い換えると、
- これから x という名前の変数を使いますよ
とプログラムに対して 宣言 しているわけです。
(この時点では x の中身はまだ空です)
int は integer(整数) の略称です。
他にも、int より大きな数を扱う long や、小数を扱う double などがあります。
この int や long のことを変数の 型 といいます。
int x;
^^^ <--- 型
long y;
^^^^ <--- 型
変数には、なんでも代入できる、というわけではありません。
例えば、int 型の変数は整数だけを扱うので、小数は代入できません。
小数を代入したい場合は double 型の変数が必要です。
変数へ代入
次は「変数へ代入」です。
変数に数値を入れることを 代入 といいます。
x = 123;
この行では、変数 x に 123 を代入しています。
これでようやく、空だった x に値が入りました。
代入には = 記号を使います。
数学では「等しい」という意味で使いますが、Java では「代入」です。
慣れてないと、ちょっと分かりづらいかもですね。
ちなみに、代入は何度でも可能です。
すでに数値の入った変数に代入すると、新しい数値に 上書き されます。
上書きするコード例になります。
実行して確認してみましょう。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
変数の参照
最後に「変数の参照」です。
System.out.println(x);
println メソッドによって、x の中身が 参照 されます。
結果として、画面に 123 が出力されました。
ちなみに、変数が空の状態で 参照 するとコンパイルエラーになります。
実際に確認してみましょう。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
実行すると、
Main.java:4: error: variable x might not have been initialized
System.out.println(x);
^
1 error
という感じのエラーが出力されたと思います。
variable x might not have been initialized
これは「変数 x は初期化されていません」という意味ですね。
もし時間があれば、上のコードに
- 変数 x に数値を代入する文
を追加して、エラーを回避してみましょう。
変数の初期化
実は、変数の宣言と代入は1行で書くことができます。
むしろ、1行で書くことをおすすめします。
int x = 123;
このように、変数の宣言と同時に値を代入することを、
- 変数の 初期化
といいます。
1行で書くことにより、変数が 空の状態 にはなりません。
つまり、先ほどの
variable x might not have been initialized
というエラーが発生しない、ということになります。
1行で簡潔に書けるのもメリットですね。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
応用問題
【問題】
int x = #;
int # = 4;
int z = x * y + 5;
System.out.println(z);
上記コードの2か所の「#」を書き換えます。
その結果として、「出力」が 17 になるようにしてください。
つまり、
int z = x * y + 5;
上記の式で 変数 z を 17 にする、ということですね。
それでは、下のプログラムの「#」を書き換えて「実行(Ctrl-Enter)」してみましょう。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
無事に、「出力」が 17 となりましたでしょうか?
もし解けなかった場合は、下記の回答例をご参照ください。
回答例
【コード】
public class Main {
public static void main(String[] args) {
int x = 3;
int y = 4;
int z = x * y + 5;
System.out.println(z);
}
}
【出力】
17
まとめ
今回は、次のことを学習しました。
- 変数は 数値 を保存しておく入れ物
プログラムの初学者にとって、変数は少し難しい概念かもしれません。
もし理解に不安がある場合は、ぜひ、プログラム例を自分でいろいろと書き換えて再実行してみてください。
納得できるまで試行錯誤するのは大事ですね。
次回は「手を動かして学ぶ Java入門 (コメントの書き方)」になります。
関連記事
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)
- 手を動かして学ぶ Java入門 (定数の定義)
- 手を動かして学ぶ Java入門 (クラス継承の超基本)
- 手を動かして学ぶ Java入門 (メソッドのオーバーライド)
- 手を動かして学ぶ Java入門 (メソッドのオーバーロード)