【Java勉強-第2回】変数について
目次
Java入門 - こちらの記事はシリーズ掲載です
お久しぶりです。 修士論文やら学会に提出する論文やらで、ブログを更新するのをサボってしまっていました。
さて、今回は第2回ということで、 Javaの変数について色々基本的なことを学びましたので、まとめていこうと思います。
随所でPythonになれきってしまった私が注意するポイントがありましたので、そのあたりを特に意識して記録していこうと思います。
統合開発環境のEclipceを使った基本的な出力については、下記URLにて触れていますので、そちらをご覧ください。 【Java勉強-第1回】EclipceでHello World!
変数#
今回使ってみた変数型は以下のとおりです。
- 文字型(char)
- 文字列型(String)
- 整数型(int, long, short, byte)
- 少数型(float, double)
- boolean型(boolean)
文字型から触りだしたのは、 普段研究でPythonを使ってテキストデータを扱っているので、一番感覚的に差が出るかなと思ったからです。
Pythonでは変数の型について、逐一定義する必要はなかったのですが、基本的にソッチのほうが珍しいですよね。
文字型(char)#
- 1文字のみ格納可能
- char で定義
- 格納する文字は シングルクォーテーション「’」 で囲う
気をつけないといけないのは、 格納する文字を必ずシングルクォーテーションでで囲うということですね。 Pythonでは考えないことなので注意が必要です。
// 値の格納
char c = 'あ';
文字列型(String)#
- 文字列を格納
- String で定義 (一文字目が大文字)
- 格納する文字列は ダブルクオーテーション「"」 で囲う
最も気をつけないといけないのは、文字型の「char」とは違って、「String」の「S」が大文字であることです。
また、文字列型はダブルクオーテーション「""」で囲う必要があります。
文字型とは違うので気をつける必要があります。
String s = "ヴィッセル神戸が大好き";
整数型(int, long, short, byte)#
- 整数を格納
- byteで定義した場合は8ビット(-128 ~ 127)
- shortで定義した場合は16ビット(-32768 ~ 32767)
- 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)
- longで定義した場合は値の語尾に 「L」または「l(小文字のエル)」 をつける
- 大文字推奨 :小文字のエルは数字の「1」と間違う可能性があるため
気をつけるポイントはlongで指定した場合に、 値の語尾に 「L」または「l(小文字のエル)」 をつけることです。
小文字のエルは数字のいちと見間違えることがあるので、基本は大文字が推奨されているようです。ちなみに、小文字のエルと数字の1を並べるとこんな感じです 1l
。
また、それぞれの型で格納できる値が決まっています。これらの値を超えると 桁あふれ がおきます。
int x , y, z;
long lx, ly, lz;
x = 1;
y = 2;
lx =100000L;
ly =200000L;
桁あふれ#
桁あふれについてどのような挙動を取るかを確認します。
int
型の変数に格納できる最大値を格納し、その変数に+1したものを出力してみます。
そうすると桁あふれが起きて、下記のように最小値が出力されています。 この桁あふれには注意しないといけません。
// 格納できる最大値の格納
int max_num = Integer.MAX_VALUE;
System.out.println(max_num);
System.out.println(max_num + 1);
--結果--
//最大値
2147483647
//桁あふれ後
-2147483648
少数型(float, double)#
- 少数を格納
- floatで定義した場合は32ビット単精度浮動小数点数
- floatで定義した場合は値の語尾に「F」または「f」をつける
- doubleで定義した場合は64ビット単精度浮動小数点数
こちらは同じ数字でも小数を含むものを扱う場合に用います。
float fx, fy, fz;
double dx, dy, dz;
fx = 0.01F;
fy = 0.02F;
dx = 0.0003;
dy = 0.0004;
割り算について#
数字を用いた演算子では + - * / %
の5つがあると思います。
ここで気をつけないといけないのは割り算関係の / %
の2つになります。
まず整数型のint
を用いた場合の挙動の確認してみます。
例として1/2、5/2、1%2、5%2の結果について見てみます。
int x , y, z;
x = 1;
y = 2;
z = 5;
System.out.println(x / y);
System.out.println(z / y);
System.out.println(x % y);
System.out.println(z % y);
--結果--
0 // 1/2の結果
2 // 5/2の結果
1 // 1%2の結果
1 // 5%2の結果
----
整数型同士の割り算ではこのように、
余りを出す割り算を行っていると考えることができます。
そのため/
では商が%
では余りが演算結果となります。
続いて少数型を用いた結果を見てみます。
float x , y, z;
fx = 1F;
fy = 2F;
fz = 5F;
System.out.println(fx / fy);
System.out.println(fz / fy);
System.out.println(fx % fy);
System.out.println(fz % fy);
--結果--
0.5 // 1/2の結果
1.5 // 5/2の結果
1.0 // 1%2の結果
1.0 // 5%2の結果
----
少数型の場合は、/
の場合、少数を使って割り切った結果を示します。
%
に関しては整数型のときと同様で、余りを出す割り算を行った場合の余りが結果となります。
boolean型(boolean)#
- true か false を格納する変数
if文とか使う時に利用するイメージです。
boolean tflag = true;
boolean fflag = false;
まとめと感想#
今回は変数について色々見てみましたが、 久しぶりに変数型を宣言する言語に触れたので、懐かしさを感じました(笑)。
文字型と文字列型のシングルクォーテーションとダブルクォーテーションの使い分けには、特に気をつけようと思います。
次は簡単なfor文と条件分岐についてやっていこうかなと思います。