Java SE8





識別子

変数、クラス、メソッドなどにつける名前を識別子と呼ぶ。

識別子の命名規約

・大文字と小文字は区別される
・文字数(文字長)の制限はない ・予約語は使用不可 ・1文字目は、英字( a ~ z、A ~ Z )、アンダースコア( _ )、ドル( $ )のみ使用可能
・2文字目以降は、数字も使用可能

予約語

予約語とは、Java言語で既に使用されている名前のことである。予約語を識別子に使用することはできない。

abstract assert boolean
break byte case
catch char class
const continue default
do double else
enum 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


変数

変数の宣言と代入

・構文
データ型 変数名;  // 変数の宣言
変数名 = 値;      // 代入
// 変数の宣言と代入
データ型 変数名 = 値;
変数の代入で、変数に最初に値を代入することを変数の初期化を呼ぶ。

変数のスコープ(有効範囲)

変数は宣言した場所によって、使用できる範囲が制限される。これを変数のスコープ(有効範囲)と呼ぶ。

例えば、以下のサンプルの場合、変数numは、if文の{}の範囲のみで使用可能であり、if文の{}の範囲外では使用できない。

 ・サンプル
public void calc(int id) {
    
    if (id == 0) {
        int num = 1;
    }
    
}

定数

final 修飾子

定数は宣言時にfinal修飾子を使用する。また、定数は初期化後、代入できない。代入しようとするとコンパイルエラーとなる。

・構文
final データ型 変数名 = 初期値;

データ型

データ型には、基本データ型と参照型がある。

基本データ型

基本データ型には、整数や文字など、以下のデータ型がある。

データ型 説明 サイズ
byte 符号つき整数 8ビット -27~27-1
short型 符号つき整数 16ビット -215~215-1
int型 符号つき整数 32ビット -231~231-1
long型 符号つき整数 64ビット -263~263-1
float型 浮動小数点数 32ビット IEEE754にもとづく値
duble型 浮動小数点数 64ビット IEEE754にもとづく値
char型 Unicodeで表現できる1文字 16ビット ¥u0000~¥uFFFF
boolean型 boolean値 1ビット true、false

-27~27-1    : -128 ~ 127
-215~215-1 : -32768 ~ 32767
-231~231-1 : -2147483648 ~ 2147483647

参照型

参照型とは、基本データ型以外のすべての型(クラス、配列、String型、インターフェースなど)のこと。

long 型(L または l を付加)

long型の変数に値を代入する場合は、Lまたはlを付加する。

・サンプル
long id= 10000000000L;

このサンプルでLを付加しない場合、コンパイルエラーとなる。これは、Java言語で符号つき整数リテラルは、デフォルトでint型として認識するが、「10000000000」は、long型では扱えるが、int型では扱えないリテラルであるため、コンパイルエラーとなる。

また、例えば、
long id= 1;
の場合は、Lを付加していなくてもコンパイルエラーにならない。これは、int型の「1」をlong型に代入しているが、「1」がint型とlong型で扱える値であるため、問題ない。

float 型(F または f を付加)

float型の変数に値を代入する場合は、Fまたはfを付加する。

・サンプル
float id= 10.0F;
このサンプルでFを付加しない場合、コンパイルエラーとなる。これは、Java言語で浮動小数点数のリテラルは、デフォルトでdouble型として認識するが、「10.0」をdouble型として認識した後、型の小さいfloat型に代入しようとすると、コンパイルエラーとなる。

制御文

制御文の種類には、条件文、繰り返し文、繰り返し制御文がある。制御文を使用すると、プログラムの処理の流れを制御することができる。

条件文(if 文)

if 文

条件式がtrueの場合、条件文が実行される。条件式には、boolean値となる式を指定する。

・構文
if ( 条件式 ) {
    条件文;
}
※処理文が1行の場合、{}を省略可

・サンプル
int id = 10;
if ( id = 10 ) {
    System.out.println(id);
}

・補足

以下の場合、条件式の部分でコンパイルエラーにはならず、変数aに変数bのboolean値が代入されることで、処理文が実行される。
boolean a = false; boolean b = true;
if ( a = b ) {
    System.out.println(a);
}

しかし、以下の場合、条件式がboolean値とならないため、コンパイルエラーとなる。
int a = 10; int b = 10;
if ( a = b ) {
    System.out.println(a);
}

if - else 文

条件式がtrueの場合、条件文1が実行される。それ以外の場合、条件文2が実行される。

・構文
if ( 条件式 ) {
    条件文1;
} else {
    条件文2;
}
※条件文が1行の場合、{}を省略可

・サンプル
int id = 20;
if ( id = 10 ) {
    System.out.println(10);
} else {
    System.out.println(id);
}

if - else if - else 文

条件式1がtrueの場合、条件文1が実行される。条件式1がfalse、かつ条件式2がtrueの場合、条件文2が実行される。それ以外の場合、条件文3が実行される。

・構文
if ( 条件式1 ) {
    条件文1;
} else if ( 条件式2 ) {
    条件文2;
} else {
    条件文3;
}
※条件文が1行の場合、{}を省略可

・サンプル
int id = 30;
if ( id = 10 ) {
    System.out.println(10);
} else if ( id = 20 ) {
    System.out.println(20);
} else {
    System.out.println(id);
}

条件演算子(三項演算子)

条件分岐は、if文ではなく、条件演算子(三項演算子)を使用して行うことも可能である。

条件式がtrueの場合、式1が実行される。それ以外の場合、式2が実行される。

・構文
条件式 ? 式1 : 式2;

・サンプル
int id = 10;
String msg = id == 10 ? "idは10です。" : "idは10以外です。";

if 文のネスト

if文は、処理ブロック内に別のif文を使用できる。これをネスト(入れ子)と呼ぶ。また、ネストの階層に制限はないが、多用するとソースコードの可読性が落ちる。

繰り返し文

while文

最初に条件判定を行い、処理文を実行する。指定した条件式がtrueの間、繰り返し処理を行う。条件式はboolean値となる式を指定する。

・構文
while (条件式) {
    処理文;
}
※処理文が1行の場合、{}を省略可

・サンプル
int num = 0;

while (num < 10) {
    System.out.println(num);
    num++;
}

・補足

while(false)のようにfalseを直接指定した場合、処理文が実行されることはないため、コンパイルエラーとなる。

do-while文

最初に処理文を実行して、条件判定を行う。指定した条件式がtrueの間、繰り返し処理を行う。条件式はboolean値となる式を指定する。

・構文
do {
    処理文;
} while (条件式);
※処理文が1行の場合、{}を省略可

・サンプル
int num = 0;

do {
    System.out.println(num);
    num++;
} while (num < 10);

for文

以下の構文で繰り返し処理を行う。条件式はboolean値となる式を指定する。

・構文
for ( カウンタ変数の宣言・初期化 ; 条件式 ; カウンタ変数の更新) {
    処理文;
}
※処理文が1行の場合、{}を省略可

・サンプル
for ( int cnt = 0 ; cnt < 10 ; cnt++) {
    System.out.println(cnt);
}

カウンタ変数の宣言・初期化、条件式、カウンタ変数の更新は、それぞれ省略することが可能である。また、カウンタ変数の宣言・初期化は宣言ではない式をカンマで区切ることで、複数指定することができる。(宣言式は1つのみ可能)カウンタ変数の更新も、カンマで区切ることで、複数の式を指定することができる。以下の場合、コンパイルエラーにならず、実行可能となる。

・サンプル
for ( ; ; ) {}

for ( int cnt1 = 0, cnt2 = 0 ; cnt1 + cnt2 < 10 ; cnt1++, cnt2++ ) {}

・補足

以下の場合は、コンパイルエラーとなる。

for ( ) {}

int cnt = 0;
for ( cnt ; cnt< 10 ; cnt++ ) {}

for ( int cnt1 = 0, int cnt2 = 0 ; cnt1 + cnt2 < 10 ; cnt1++, cnt2++ ) {}

拡張 for 文

配列やコレクションの全要素を順番に取り出して、宣言した変数に代入し、繰り返し処理を行う。

また、宣言する変数のデータ型は、配列やコレクションの要素の型に合わせる必要がある。合わせないと、コンパイルエラーとなる。

・構文
for ( 変数宣言 : 配列やコレクションの変数名 ) {
    処理文;
}


※処理文が1行の場合、{}を省略可

・サンプル
String[] array = {"abc", "def", "ghi"};

for ( String val : array ) {
    処理文;
}
ArrayList list = new ArrayList();
list.add("abc");
list.add("def");
list.add("ghi");

for ( String val : list ) {
    処理文;
}

繰り返し制御文

ある特定の条件が発生した場合は繰り返し処理から抜けるようにしたい、という場合などに、繰り返し制御文を使用する。

繰り返し制御文には、以下の2つがある。

・break 文
・continue 文

break 文

実行中の繰り返し処理を中断して抜け出すときに使用する。break 文により、繰り返し処理が終了する。

・構文
while ( 条件式 ) {
    処理文;
    break;
    処理文;
}
for ( 式1 ; 式2 ; 式3 ) {
    処理文;
    break;
    処理文;
}

continue 文

繰り返し処理内の残りの処理文をスキップして条件式に制御を移し、さらに繰り返し処理を続けるときに使用する。繰り返し処理内の残りの処理文をスキップして、引き続き繰り返し処理を実行する。

・構文
while ( 条件式 ) {
    処理文;
    continue;
    処理文;
}
for ( 式1 ; 式2 ; 式3 ) {
    処理文;
    continue;
    処理文;
}

繰り返し文でラベルを使用

繰り返し文がネストしている場合、内側の繰り返し文の中に記述したbreak 文やcontinue 文は、内側の繰り返し文に適用される。外側の繰り返し文から抜けたり、スキップしたい場合などに、ラベルを使用する。

・構文
ラベル名 : 
while ( 条件式 ) {
    while ( 条件式 ) {
        処理文;
        break ラベル名;
        処理文;
    }
}

ラベル名 : 
for ( 式1 ; 式2 ; 式3 ) {
    for ( 式1 ; 式2 ; 式3 ) {
        処理文;
        break ラベル名;
        処理文;
    }
}
ラベル名 : 
while ( 条件式 ) {
    while ( 条件式 ) {
        処理文;
        continue ラベル名;
        処理文;
    }
}

ラベル名 : 
for ( 式1 ; 式2 ; 式3 ) {
    for ( 式1 ; 式2 ; 式3 ) {
        処理文;
        continue ラベル名;
        処理文;
    }
}


例外

Java言語では、プログラム実行時に発生したエラーを例外と呼び、例外が発生することを例外がスローされると言う。実行時にエラーが発生すると、Java実行環境(JVM)が例外をスローして、例外を発生させたプログラムはその例外をキャッチする。

プログラム側でその例外に対する処理を何も記述していない場合は、そこでプログラムは強制終了となり、プログラムが途中で終了する。

checked 例外とunchecked 例外について

Java言語の 例外クラスは、checked 例外とunchecked 例外の2つがある。特徴として、checked 例外は例外処理が必須であり、unchecked 例外は例外処理が任意である。

また、例外クラスは、以下1~3のように3種類で分類される。

【checked 例外】

    1. Exceptionのサブクラス(RuntimeExceptionクラス以外)

【unchecked 例外】

    2. RuntimeExceptionクラス、およびRuntimeExceptionクラスのサブクラス

    3. Errorクラス、およびErrorクラスのサブクラス


checked 例外について


Exceptionのサブクラス(RuntimeExceptionクラス以外)は、
アプリケーションで発生するエラーであり、「プログラムからファイルに書き込みをしようとしたがファイルが存在しなかった」、「DBにアクセスしようとしたがDBサーバがダウンしていた」など、Java実行環境以外が原因で発生する例外である。

unchecked 例外について


RuntimeExceptionクラス、およびRuntimeExceptionクラスのサブクラスは、
アプリケーションで発生するエラーであり、「配列の要素外にアクセスした」など、実行中のプログラムが原因で発生する例外である。

Errorクラス、およびErrorクラスのサブクラスは、
メモリ不足などJava実行環境で発生する致命的なエラーである。また、この例外をアプリケーションで対応するのは困難であり、プログラムの例外処理では復旧できない例外である。

配列(固定長)

同じデータ型の値をまとめて扱う。配列に格納する値は、基本データ型と参照型のいずれの値も格納可能である。

また、配列を宣言、領域確保、初期値を代入することを配列の初期化と呼ぶ。

1次元配列


・構文
データ型[] 配列名 = new データ型[要素数]; // 配列の宣言と領域確保
配列名[添え字] = 値;      // 値の代入
※配列の宣言は、「データ型 配列名[]」でも可能

また、以下の方法でも、配列の宣言、領域確保、値の代入が可能である。

データ型[] 配列名;              // 配列の宣言 
配列名[] = new データ型[要素数]; // 領域確保
配列名[添え字] = 値;             // 値の代入
データ型[] 配列名 = {値、値、値}; // 配列の宣言、領域確保、値の代入

・サンプル
int[] id = new int[3];              // 配列の宣言と領域確保
id[0] = 10; id[1] = 20; id[2] = 30; // 値の代入
int[] id;                           // 配列の宣言 
id[] = new int[3];                  // 領域確保
id[0] = 10; id[1] = 20; id[2] = 30; // 値の代入
int[] 配列名 = {10、20、30}; // 配列の宣言、領域確保、値の代入

多次元配列

多次元配列は、配列の中に配列を作成ことができる。

・構文(2次元配列の場合)
データ型[][] 配列名 = new データ型[要素数][要素数]; // 配列の宣言と領域確保
配列名[添え字][添え字] = 値;                       // 値の代入
// 配列の宣言、領域確保、値の代入
int[][] 配列名 = { { 値, 値, 値 }, { 値, 値, 値 }, { 値, 値, 値 } };

・サンプル
int[][] id = new int[2][3];                  // 配列の宣言と領域確保
id[0][0] = 10; id[0][1] = 20; id[0][2] = 30; // 値の代入
id[1][0] = 40; id[1][1] = 50; id[2][2] = 60;
// 配列の宣言、領域確保、値の代入
int[][] id = { { 10, 20, 30 }, { 40, 50, 60 } };

また、要素数が異なる多次元配列を作成することも可能である。

・サンプル
// 配列の宣言、領域確保、値の代入
int[][] id = { { 10, 20 }, { 30, 40, 50 }, { 40, 50 } };



配列の初期値

配列を宣言、領域確保をすると、値を代入しなくても、データ型にあわせて、初期値が行われる。

データ型 初期値
byte、short、 int、long 0
float、double 0
char ¥u0000
boolean false
String null



Java API

Java API(Application Program Interface)は、Java言語が提供するライブラリの集合および言語規約のことである。
※ライブラリとは、プログラムの部品を集めたもの

java.util.ArrayList<E> クラス(可変長)

ArrayList<E>クラスは、サイズ変更が可能なリストを作成する。このクラスは、Java APIで提供されているクラスである。

<E>には、リストに格納するデータ型を指定する。データ型は、参照型のみ指定できる。

・構文
// 変数宣言
ArrayList<データ型> 変数名;

// 領域の確保
変数名 = new ArrayList<データ型>(初期サイズ);

// 値の代入
変数名.add(格納するデータ値);

// 値の代入
変数名.add(インデックス, 格納するデータ値);

// 値の取り出し
変数名.get(インデックス);

// 要素数の取得
変数名.size()
※左辺のデータ型を指定する<>は、ジェネリクスと呼ばれる機能である。 ※初期サイズを指定しない場合は、デフォルトでサイズが10のリストを作成する。 ※値の代入でインデックスを指定する場合は、指定したインデックスにデータが格納され、そのインデックス以降に格納されていたデータは1つ後ろのインデックスに移動する。

また、以下の方法でも、変数宣言、領域確保が可能である。

// 変数宣言、領域確保
ArrayList<データ型> 変数名 = new ArrayList<データ型>(初期サイズ);


・サンプル
// 変数宣言、領域の確保
ArrayList array = new ArrayList(5);

// 値の代入
array.add("Apple");

// 値の取り出し
String fruit = array.get(0);

// 要素数の取得(ここでは、要素数は1となる)
int size = array.size()







スポンサーリンク

0 件のコメント :

コメントを投稿