一番かんたんなJava入門

これからJavaを始めようという人の為の超入門サイトです。丁寧、簡単にこだわった解説なので初心者にぴったりです。

【Java】 変数って何?

time 2013/03/04

 変数というのはプログラミングの基本中の基本であり超重要です。変数はよく箱に例えられたりします。実際使ってみて変数というのがどんな物かなんとなく雰囲気を感じ取って下さい。

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メソッドは引数に渡された文字列を画面に出力するメソッドでしたが、実は引数に渡せるのは文字列だけではありません。引数に変数を渡すと、その変数に入っている値を出力してくれます。

 このプログラムを実行すると、
age
35と出力されました。変数ageの中身がちゃんと35になっているということです。

 では、ちょっとプログラムらしいことをしてみましょう。

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を出力。
という段取りです。どういう風に出力されるかというと、
age35
こうなります。②の「”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に変わっているからですね。

 結局、このプログラムの結果こう出力されます。
age36
 こんな風に、プログラムによって変数と言うのは中身がころころ変わったりします。だから変数って言うんですね。”箱”に例えられる変数というものがなんとなく分かりますでしょうか?

注)こんなことする人、僕以外には居ないかも知れませんが、一応・・・

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を使って、変数の使い方の例を見てみました。なんとなく変数がどんなものか分かりましたでしょうか?しっかり理解するには使ってみるのが一番です。けど使ってみるにもプログラミングについてもっと分からないと使えないですよね。次は「演算子」というのを見てみましょう。変数と演算子がある程度分かれば、プログラミングでできることが一気に広がりますのでがんばりましょう。

sponsored link

Androidアプリを作ろう

コメント

  • 変数は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

down

コメントする



CAPTCHA


一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

私の作ったWordPressテーマ

プロに教わるオンライン学習

管理人

Nobuo_CREATE

Nobuo_CREATE

WordPressテーマPrinciple、マテリアルを作ったり、Androidアプリを作ったり、Java入門サイトを作ったり、本を書いたりしています。どうぞよろしく。 [詳細]



sponsored link

オススメ書籍

[オススメpoint]

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

[オススメpoint]

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊!

只今、急拡大中

ゲームを作りたい人専門

個人フットサル予約サイト

ガチ専門

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門