Step 4: きまりごと(変数)
さて、今回はちょっと退屈な話かもしれないな。でも、覚えておかなくてはいけないJava の言語の文法についてだよ。Java言語でプログラミングをするには必要な決まり事だね!
文法ね、なんか嫌いな英語を覚えないといけないような気分になるわね。(いつも通りこの色は美樹ちゃん)
じゃあ、 わかりやすいように節に区切って説明するね。
Section 1: 変数とデータタイプ
変数は値を入れる入れ物で、プログラムの処理の過程で値を代入したり、値を参照したりする事ができる。この入れ物はメモリ上の領域で、どんな値を入れるかによって入れ物の大きさが変わる。
データタイプは、変数に入る値(データ)の型(整数や文字)のことを表します。Java言語は、C言語やC++言語と同じようにプログラム内で使用するすべての変数にどのような値が入るかをあらかじめ決めておく必要がある(変数宣言)。Java言語には、基本データタイプと参照データタイプの二種類がある。基本データタイプは整数や文字を表すための型で、以下のようなタイプがある。
基本データタイプ |
値の種類 |
大きさ |
値の範囲 |
初期値 |
boolean |
真偽 | (1 bit) |
true または false | false |
byte |
符号付き整数 | 8 bit |
-128 〜 127 | 0 |
char |
16 bit |
'\u0000' 〜 '\uFFFF' | '\u0000' |
|
short |
符号付き整数 | 16 bit |
-32768 〜 32767 | 0 |
int |
符号付き整数 | 32 bit |
0 |
|
long |
符号付き整数 | 64 bit |
0L |
|
float |
符号付き単精度浮動小数点数 | 32 bit |
仮数部 23 bit、指数部 8 bit | 0.0f |
double |
符号付き倍精度浮動小数点数 | 64 bit |
仮数部 52 bit、指数部 11 bit | 0.0 |
参照データタイプはオブジェクト(クラス、インターフェース)や配列を指す型で、クラスのインスタンスを値に持つ変数など。
基本データタイプの変数は、 その変数の領域に直接値が入るけど、参照データタイプの変数に入っている値は、実際のデータへの参照(Reference)
になる。
プログラムで変数を使用する場合、変数の名前やその変数に入る値の型を使用する前に宣言しておく必要ある。宣言する場所は、使う前ならどこでもいい。しかし、変数名は、数字以外で始まる Unicode 規格の文字列でなければならない。また、Java言語がキーワードとして使用している文字列(予約語)も使用できない。名前の付け方は、変数名の先頭は小文字、クラス名の先頭は大文字を使うことが多い。
キーワード(予約語)
型を表すキーワード | |
boolean |
論理値の型 |
byte |
1バイトデータの型 |
char |
文字の型 |
short |
2バイト整数値の型 |
int |
4バイト整数値の型 |
long |
8バイト整数値の型 |
float |
4バイト浮動小数値の型 |
double |
8バイト浮動小数値の型 |
void |
返却値がないことを表す |
true |
真 |
false |
偽 |
オブジェクトに関連するキーワード | |
package |
所属するパッケージの宣言 |
import |
使用するクラスやパッケージの指定 |
class |
クラス定義 |
interface |
インターフェース定義 |
extends |
継承するスーパークラスの指定 |
implements |
実装するインターフェースの指定 |
this |
定義中のクラス自身 |
supre |
定義中のクラスのスーパークラス |
new |
コンストラクタの呼び出し |
null |
オブジェクトが存在しない状態 |
instanceof |
指定されたクラスのオブジェクトであるか判定 |
クラスやメンバーに対する修飾子のキーワード | |
public |
クラスの外からのアクセスを許可 |
protected |
パッケージ内及びサブクラスからのアクセスを許可 |
private |
クラス内のみにアクセスを許可 |
final |
再定義できない事を示す/定数 |
static |
クラスに共通するデータ |
abstract |
抽象クラス/抽象メソッド |
native |
Java 以外のモジュールに実体が存在 |
synchronized |
一度に1つのスレッドしか入れない手続きブロックを作る |
volatile |
スレッド間で使用される可能性のある変数 |
transient |
メンバー変数が一時的で、オブジェクトの固定的な部分ではない |
制御構造に関連するキーワード | |
for |
ループブロック |
do |
ループブロック |
while |
ループブロック |
if |
条件分岐ブロック |
else |
条件分岐ブロック |
switch |
条件分岐ブロック |
case |
条件分岐のジャンプ先ラベルの指定 |
default |
条件分岐のジャンプ先ラベルの指定 |
continue |
ループの先頭にジャンプ |
break |
ループを抜ける |
return |
メソッドの処理を抜ける |
例外処理に関連するキーワード | |
try |
例外処理の対象ブロック |
catch |
発生した例外に対応する処理のブロック |
finally |
例外の有無に関わらず実行されるブロック |
throw |
例外の発生 |
throws |
メソッドが発生する可能性のある例外の宣言 |
その他のキーワード | |
const |
定数(使用不可) |
goto |
指定ラベルへのジャンプ(使用不可) |
ふう〜 キーワードの一覧表作るだけでも大変だなあー
たくさんあるわねえ〜 これだけキーワードがあるってことは覚えるの大変そう...
そんなことはないと思うよ、型を見ても C言語よりは、わかりやすいキーワード名になっていると思うけど(Objective-Cのキーワードに近い)。
プログラム中で使用される変数には、それが宣言された場所とどの修飾子で宣言されたかによっていくつかに分類されるんだ。それによって、その変数が利用できる有効範囲と寿命が異なるんだよ。
ローカル変数 | メソッドの中、またはメソッド中のブロック(中括弧 {} で囲まれたところ)で宣言される変数。そのメソッドまたはブロック内でのみ有効で、メソッドやブロックの実行が終了すると解放される。 |
メンバー変数 | クラス定義の中、メソッド定義の外でクラスのメンバーとして宣言された変数(クラス定義でもメソッド内で宣言された変数はローカル変数)。 宣言時に static修飾子を付けるかどうかで、クラス変数かインスタンス変数かに分かれる。staticを付けるとクラス変数となり、クラスがロードされた時に作られる。そのクラスごとに共通の一つの領域が取られ、インスタンス全てがその領域を参照するので、共通の値を持つことができる。staticが無いとインスタンス変数となり、インスタンスが生成される時に作られる。インスタンスごとに別々の領域を持っている。クラス変数はクラスがアンロードされるときに解放され、インスタンス変数はインスタンスオブジェクトが参照されなくなったときに解放される。 |
メソッド引数 | メソッドやコンストラクタに渡される引数。そのメソッドやコンストラクタ内でのみ有効で、実行が終わると解放される。基本データタイプの引数は、メソッドが呼び出されたときに値が複製されてメソッドに渡される(Passed by Value)。参照データタイプの引数は、その値が示しているオブジェクトへの参照が渡される(Passed by Reference)。 |
例外処理引数 | 例外処理に渡される引数。try文の catch節によって例外が検出された時に生成され、catchの後の例外処理を記述したブロック内だけ有効となる。 |
Section 2: 定数
プログラム内で使用する固定的な値である定数には、「整数」「実数」「文字」「文字列」などがある。
定数 |
書式 | 例 |
|
整数 | 10進数 | 0 〜 9 の数字。long型場合、最後に L を付ける。 | 26, 161L |
16進数 | 0 〜 F を使用して 0x を頭に付ける。 | 0x1a, 0xA1 | |
8進数 | 0 〜 7 を使用して 0 を頭に付ける。 | 032, 021 | |
実数 | 0 〜 9 の数字とピリオドからなる。 float型の場合、最後に F を付ける。 double型の場合、最後に D を付ける(defualt)。 浮動小数点表記は指数部の前に E を付ける。 |
26.5 26.5F 26.5D 2.65E+1 |
|
文字 | シングル・クォーテーションで囲まれた文字 | 'a', '8', ' ' | |
文字列 | ダブル・クォーテーションで囲まれた文字の集まり | "miki", "あ", "A" | |
真偽 | true(真)、false(偽) | false, true | |
null | なにも値がないことを表す。 | null |
エスケープ文字 |
内容 |
\b |
バックスペース |
\t |
タブ |
\n |
改行 |
\r |
キャリッジ・リターン |
\f |
改ページ |
\" |
ダブル・クォーテーション |
\' |
シングル・クォーテーション |
\\ |
バックスラッシュ |
\8進数 |
Unicode 文字 |
ああ、表を作るだけで疲れたので今回はこれまで!
それなら、キーワードだけでもがんばって覚えておくね!
ほいほい、それではこれで...