Java解説トップ



・2-1部 変数とは
・2-2部リテラルについて
・2-3部コラム:リテラルの応用記法

第1章 2部 変数とは



Javaだけでなく、すべてのプログラム言語には、変数というものが存在します。
いや、存在しない言語は、あるにはあります。
それは、まあ、僕が今作ってるこのページ、HTMLですが、HTMLをプログラム言語といっていいのかわかりませんし。
(HTMLはマークアップ言語ですね、はい。)
ちなみにらいちたそはHTMLやJavaScriptは苦手です。
あ、JavaScriptとJavaを一緒にしないでくださいね。
で、その変数なんですが、まあ変数ってのは、値を一時的に格納する物って考えてください。
えっと、なんて言おうか、まぁ、先にコードを見てください
int a ;
a = 10 ;
まぁ。簡単ですね。
で、この文の意味は、int 型の、a という名前の付いた、変数を用意し、
その中に10を入れている。
ってことです。
試しに次のコードを実行してみましょう。
				public class Test1_2_1{
					public static void main(String [] args){
						int a;
						a = 0;
						System.out.println(a);
					}
				}
			

あ、一つ大事なことをいうのを忘れてました。
クラス宣言で宣言したクラス名とファイル名を同じにしなくてはいけません。
つまり、
この場合、Test1_2_1.java というファイル名にしなくてはいけないんです。
もっと言えば、Class Example だった場合ファイル名を Example.javaにしないといけないんです。
			

これはJava界における絶対のルールなんです。


ですので、守ってください。
本当は例外がありますが、それはクラスについての解説の時に
では、コンパイルして、実行してみてください。
実行コードは、コマンドプロンプトで

この二つのコマンドですね。
さぁ、なんと表示されたでしょうか。
どこも間違ってなければ10と表示されたはずです。
さぁ、察しが良い方はもう気づいていると思いますが、確認のため、10を好きな整数に書き換えてみてください。
入力された数字が表示されるはずです。
そうです。これが変数です
ん?よくわからない?
そんな方のために例を用意してあります。
変数のイメージ
まぁ、何も言わないでわかりますよね。
箱に数字を入れているだけです。
変数は箱です!!
で、変数はこんな書き方もできます
int a  = 10;

まあ、多分わかるでしょう。
aという名前の付いた変数に10という数字を入れて用意するんです。
つまり
int a;
a = 10;
を1行に納めただけなんです。
つぎ、
				public class Test1_2_2 {
					public static void main(String [] args){
						int a = 10;
						a = 255;
						System.out.println(a);
					}
				}
			
もう、言わなくてもわかりますよね。
表示されるのは 255 です。
あともちろん -14 とかにすれば、マイナスの値になりますよ。

なんとなくイメージついたかな?
じゃあ次、文字を変数に入れましょう。
				public class Test1_2_3 {
					public static void main(String [] args){
						String a = "HelloWorld";
						System.out.println(a);
					}
				}
			
このコードを実行してみてください。
ちゃんとあっていれば、HelloWorldと表示されるはずです。
さっきとは若干違いますよね。
さっき変数の宣言はint a;と言いました。
ですが、嘘です。
あれはint型の変数の宣言にすぎません。
本当は
変数の型名 : その変数に入れられる値の種類
変数名 : 変数の名前 
なんです。
型名、値の種類って何ぞやって思いましたね?
変数にはどんな値でも入れられる物じゃないんです。
最初に決められた種類の値しか入れられないんです。
例えば、ここには数値しか入りません。って書いてある箱に文字は入れたくありません。
つまり、そういうことなんです。
変数には、最初に決めた種類のものしか入らないんです。
数値なら数値しか、文字なら文字しか入らないんです。
では、その種類の指定はどうするのか。
それは、名前指定です。
型にはすべてに名前があります。
その名前を指定して変数を宣言するのです。
では、型は何があるのか、表にまとめました。
プリミティブ型変数一覧
型名 種類 大きさ[bit] 表記例 詳細 ラッパークラス
byte 8ビット符号付整数 8bit byte a = 10; -128~127の間の整数 java.lang.Byte
short 16ビット符号付整数 16bit short a = 1000; -32768~32767の間の整数 java.lang.Short
int 32ビット符号付整数 32bit int a = 186; -1247483648~1247483647の間の整数 java.lang.Integer
long 64ビット符号付整数 64bit long a = 1000000000L; -9223372036854775808~9223372036854775807の間の整数 java.lang.Long
float 32ビット浮動小数点数 32bit float a = 10.15F; 負の値は -3.4028235E+38 ~ -1.401298E-45、正の値は 1.401298E-45 ~ 3.4028235E+38 の範囲。少しアバウト java.lang.Float
double 64ビット倍精度浮動小数点数 64bit double a = 10.0115D; 負の値は -1.79769313486231570E+308 ~ -4.94065645841246544E-324、
正の値は 4.94065645841246544E-324 ~ 1.79769313486231570E+308 の範囲。floatよりも正確
java.lang.Double
boolean 論理型 true または false 1bit boolean a = true; または boolean a = false; 正しい(true)か偽り(false)のみ java.lang.Boolean
char 文字 16ビット符号なし(Unicode)文字 16bit char a = 'A'; Unicode文字1文字。 java.lang.Character
void 型無し 0bit 代入不可 戻り値が無いことを意味する java.lang.Void

以上です。
え、さっきのStringはどこ行ったのかって?
あのこは特別なんです。
何が特別なのかはまた今度解説します。
まあ、別枠なので、上の表には含めませんでしたが下に書いておきますか。
参照値型変数(String)
型名 種類 大きさ[bit] 表記例 詳細 クラス
String 文字列 大きさに決まり無し String a = "文字列"; 文字列 java.lang.String

さあ、よくわからない単語がいくつか出てきましたね。
まずプリミティブ型変数とは何か、からですね。
プリミティブ型変数とは、intなどの変数を総省するのですが、
今は、どんなもの、ってことはいいです。
後で、クラスについて解説するときにまた合わせて説明するので。
とりあえず、プリミティブ型変数というのがあって、表の中のものはプリミティブ型変数ということを頭に入れておいてください。
で、下の、参照値型変数とは何か。
これもクラスについて解説するときに合わせて説明します。
これも、今はこういうのがあるということだけ頭に(ry
で、ほかにも、ビットだとか、ラッパークラスだとかありますが、これも今はスルーで。
ビットについては、このページの下に入れておきます。
ビットについて知るにはまず2進数についての理解が必要ですが...まあ、そこらへんも含めて解説します。
で、voidについても、また別の機会に(メソッドについての時にね)
void君だけは、型であって型でない不思議な子なんです。

リテラルについて

ソースコードに直接記載されてる値( 10 , 334L , 15.5F , 1.41421356D , true , false , '雷' , "あぁ^~心がぴょんぴょんするんじゃぁ^~" など)です。
これらの値を総称して、リテラルと言います。
ただし、リテラルは後ろにつくLや、D、前後に付く'や"も含みます。
それらの文字などは、リテラルのデータ型を決めるものです。
どの表記でどのデータ型のリテラルになるのかをまとめてみました。
代表的なリテラル一覧
リテラルの種類 表記例 変数型 コード例
整数 334 int int a = 334;
大きい整数。末尾がL(l) 5548789L long long a = 5548789L;
小数点付き数値(制度は低め)末尾がF(f) 15.548F float float a = 15.548F
小数点付き数値(制度の高い少数)末尾はD(d) もしくは無し 3.14159D もしくは 3.14159 double double a = 3.14159;
true(真)またはfalse(偽) true もしくは false boolean boolean a = true;
引用符(シングルクオーテーション ' )で囲まれた文字 '雷' char char a = '雷';
二重引用符(ダブルクオーテーション ")で囲まれた文字列 "あぁ^~心がぴょんぴょんするんじゃぁ^~" String String a = "あぁ^~心がぴょんぴょんするんじゃぁ^~";

ですね。
特にchreに二重引用符を使ったりして(コンパイル)エラーになることが多いので気を付けてください
あと、byteやshort用のリテラルの種類は存在しません。
byteやshort等はそのままint用のリテラルが使用可能です。
まぁ、結論から言うと
1 と 1L と 1.0F と 1.0 と '1' と "1" は全くの別物ってことです。

コラム:整数リテラルの応用記法


整数リテラルの先頭に 0xをつけると16進数。
0をつけると8進数
0bをつけると2進数表記として解釈されるよ。
つまり
					int a = 0xFFFF; //--aの値は65535
					int b = 077; //--bの値は63
					int c = 0b1101; //--cの値は13
				
となります。 また、数値リテラルの中にアンダースコア記号(_)を入れることができます。
int a = 1_158_140;
日常で1,158,140円みたいにカンマを入れる感じでつけてあげると大きな数値でもわかりやすくなったりします。

ちなみに、
			int a = 10;
			a = 20;
			System.out.println(a);
	
この場合20が表示されます。
aの中の値を20に上書きしているからです。


Java解説トップ