Java言語の基礎 2011 年 8 月 30 日

■メインメソッドの定義
public static void main (String型の配列) {
処理
}

記述説明 説明
public アクセス修飾子の一種で、外部のクラスからメインメソッドにアクセスできることを意味する
static 修飾子の一種で、メインメソッドはクラスのインスタンス化をしなくても、アクセスが可能であることを意味する。
void メインメソッドが呼び出されても、呼び出しもとに処理結果を返さないことを意味する
main メインメソッド名。必ずすべて小文字で記述しなければならない。
main String型の可変長引数でも可

○正しい記述例

記述例 説明
public static void main(String[] args){} 一般的な記述
public static void main(String args[]){} もう一つの一般的な記述。[]は配列名の前でも後でも可
public static void main(String args[]){} もう一つの一般的な記述。[]は配列名の前でも後でも可
public static void main(String x[]){} 配列名は任意に指定可能
public static void main(String… args){} 可変長引数リストを使うこともできる

×誤った記述例

記述例 説明
static void main(String[] args){} 一般的なメソッドとしては正しい書式で、コンパイルも成功するが、public指定がないためJVMからアクセスできずに実行時エラーになる
public void main(String[] args){} 一般的なメソッドとしては正しい書式で、コンパイルも成功するが、クラスからインスタンスを生成してからでなければこのメソッドにアクセスできない。実行時エラーになる
public static main(String[] args){} 戻り値の指定がなく、メソッドの宣言が不正であるためコンパイルエラーになる
public static void main(String args){} 一般的なメソッドとしては正しい書式で、コンパイルも成功するが、引数の方が違うためJVMがメインメソッドとして認識せず、実行時エラーになる
public static void Main(String[] args){} 一般的なメソッドとしては正しい書式で、コンパイルも成功するが、メソッド名の戦闘が大文字でメインメソッド名としては間違っているためJVMがメインメソッドとして認識せず、実行時エラーになる

■列挙型の定義
enum Month {←(1)
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
}
class Sample1_10 {
public enum DayOfWeek {←(2)
SUNDAY, MONDAY, TUESDAY, WEDNEDAY,
THURSDAY, FRIDAY, SATURDAY
}
public enum Sex {←(2)
MAN, WOMAN
}
public static void main (String[] args) {
//この箇所に列挙型を定義するとエラーになる
System.out.println(”誕生日は” + Month.FEBRUARY+ “です”);←(3)
}
}
(1)public指定をしていないのでソースファイル名は列挙型名と同じでなくても良い
(2)クラス内では複数のpublicな列挙型を定義できる
(3)実行すると「誕生部はFEBURUARYです」と表示される

■javacコマンド
javac [オプション] [ソースファイル名1] ・・・ [@argfiles]
@argfilesとはオプションとソースファイルを列挙したファイルのこと。

予約語 意味
abstract 抽象クラスや抽象メソッドを宣言するための修飾子
assert アサーションエラーを発生させるかどうかの指定
boolean 真偽型の宣言
break switch文や繰返し文を抜け出す
byte byte型の宣言
case switch文の分岐先を指定
catch 例外処理発生時の処理先を指定
char char型の宣言
class クラスの定義
const 未使用
continue 繰り返しの先頭に戻る
default switch文で該当する分岐先がない場合の分岐先を指定
do 繰り返し文do〜whileにおける繰り返しの開始点を指定
double 倍精度浮動小数点数型の宣言
else if文の条件が偽である場合の分岐先を指定
enum 列挙型の宣言
extends スーパークラスを指定
final これ以降の変更は不可であることを示す
finally try〜catch〜finally文で、必ず実行される処理のブロックを示す
float 単精度浮動小数点数型の宣言
for 繰り返し文
goto 未使用
if 分気文
implements クラスへのインターフェース実装の宣言
import 利用するパッケージの指定
instanceof 型チェックのための演算子
int int型の宣言
interface インタフェースの定義
long long型の宣言
native 他言語で記述されたメソッドであることを表す
new 新規オブジェクト(インスタンス)を作成する
package パッケージの宣言
private 他クラスからアクセスできないようにする
protected 自クラスとサブクラス以外からアクセスできないようにする
public すべてのクラスからアクセスできるようにする
return メソッドの終了、戻り値の指定
short short型の宣言
static staticクラスのメンバであることを示す
strictfp 浮動小数点数の取り扱い方法の変更
super スーパークラスのメンバの呼び出し
switch 多重分岐文
synchronized スレッドの同期化
this 自クラスのメンバを指す
throw 例外を投げる
throws 例外を呼び出し元に送ることを宣言する
transient 直列化から除外する
try try文の開始
void メソッドの戻り値がないことを示す
volatile コンパイラの最適化を制御する
while 繰り返し分

■識別子
・クラス名
・変数名(メンバ変数名、ローカル変数名、引数名など)
・配列名
・メソッド名
・インタフェース名
・列挙型名
・ラベル名
識別子にはファイル名やパッケージ名は含まれません。

■識別子の命名規則
・予約後は使用できない
・定数(true,false,nullなど)は使用できない
・識別子の先頭文字に数字は使用できない
・記号はドル記号($)とアンダースコア(_)のみ使用可能
※一文字でも大文字になっていれば使用可能

○識別子の正しい例
・Private…privateは予約後だが、先頭文字が大文字なので可
・int32…intは予約後だが、32という数字が付いているので可
・trueA…trueは予約後だが、Aという文字が付いているので可
・$_$_$_$…記号だが、$と_なので可

×識別子の誤り例
・short…shortは予約後
・true…trueはあらかじめ定義された定数なので不可
・23Yen…最初の文字が半角の数字なので不可
・section%…半角の%記号は使用不可
・assert…assertは予約語の1つなので不可。ただしバージョン1.3以前のプログラムであれば可
・enum…enumは予約語の1つなので不可。ただしバージョン1.4以前のプログラムであれば可

■データ型
データ型
├ 基本データ型
├ boolean型
├ char型
├ byte型
├ short型
├ int型
├ long型
├ float型
└ double型
└ 参照型

■基本データ型の種類

データ型 サイズ 符号 値の範囲 通称
boolean 1bit - trueまたはfalse 真偽型
byte 8bit 付き -128〜127 バイト型
short 16bit 付き -32768〜32767 2バイト整数型
char 16bit なし ‘¥u0000′〜’¥uFFFF’ 文字型
int 32bit 付き -231〜231-1 4バイト整数型
long 64bit 付き -263〜263-1 8バイト整数型
float 32bit 付き 約1.4×10-45〜3.4×1038 単精度浮動小数点数型
double 64bit 付き 約1.4×10-324〜1.8×10308 倍精度浮動小数点数型

■符号ビット
負数が扱えるデータ型のことを符号付き(signed)、正数だけを扱うデータ型のことを符号なし(unsigned)といいます。
byte型のサイズは8bitですが、その最初の1bitが符号ビットで、正数を表す場合はこの値が0、負数を表す場合はこの値が1になる。
最初が符号専用ビットなので、byteがたでは実際の数を表すビットは残りの7bitとなります。1bitは0か1かどちらかの値を持つので、7bitでは2の7乗、すなわち128通りの数を表現することができます。符号ビットが1の場合は128通りの数値が表現することができる。符号ビットが1の場合は128通りの数値が表現できるのでbyteがたの負数の範囲は-128から-1までになります。符号ビットが0の場合も128通りの表現ができますが、0という正でも負でもない値を含むので、正数の範囲は1から127までとなる。

■浮動小数点数型の精度
class Sample{
public static void main (String[] args) {
System.out.println(33333333.3333333333f);
System.out.println(33333333.3333333333);
}
}

実行結果
>java Sample
3.33333344E8
3.333333333333333E8
浮動小数点数型では、float型よりもdouble型を利用したほうが演算の精度が高まる。逆にfloat型の方が使用するメモリを節約することができます。

■リテラル
ソースファイル内に直接記述した値のこと。
リテラルの種類

種類 データ型
真偽リテラル boolean true false
文字リテラル char ‘¥u0001′ ‘¥u0002′ ‘a’
整数リテラル int 100 200
long 100l 200L
浮動小数リテラル float 100f 200F
double 100.0 200.0d
文字列リテラル String “ABC”
空リテラル 参照型 null

▼文字列リテラル正しい例
・”Abcdeあいうxyz”…全角文字と半角木を混在してもかまわない
・”lmn¥nopqr”…エスケープシーケンスが混在してもかまわない
▼文字列リテラルの誤った例
・”My name is “Tom”.”…文字列内でダブルクォーテーションは使用不可

関連する記事:

Leave a Reply