この記事は、他の言語でプログラミングしていた人が、Javaでプログラムを組んでみると言う人に向けて書いた記事です。
今回は変数についての説明をします。
変数とは
変数とは、データを格納しておく領域のことです。
もっと大雑把に言うと、値を入れられる箱のようなものです。
変数の種類
変数の種類ごとに括って記載します。
数値系
データ型名 | 名称 | 消費メモリ | 範囲 |
---|---|---|---|
byte | バイト型 | 1バイト | -128~127 |
short | 短整数型 | 2バイト | -32768~32767 |
int | 整数型 | 4バイト | -2147483648~2147483647 |
long | 長整数型 | 8バイト | -9223372036854775808~ 9223372036854775807 |
float | 単精度浮動小数点数型 | 4バイト | ±3.40282347E+38~ ±1.40239846E-45 |
double | 倍精度浮動小数点数型 | 8バイト | ±1.79769313486231570E+308~ ±4.94065645841246544E-324 |
文字系
データ型名 | 名称 | 消費メモリ | 範囲 |
---|---|---|---|
char | 文字型 | 2バイト | ¥u0000~¥uFFFF |
String | 文字列型 | 4バイト(64ビットJVMでは8バイト) | 参照型 |
特殊な型
データ型名 | 名称 | 消費メモリ | 範囲 |
---|---|---|---|
boolean | ブーリアン型 | 1バイト | true(真)/false(偽) |
※真偽判定用変数。
変数の宣言
変数は変数名とデータ型名が必要です。
書き方は "データ型名(半角スペース)変数名;" です。
例)
int i;
String s;
変数の初期化
宣言をしただけでは、型ごとに決められた値しか入りません。自分が入れたい値を入れる必要があります。
書き方は "変数名=入れたい値;" です。
宣言と同時に初期化も行え、その場合は"データ型名(半角スペース)変数名=入れたい値;"と書きます。
※補足説明。数字はそのまま。文字型は''(シングルコーテーション)で囲む。文字列型は""(ダブルコーテーション)で囲む。
例)
int i;
String s;
i = 1;
s = "str文字列";
char c = 'あ';
ただし、型ごとに入れられる値が決まっているので気をつけてください。また、先に宣言をしていないといけません。
悪い例)
int i;
String s;
i = "str文字列"; //整数型に文字列型
s = 2432; //文字列型に数字型
c = 'あ'; //宣言なし
型変換(キャスト)の仕方
【Java入門】キャスト(型変換)とアップキャスト、ダウンキャスト の内容をまとめたものです。
型変換とはある型を別の型に変換することです。自動で行われるものと宣言して行われるものがあります。
まず自動で分かりやすいのが下の例です。
int i = 2;
float f = i;
System.out.println("int i = " + i);
System.out.println("float f = " + f);
System.out.println(); は()内を文字として出力します。
このプログラムを実行すると、
int i = 2
float f = 2.0
が出力されます。
この場合、iとfは文字列型として扱われています。つまり、String型に変換されているということです。
また、float型のfにint型のiを代入できています。これは、iの値を自動でfloat型に変更しているからです。
今の例が自動で行われる型変換(キャスト)です。
次に、自分で行う場合です。自分で行う場合とはどういう事例があるか、一例をあげます。
String s1 = "9";
String s2 = "1";
System.out.println(s1 + s2);
このプログラムを実行すると、
91
が出力されます。それは、String型なので"9"という文字列と"1"という文字列を1つの文字列にするからです。しかし、ここで計算して10を出したい場合、以下のように記載します。
String s1 = "9";
String s2 = "1";
System.out.println(Integer.parseInt(s1) + Integer.parseInt(s2));
Integer.parseInt(); は()内の文字列をint型に変更する処理です。これにより、s1,s2の値をint型にして計算することができるので、出力結果は
10
となります。
型変換の仕方
数値型同士
数字型の場合、(型名)値でやり取り可。
int i = 1;
short s = (short)i;
float f = 2.4;
long l = (i+s+f);
System.out.println(l); //出力結果=5
数値→文字
String.valueOf();を使用する。 あるいは文字列と+で繋げる。
int i = 3;
System.out.println(String.valueOf(i)+2); //出力結果=32
System.out.println("番号" + i); //出力結果=番号3
文字→数字
int型以外は
[データ型名 (最初の文字のみ大文字)].parseデータ型名 (最初の文字のみ大文字); と記載する。
int型は
Integer.parseInt(文字); と記載する。
String s = 03;
int i = Integer.parseInt(s);
int l = Long.parseLong(s);
System.out.println(i); //出力結果=3
System.out.println(l); //出力結果=3
型変換の注意点
型変換には以下の注意点があります。
・型変換はあくまで受け取った値の型を指定するだけなので、変数名を入れたとしても元の変数の値の方は変更されません。
・受け取った値が変換したい方にあっていない場合、エラーが出ます。
・変換した結果、変換前と後で値が変動することがあります。
例)
String s1 = "sss9";
String s2 = "1";
String s3 = "03";
System.out.println(Integer.parseInt(s1) + Integer.parsparseInt(s2); //"sss"部分は整数でないのでエラー
System.out.println(Integer.parseInt(s3)); //3と出力される。0は消える
System.out.println(s3); //03と出力される。上の行のInteger.parseInt(s3)の影響は受けない。