### 文法

[戻る] [前に] [次に]

#### ■ コメント（//, /* */, /** */）

// から行末まで、/* 〜 */ の間は コメント（注釈）とみなされます。コメントには、プログラムの覚書などを記述します。コンパイルの際には無視されます。/** 〜 */ もコメントですが、javadoc コマンドで抜き出してドキュメント化することができます。

        // ここにコメントを記述します。

        a = b + c;   /* ここにもコメントを記述します。*/

        /*
         * 複数行にまたがるコメントも可能です。
         */

        /**
         * この部分は javadoc コマンドで抜き出すことができます。
         */

#### ■ キーワード

Java 1.4 では、以下の用語が キーワード として定義されています。キーワードは、変数名やメソッド名などの識別子として用いることはできません。

abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while

#### ■ リテラル

Java では、数値や文字列などの値を リテラル と呼びます。リテラルには次のようなものがあります。

    □ リテラル
    ├□ 数字
    │├□ 整数
    ││├□ 10進数（123 など）
    ││├□ 16進数（0x89ab など）
    ││└□ 8進数（0177 など）
    │└□ 浮動小数点（1.23、1.23e45 など）
    ├□ 文字・文字列
    │├□ 文字（'a'、'あ' など）
    │└□ 文字列（"Hello" など）
    ├□ 論理値（true または false）
    └□ 空（null）

#### ■ プリミティブ型（boolean, byte, char, short, int, long, float, double）

Java では、以下の型が プリミティブ型（基本的な型）として定義されています。

種別 | 型 | 説明
--- | --- | ---
論理値 | boolean | 真偽値。true または false。
文字 | char | 2バイトUNICODE文字。'\u0000'〜'\uffff'。
整数 | byte | 1バイト符号付整数。-128〜127。
short | 2バイト符号付整数。-32768〜32767。
int | 4バイト符号付整数。-2147483648〜2147483647。
long | 8バイト符号付整数。約-922京〜約922京。
浮動小数 | float | 4バイト浮動小数点数。
double | 8バイト浮動小数点数。

##### ◆ boolean - 真偽値

boolean には真偽を表す特別な値として true または false を指定します。

    boolean a = true;

##### ◆ char - 文字コード

char には UNICODE（UTF-16）文字を代入します。C/C++言語の char は 1バイトですが、Java の char は 2バイト分の領域を持ちますので、日本語文字（全角文字）も char で表すことができます。'\x0041' は、文字コード 0041（16進数）の文字を意味します。

    char a = 'A';
    char b = '\x0041';
    char c = 'あ';

##### ◆ byte, short, int, long - 整数値

byte, short, int, long には整数値を代入できます。long 型変数に数値を代入する際には、数値の最後に L をつける必要があります。C/C++ 言語と異なり、unsigned（符号なし）を指定することはできません。例えば、128 という数値を表現する場合は byte ではなく short や int などを使用します。0x で始まる数値は 16進数、0 で始まる数値は 8進数と解釈されます。

    byte a = 127;
    short b = 32767;
    int c1 = 2147483647;
    int c2 = 0775;                 // 8進数
    int c3 = 0x79ab45;             // 16進数
    long d = 9223372036854775807L;

##### ◆ float, double - 実数値

float と double には浮動小数点数を代入します。float に数値を代入する際には、数値の最後に F をつけます。1.23e4 は、1.23×104を意味します。

    float a = 1.23F;
    float b = 1.23e4F;
    double b = 1.23e4;

浮動小数点数に関連して、以下の特別な値が用意されています。

    float f1 = Float.NaN;                  // 非数（Not a Number）
    float f2 = Float.POSITIVE_INFINITY;    // 正の無限大
    float f3 = Float.NEGATIVE_INFINITY;    // 負の無限大
    double d1 = Double.NaN;                // 非数（Not a Number）
    double d2 = Double.POSITIVE_INFINITY;  // 正の無限大
    double d3 = Double.NEGATIVE_INFINITY;  // 負の無限大

#### ■ 値を返さない型（void）

void は、値を返さない型を意味します。例えば、下記の例では、add() というメソッドは int の値を返しますが、test() というメソッドは値を返しません。

    int add(int x, int y) {
        return x + y;
    }
    void test() {
        System.out.println("TEST");
    }

#### ■ 演算子

Java で利用可能な演算子を以下に示します。大半は、C、C++、JavaScript と同様の演算子です。

カテゴリ | 演算子 | 説明 | 使用例
--- | --- | --- | ---
四則演算 | + | 加算。 | a = b + c;
- | 減算。 | a = b - c;
* | 乗算。 | a = b * c;
/ | 除算。 | a = b / c;
% | 剰余。 | a = b % c;
単項演算子 | ++ | インクリメント。 | a++; --a;
-- | デクリメント。 | a--; --a;
代入演算子 | = | 代入演算子。 | a = b;
比較演算子 | == | 等しい。 | if (a == b)
!= | 異なる。 | if (a != b)
< | より小さい。 | if (a < b)
> | おり大きい。 | if (a > b)
<= | 等しいかより小さい。 | if (a <= b)
>= | 等しいかおり大きい。 | if (a >= b)
論理演算子 | && | かつ。 | if ((a == b) && (c == d))
|| | または。 | if ((a == b) || (c == d))
! | ではない。 | if (!(a == b))
ビット演算子 | & | 論理積（AND）。 | a = b & c;
| | 論理和（OR）。 | a = b | c;
! | 論理否定（NOT）。 | a = ! b;
^ | 排他的論理和（EOR）。 | a = b ^ c;
~ | ビット反転。 | a = ~ b;
<< | 算術左シフト。 | a = b << 2;
>> | 算術右シフト。 | a = b >> 2;
>>> | 論理右シフト。 | a = b >>> 2;
算術代入演算子 | += | 加算代入。 | a += b;
-= | 減算代入。 | a -= b;
*= | 乗算代入。 | a *= b;
/= | 除算代入。 | a /= b;
%= | 余り代入。 | a %= b;
&= | 乗算代入。 | a &= b;
|= | 除算代入。 | a |= b;
^= | 剰余代入。 | a ^= b;
<<= | 算術左シフト代入。 | a <<= b;
>>= | 算術右シフト代入。 | a >>= b;
>>>= | 論理右シフト代入。 | a >>>= b;
三項演算子 | ? : | 三項演算子。 | a = (b == c) ? d : e;

##### ◆ インクリメント（++）、デクリメント（--）演算子

a++ と ++a はどちらも a の値をひとつ増やしたものを a に代入しますが、式の値が異なります。a++ はインクリメントする前の、++a はインクリメントした後の値を返します。

    a = 5; b = a++;    // b には 5 が代入される
    a = 5; b = ++a;    // b には 6 が代入される

##### ◆ 文字列の比較

比較演算子 == を文字列の比較の意味で String オブジェクトなどに使用することはできません。下記のような使用例は誤りです。

    String s1 = "ABC";
    String s2 = "DEF";
    if (s1 == s2) {                   // 文字列の比較にはなっていない
        System.out.println("Match!");
    }

文字列の比較には equals() を用います。

    String s1 = "ABC";
    String s2 = "DEF";
    if (s1.equals(s2)) {
        System.out.println("Match!");
    }

#### ■ キャスト

型やクラスを一時的に変換して参照することを キャスト と呼びます。例えば下記の例で、int値を long値に代入することは可能ですが、int値を short値に代入しようとするとコンパイルエラーになります。これは、int → short の代入では、値のオーバーフローが発生してしまう可能性があるためです。

    int intValue = 123;
    long longValue = intValue;
    short shortValue = intValue;   ←コンパイルエラー

この問題を解決するには、int値を明示的に short値に変換してから代入します。これを、「short にキャストする」と言います。

    short shortValue = (short)intValue;

下記はクラスをキャストする例です。ArrayList の get() メソッドで得た Objectクラスの値を Stringクラスにキャストしてから参照しています。

    import java.util.*;

    class CastTest {
        public static void main(String[] args) {
            ArrayList list = new ArrayList();
            list.add(new String("AAA"));
            list.add(new String("BBB"));
            list.add(new String("CCC"));
            for (int i = 0; i < list.size(); i++) {
                String s = (String)list.get(i);
                System.out.println(s);
            }
        }
    }

Copyright (C) 2004 杜甫々
http://www.tohoho-web.com/java/syntax.htm
初版：2004年6月26日、最終更新：2004年6月26日
[戻る] [前に] [次に]