2019/02/06
変数というのはプログラミングの基本中の基本であり超重要です。変数はよく箱に例えられたりします。実際使ってみて変数というのがどんな物かなんとなく雰囲気を感じ取って下さい。
sponsored link
変数の宣言
Javaでは変数を使う為には絶対しないといけないことがあります。それは変数の宣言というやつです。簡単です。半角スペースを挟んで変数の型と変数の名前を書いて、文の終了を意味する「;」セミコロン。
int age;
これでint型の変数ageを宣言しました。intというのは整数を入れる型のことです(整数は英語でintegerと言うそうです)。
変数の型っていうのはいろいろあって、大きく分類すると、数値を入れる型、文字を入れる型、true(真)かfalse(偽)のどちらかを入れる型の3種類に分けられます。また、型(箱)自体を自分で作ることもできます。
とりあえずはint型を使って変数というのはどんなものか体験してみて下さい。(変数型についての詳しいことは、こちらをどうぞ。→基本データ型(プリミティブ型)について)
変数は箱に例えられると先ほど言いましたが、「int age;」でageという名前の整数を入れる箱を用意したわけです。まだ中身は空っぽです。
変数の名前は基本的には自由につけていいですが、一応名づけにもルールがあります。publicとかstaticとかclassとか、プログラミングをする上で元々意味を持っている単語がいろいろありますよね。こういうのは予約語と言って変数の名前に使ってはいけません。それと数字を名前の先頭に持ってきてはいけません。「1test」はNG、「test1」はOK。後、全く同じ名前を2つ以上の変数に付けたらややこしいのでこれもできません(本当は「同じスコープ内では」という注釈がいるのですが、今は横に置いといて下さい)。
変数の初期化
変数の初期化なんて大層な言い方をしますが、ただ単にその変数に値を入れるだけの話です(箱の中にモノを入れるようなこと)。値がないと使えないですから。
age = 35;
こんな風に変数に値を入れるには「=」を使います。プログラミングで使われる「=」は数学で使う「=」と少し違います。プログラミングの場合、「=」は「左辺に右辺を代入する」という意味です。だからもし、
age = 35; age = 36; age = 37;
っていうふうにプログラムで書くと、ageという変数に35を代入してから、次は36を代入して、最後に37を代入しているので、最終的にageの値は37になっています。数学でこんなこと書いたら、0点ですが、プログラミングでは問題ないです。数学で使う「=」とはニュアンスが違いますよね。
では、変数の宣言と初期化をします。
int age; age = 35;
これで、
「int型の変数ageを使います。」
「ageに35を代入します」
という意味になります。これだけで変数の宣言と初期化はOKです。
ちなみに宣言と初期化はこんな風につなげても問題ないです。
int age=35;
変数を使ってみる
変数を使ってみる為に新しいclassを作ります。
ちょっと脱線しますが、これからjavaファイル(プログラム)を書いたり実行したりすると思うのですが、コンパイルする際に「cd」コマンドで移動するのは面倒なので、コマンドプロンプトを立ち上げた時に最初に表示されるディレクトリ(前回の例では「C:¥Users¥owner」)内でjavaファイルを作った方が楽ちんです。(参考:コンパイルとクラスファイルの実行)
さて、戻ります。変数を使ってみる為にclassを作るのですが、class名は、変数という意味の英語「variable」に「test」を足して「VariableTest」にしましょう。Javaでは2つ以上の英単語を続けて一つの名前にする場合は、後に続く単語の頭文字を大文字にするという慣習みたいなのがあるのでそれに従いましょう。後、class名は大文字で始めなければなりません(これも慣習みたいなものなんですが、これは非常に大事で意味のある慣習なので絶対従いましょう)。
クラスの宣言「public class VariableTest{ }」、そのブロックの中に、mainメソッド「public static void main(String[ ] args){ }」そのブロックの中に書いたことが実行されるんでしたね。では、mainメソッドの中に実行する内容を書いていきましょう。
[VariableTest.java]
public class VariableTest{ public static void main(String[] args){ int age = 35;//---------① System.out.print(age);//----② } }
①int型変数ageを宣言し、そこに35を代入。
②printメソッドの引数にageを渡す。
引数(ひきすう)というのは、メソッドを呼ぶときに( )の中に入れる値のことを言います(引数については後で詳しくやります)。printメソッドは引数に渡された文字列を画面に出力するメソッドでしたが、実は引数に渡せるのは文字列だけではありません。引数に変数を渡すと、その変数に入っている値を出力してくれます。
このプログラムを実行すると、35と出力されます。変数ageの中身がちゃんと35になっているということです。
↑クラス名が間違っています。正しくはVariableTestです。
では、ちょっとプログラムらしいことをしてみましょう。
public class VariableTest{
public static void main(String[] args){
int age = 35; //-------------①
System.out.print("age:"); //---②
System.out.print(age); //---③
}
}
①int型の変数ageを宣言して、そこに35を代入。
②文字列「age:」を出力。
③変数ageの中身の35を出力。
という段取りです。どういう風に出力されるかというと、
↑クラス名が間違っています。正しくはVariableTestです。
こうなります。②の「”age:”」はダブルクォーテーションで囲ってるのでただの文字列として出力されるのに対し、③の「age」はダブルクォーテーションで囲ってないので変数ageとして処理されます。
ではもうちょっと手を加えます。
public class VariableTest{ public static void main(String[] args){ int age = 35; System.out.print("age:"); System.out.println(age); //--------① age = age + 1; //-----------------② System.out.println("1年後・・");//---③ System.out.print("age:"); System.out.print(age); //---------④ } }
変数ageの宣言、初期化(値の代入)は同じです。文字列「age:」の出力も同じ。
①は先ほどと同じで変数ageの中身を出力しているんですが、printメソッドが微妙に変わってます。これはprintlnメソッドです。printメソッドでの出力と違ってprintlnメソッドで出力するとその出力の最後に改行が追加されます。それだけの違いです。ちなみに「ln」というのは「In(アイエヌ)」ではないですよ。おそらく「line」の略だと思いますが、「ln(エルエヌ)」ですのでご注意を。
②は一体何をしているかと言うと、
age = age + 1;
間違っても、この方程式を解かないように。(笑)
この「+」はただの足し算と言えば足し算なのですが、算術演算子というものでいろいろルールがあります。詳しくは次回やりますが、こういう場合、まず右辺(age + 1)が計算されます。ageの中身は35ですから、35+1で36になります。するとこの式はこう変換できますよね。
age = 36;
先に右辺が計算されてから、その答えが左辺に代入されるわけですね。結果的にageには36が代入されました。
③文字列「1年後・・」が出力されて(printlnメソッドなので)、改行。
で、また「age:」が出力された後に、
④変数ageの中身を出力。ここでは「36」と出力されます。②でageには36が代入されているのでageの中身の値が36に変わっているからですね。
結局、このプログラムの結果こう出力されます。
↑クラス名が間違っています。正しくはVariableTestです。
こんな風に、プログラムによって変数と言うのは中身がころころ変わったりします。だから変数って言うんですね。”箱”に例えられる変数というものがなんとなく分かりますでしょうか?
注)こんなことする人、僕以外には居ないかも知れませんが、一応・・・
public class VariableTest{
public static void main(String[] args){
int age = 35;
System.out.print("age:");
System.out.println(age);
int age = age + 1;
System.out.println("1年後・・");
System.out.print("age:");
System.out.print(age);
}
}
緑字の「int age」に注目して下さい。こんな風にしたら親切な感じがしませんか?ageが何型の変数だったか忘れないようにたまにageの前にintをつけてあげるんです。
・・ってこんなことしないようにっ!この「変数型 変数名」という形は、変数の宣言の形です。それ以上でもそれ以下でもないです。こんなことするとageは既に宣言しているのにまた別でint型の変数ageを宣言してしまうことになり、「その変数名は既に使ってます!」ってことでコンパイルエラーになります。気をつけましょう。(たぶんする人居てないですねw)
今回は整数を保持する変数型intを使って、変数の使い方の例を見てみました。なんとなく変数がどんなものか分かりましたでしょうか?しっかり理解するには使ってみるのが一番です。けど使ってみるにもプログラミングについてもっと分からないと使えないですよね。次は「演算子」というのを見てみましょう。変数と演算子がある程度分かれば、プログラミングでできることが一気に広がりますのでがんばりましょう。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス
コメント
変数はVariableだと思います。
by 匿名 2015/09/25 20:48
ご指摘ありがとうございます。
お恥ずかしい限りです。。
by Nobuo@管理人 2015/09/30 12:35
すみません、初めまして。
毎日勉強のためにここを見ています。
とても分かりやすくでJAVAを学ぶのが
とても楽しいです。
ところで質問ですが最後の画像の中に
赤い文字がないのですが、どこにありますか?
探しているのですが見つかりません。
僕の環境が悪いのでしょうか?
by 初心者 2015/10/26 10:51
ミス表記です。。訂正しておきました。
ご指摘ありがとうございます。非常に助かりますので疑問があればご遠慮なく書き込んでください。(^^;)
by Nobuo@管理人 2015/10/26 12:25
コンパイルする際に「cd」コマンドで移動するのは面倒なので、コマンドプロンプトを立ち上げた時に最初に表示されるディレクトリ(前回の例では「C:¥Users¥owner」)内でjavaファイルを作った方が楽ちんです。を詳しく教えて下さい。
by 匿名 2016/01/10 13:21
「コンパイルと実行」をよく読んでみて下さい。
by Nobuo@管理人 2016/01/30 00:09
上のコマンドをコピペで実行すると、「エラー: 変数 ageはすでにメソッド main(String[])で定義されています」と出てしまいます。
私の環境に問題があるのでしょうか?
解決方法を教えていただけないでしょうか?
よろしくお願いします。
by 超初心者です 2016/02/08 12:52
ちゃんと読んでくださいw
by Nobuo@管理人 2016/02/08 14:01
お騒がせいたしましたっ(>_<)
by 超初心者です 2016/02/09 17:17
ValuableTest?
VariableTestじゃないんですか・・・
by 匿名 2017/03/20 19:12