変数
変数とは、値をしまうための箱や、名札のようなイメージです。
「src」フォルダに「com.cmps.data」パッケージを作成し、「Data」クラスを作成してください。
その際、「public static void main(String[] argd)(V)」にチェックを入れましょう。
(※作成の仕方は「Javaプロジェクトの作成」の「パッケージの作成」以降を参照してください)
作成したら、下記のように実際に書いて、アプリケーションを実行してみましょう。
public static void main(String[] args) {
//変数の宣言
String value;
//変数valueへ「TEST」を格納
value = "TEST";
System.out.println(value);
}
どのようになりましたか?
「TEST」という文字列が表示されたと思います。
javaでは「=」は代入(格納)を意味し、変数名 = 値; と書くことで、変数に値を入れることができます。
上の例では、変数「value」に値「TEST」を入れ、
System.out.println() に value を呼び出すと、valueの中身「TEST」が表示されたのです。
プログラムを書いていく上で変数に代入するという行為はたくさん行いますので、必ず覚えましょう。
宣言
Java上では、この値は整数だ、文字列だと明確に伝える必要があります。
この明確にすることを「宣言」といいます。また、明確に使用するための記号を「型」といいます。
先ほどのプログラムでは「String value」と記載がありましたが、
プログラム上では、”「value」という箱はString型(文字列型)を扱う”という意味になります。
変数を宣言するときは、
型 変数名;
と記載します。
さっそく書いてみましょう。
下記のパターンの変数をmainメソッドの中に書いていきます。
//車の名前が格納されている変数を作成する。
String carName;
//動物のタイプ(種類)が格納されている変数を作成する。
String animalType;
//日本の人口が格納されている変数を作成する。
int japaneseCount;
int jpManCount;
int jpPopulation;
「int」とは整数型で、1や1000といった整数を入れることができます。後ほど詳しく説明します!
今度はこのように書いて動かしてみましょう。
//変数に格納
int value1 = 1000;
int value2 = 2000;
int answer = value1 + value2;
System.out.println(answer);
変数「value1」と「value2」が足された結果がコンソールに表示されたと思います。
このように計算することもできます。
直接「int answer = 1000+2000」と書くのは?と思うかもしれませんが、基本的にプログラミングでは一度、変数に格納してから行うのが基本です。
ちなみに「int value1 = 1000;」のように、「宣言」と「代入」を同時に行うことを、「初期化」と言います。
型 変数名 = 値;
やってみよう!下記のパターンを「System.out.println();」で実行してみましょう。(型は「int」を使用します。)
- アイテム1に100、アイテム2に500、アイテム3にアイテム2からアイテム1を差し引いた物を格納し、アイテム3を表示する
→(答え)400と表示される - アイテム4に888、アイテム5に777、アイテム6にアイテム4とアイテム5を足した物を格納し、アイテム6を表示する
→(答え)1665と表示される
宣言後の再代入
変数は「箱」ですので、代入を繰り返し行うことが出来ます。
冒頭に書いた変数valueに再代入してみましょう。
//変数valueへ「TEST」を格納
value = "TEST No.2";
System.out.println(value);//"TEST No.2"
“TEST No.2″と表示され、元の”TEST”とは表示されなくなったでしょう。
このように、再代入(上書き)して中身を変えることもできます。
変数名の付け方
public static void main(String[] args) {
//変数を宣言
int age;
//age、という変数に20の整数を代入
age = 20;
System.out.println("私の年は" + age + "です");
}
このプログラムでは、「age」という変数は整数であることを宣言しています。
復習になりますが、「型△変数」でいえば、「int」が型、「age」が変数です。
作成された変数「age」は、その後、System.out.println()で使用されて値がコンソールに出力されます。
変数名を付けるうえで、いくつかルールがあります。
・使用できる文字は A から Z、a から z、0 から 9、アンダーバー(_)、$
先頭文字には数字の 0 から 9 は使用できない。
・禁止されている単語(予約語)を使ってはならない。
・既に利用されている変数名を再度使ってはならない
・大文字・小文字・全角・半角の違いは区別される
・小文字で始まるわかりやすい名前を付けることが望ましい。
禁止されている単語(予約語)を使ってはならない。
Javaでは「そもそも名前として使ってはいけない単語」とされている予約語が約50個ほどあります。
これまでも登場した「int」や「System」、「void」などがその例です。
これらの言葉はJava上では特別な動きを指示するための言葉であるため、記載しようとするとエラーが発生します。
| 予約語 | ||||||
| abstract | assert | boolean | break | byte | case | catch |
| char | class | const | continue | default | do | double |
| else | enum | extends | final | finally | float | for |
| goto | if | import | instanceof | int | interface | long |
| native | new | package | private | protected | public | return |
| short | static | strictfp | super | switch | synchrnized | this |
| throw | throws | transient | try | void | volatile | while |
もし変数名でエラーが出た場合は、語尾に1を付けてみるなどしてみましょう。
予約語を使ってしまっていた場合であれば、エラーは出なくなります。
既に利用されている変数名を再度使ってはならない
以下のコードを記述してみましょう。
public static void main(String[] args) {
//変数の宣言
int year;
year = 20;
System.out.println(year);
//同じ名前の変数をもう一度宣言しようとしてみる。
int year;
System.out.println(year);
}
この変数を記載すると、13行目の「year」に赤線が引かれていることが分かります。
Javaでは同じ変数を使えないように作られていますので、同じ変数名は使わないようにしましょう。
上記の記述はそのまま保存しようとするとエラーになり、Eclipseの挙動が重くなる原因にもなります。
エラーが出る記述はコメントアウトして保存してください。
大文字・小文字・全角・半角の違いは区別される
以下のコードを記述し、実行してください。
public static void main(String[] args) {
//変数の宣言
int num;
int Num;
//値を代入する
num = 15;
Num = 20;
//出力
System.out.println(num);
System.out.println(Num);
}
ここでは変数「num」と「Num」の宣言をそれぞれ行っています。
同じ変数は使ってはいけない、というルールがありますが、小文字、大文字はそれぞれ別の変数名として扱うことができます。
似たような名前が登録できるとも言い換えることが可能なので、Javaを書くときには大文字小文字が異なれば別の変数であることを留意しておきましょう。
小文字で始まるわかりやすい名前を付けることが望ましい。
慣習的に、変数には小文字で始まる名詞形の名前を付けます。また、複数の単語を繋げて変数名にする場合、2つ目以降の単語の先頭は大文字にします(ローワーキャメル記法)。
例えば、「myItem」や「yourItem」等です。
また、変数に入る情報の内容が想像しやすいように、わかりやすい名前にすることを心掛けましょう。
変数と定数
変数の宣言では「int 変数名」で変数を宣言した後、値を代入して変数の中に入っている値を使ってきました。
プログラムを作っていると、この変数の中に入れる値を何度も代入して同じ変数を使いまわす事が多々あります。
しかし、変数に値を何度も代入していると、今どんな値が入っているかわからない、ということも少なからず起こります。
特に変数の中に入れる値は必ず決まっていて、変えることがない、という場合には定数を使った宣言を使います。
定数は、一度値を代入すると、2回目の代入時にJava側でエラーを発生させて代入させないようにする機能です。
定数の宣言は以下の記載で宣言できます。
final データ型名 変数名;
以下のソースを記入してみましょう。
final int number;
number = 10;
number = 20; //←再代入しようとすると意図的にエラーを発生させられる
//定数の宣言②
//final データ型 変数名 = 代入する値;
final int number = 100;
よくある事例では、システムメッセージを指定する時などに使われます。
「このシステムは現在未稼働です」「業務時間外です。業務時間内に再度ご利用ください」といったメッセージです。
変更する必要がないこと、メッセージを変えてしまうと意図しないメッセージを伝えてしまう可能性があることから、定数として設定します。
データ型
データとは、様々な情報を表現したもので、そのデータを具体的に表現したものが「値」です。データは、その種類によってグループ分けすることができますが、プログラムにおいてこのグループ分けをデータ型と呼びます。よく利用される基本的なデータ型には、次のようなものがあります。
| 分類 | 型名 | 格納するデータ | 変数宣言の例 | 値の記載例 | 利用頻度 |
| 整数型 | long | 大きな整数 後ろにLを付ける。 | long worldPeople; | 125L -5l | △ |
| int | 普通の整数 | int sarary; | 125 -5 | ◎ | |
| short | 小さな整数 | short age; | 125 -5 | △ | |
| byte | 更に小さな整数 | byte grasses; | 125 -5 | △ | |
| 浮動小数点型 | double | 普通の小数 | double pi; | 1.25 -0.5 | ○ |
| float | 少しあいまいでもよい小数 後ろにFを付ける。 | float weight; | 1.25F -0.5f | △ | |
| 論理型 | boolean | trueまたはfalse 真偽値 | boolean isMarried; | true false | ○ |
| 文字型 | char | 1文字の文字列を扱う。 シングルクオテーション(‘)で囲む。 | char initial; | ‘あ’ ‘a’ | △ |
| 文字列型 | String | 文字列を扱う。 ダブルクオテーション(“)で囲む。 | String name; | “あいう” “abcd” | ◎ |
データ型はそのデータ(値)の性質を表しています。例えば、そのデータが ‘A’ や “こんにちは” などのような文字であればデータ型はchar型やString型となり、データが 100 や -1、3.14 などの数値であれば、データ型はint型やdouble型などとなります。
プログラム言語においてデータの型というのはとても大切なものです。
データの性質を理解することで、その値を正しく処理するコードが記述出来ます。
整数を使った値の違い
long、int、short、byte
これらの型はすべて整数を取り扱うことができる型になります。
全て整数を取り扱えますが、Java上での違いはどこにあるのでしょうか。
答えは処理に必要なバイト数になります。
コンピュータ上で処理を行うために、メモリを使って処理を行いますが、数字はOS上でそのまま処理されるのではなく、PCが内部に持っている言葉で処理されます。
| データ型 | 値 |
| byte | 8ビット整数 -128~127 |
| short | 16ビット整数 -32,768~32,767 |
| int | 32ビット整数 -2,147,483,648~2,147,483,647 |
| long | 64ビット整数 -9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
この時、byteを使うとたった1バイトの処理で済むため、
処理が軽くなるというメリットがありますが、大きな数字を扱うことができないデメリットが発生します。
逆に、longを使えば使用できる数字は非常に大きな数字を使うことができますが、処理に8バイトも消費する事になるため、処理時間が長くなるデメリットがあります。
