// から行末まで、/* 〜 */ の間は コメント(注釈)とみなされます。コメントには、プログラムの覚書などを記述します。コンパイルの際には無視されます。/** 〜 */ もコメントですが、javadoc コマンドで抜き出してドキュメント化することができます。
// ここにコメントを記述します。 a = b + c; /* ここにもコメントを記述します。*/ /* * 複数行にまたがるコメントも可能です。 */ /** * この部分は javadoc コマンドで抜き出すことができます。 */
Java 1.4 では、以下の用語が キーワード として定義されています。キーワードは、変数名やメソッド名などの識別子として用いることはできません。
Java では、数値や文字列などの値を リテラル と呼びます。リテラルには次のようなものがあります。
□ リテラル ├□ 数字 │├□ 整数 ││├□ 10進数(123 など) ││├□ 16進数(0x89ab など) ││└□ 8進数(0177 など) │└□ 浮動小数点(1.23、1.23e45 など) ├□ 文字・文字列 │├□ 文字('a'、'あ' など) │└□ 文字列("Hello" など) ├□ 論理値(true または false) └□ 空(null)
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 には真偽を表す特別な値として true または false を指定します。
boolean a = true;
char には UNICODE(UTF-16)文字を代入します。C/C++言語の char は 1バイトですが、Java の char は 2バイト分の領域を持ちますので、日本語文字(全角文字)も char で表すことができます。'\u0041' は、文字コード 0041(16進数)の文字を意味します。
char a = 'A'; char b = '\u0041'; char c = 'あ';
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 に数値を代入する際には、数値の最後に 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 は、値を返さない型を意味します。例えば、下記の例では、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); } } }