ishowcode.eth

ishowcode.eth

区块链小白

Javaの基本文法(下)

1. プログラムフロー制御#

1.1 プログラムフロー制御

  • フロー制御文は、プログラム内の各文の実行順序を制御するための文であり、文を組み合わせて特定の機能を果たす小さな論理モジュールを作成できます。
  • そのフロー制御方式は、構造化プログラミング設計で規定された 3 つの基本的なフロー構造、すなわち:
    順次構造
    分岐構造
    ループ構造
順次構造
プログラムは上から下へ逐次的に実行され、中間に判断やジャンプはありません。
分岐構造
条件に基づいて、特定のコードを選択的に実行します。
if...elseとswitch-caseの2種類の分岐文があります。
ループ構造
ループ条件に基づいて、特定のコードを繰り返し実行します。
while、do...while、forの3種類のループ文があります。
注:JDK1.5ではforeachループが提供され、コレクションや配列要素の遍歴が便利になります。

2. 順次構造#

順次構造
Javaでメンバー変数を定義する際には合法的な前方参照を使用します。例えば:
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}
誤った形式:
public class Test{
int num2 = num1 + 2
int num1 = 12;
}

3. 分岐文 1 :#

3.1 if-else 構造#

if 文の 3 つの形式:

1. if(条件式){
実行コードブロック;
}
2. if(条件式){
    実行コードブロック1;
}
else{
実行コードブロック2;
}
3. if(条件式1){
    実行コードブロック1;
}
else if (条件式2){
実行コードブロック2;
}
......
else{
実行コードブロックn;
}

プログラムフロー制御:if-else 構造#

1. 条件式はブール式(関係式または論理式)でなければならず、ブール変数の文ブロックに実行文が1つだけの場合、{}のペアは省略できますが、保持することをお勧めします。
2. if-else文の構造は、必要に応じてネストして使用できます。
3. if-else構造が「多選一」の場合、最後のelseはオプションであり、必要に応じて省略できます。
4. 複数の条件が「排他的」関係にある場合、条件判断文と実行文の順序は重要ではありません。
5. 複数の条件が「包含」関係にある場合、「小上大下/子上父下」となります。
if-else 文の適用例#
public class AgeTest{
public static void main(String args[]){
int age = 75;
if (age < 0) {
System.out.println("不可能!");
} else if (age > 250) {
System.out.println("妖怪です!");
} else {
System.out.println("人の年齢は" + age + "歳です。");
}
}
}

3.2 分岐文 2:#

switch-case 構造#

switch(式){
case 定数1 :
文1 ;
//break;
case 定数2 :
文2 ;
//break;
......
case 定数N:
文N;
//break;
default:
文;
//break;
}
switch 文の適用例 1#
public class SwitchTest {
public static void main(String args[]) {
int i = 1;
switch (i) {
case 0:
System.out.println("ゼロ");
break;
case 1:
System.out.println("1");
break;
default:
System.out.println("デフォルト");
break;
}
}
}
switch 文の適用例 2#
String season = " summer ";
switch (season) {
case "spring":
System.out.println("春暖花開");
break;
case "summer":
System.out.println("夏日炎炎");
break;
case "autumn":
System.out.println("秋高気爽");
break;
case "winter":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季節入力に誤りがあります");
break;
}
switch 文に関するルール#
1. switch(式)の式の値は、以下のいずれかの型でなければなりません:byte、short、char、int、列挙(jdk 5.0)、String(jdk 7.0);
2. case句の値は定数でなければならず、変数名や不確定な式の値ではいけません;
3. 同じswitch文内のすべてのcase句の定数値は異なる必要があります;
4. break文は、1つのcase分岐の実行後にプログラムをswitch文ブロックから抜け出させるために使用されます。breakがない場合、プログラムはswitchの最後まで順次実行されます。
5. default句はオプションです。また、位置も柔軟です。マッチするcaseがない場合、defaultが実行されます。

4. ループ構造#

ループ構造
特定の条件が満たされる場合に、特定のコードを繰り返し実行する機能
ループ文の分類
for ループ
while ループ
do-while ループ
ループ文の4つの構成要素
初期化部分(init_statement)
ループ条件部分(test_exp)
ループ本体部分(body_statement)
反復部分(alter_statement)

4.1 ループ構造 1 :#

for ループ#

構文形式

for(①初期化部分;②ループ条件部分;④反復部分){
③ループ本体部分;

実行プロセス:

①-②-③-④-②-③-④-②-③-④-.....-②

説明:

②ループ条件部分はboolean型の式であり、値がfalseの場合、ループを終了します。
①初期化部分では複数の変数を宣言できますが、同じ型でなければならず、カンマで区切ります。
④複数の変数を更新することができ、カンマで区切ります。
for ループの実行デモ#

適用例

public class ForLoop {
public static void main(String args[]) {
int result = 0;
for (int i = 1; i <= 100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}

4.2 ループ構造 2 :#

while ループ#

構文形式
①初期化部分
while(②ループ条件部分){
③ループ本体部分;
④反復部分;
}
実行プロセス:
①-②-③-④-②-③-④-②-③-④-...-②
説明:
④反復部分を宣言するのを忘れないでください。そうしないと、ループは終了せず、無限ループになります。
forループとwhileループは相互に変換できます。

適用例

public class WhileLoop {
public static void main(String args[]) {
int result = 0;
int i = 1;
while (i <= 100) {
result += i;
i++;
}
System.out.println("result=" + result);
}
}

4.3 ループ構造 3 :#

do-while ループ#

構文形式
①初期化部分;
do{
③ループ本体部分
④反復部分
}while(②ループ条件部分);
実行プロセス:
①-③-④-②-③-④-②-③-④-...②
説明:
do-whileループは少なくとも1回はループ本体を実行します。

適用例

public class DoWhileLoop {
public static void main(String args[]) {
int result = 0, i = 1;
do {
result += i;
i++;
} while (i <= 100);
System.out.println("result=" + result);
}
}

4.4 ネストループ#

ネストループ(多重ループ)
 1つのループを別のループ本体内に置くと、ネストループが形成されます。その中で、
for、while、do...whileはすべて外側のループまたは内側のループとして使用できます。
実質的に、ネストループは内側のループを外側のループのループ本体として扱います。内側のループのループ条件がfalseの場合にのみ、内側のループを完全に抜け出し、外側のループのその回のループを終了し、次のループを開始します。
 外側のループの回数をm回、内側をn回とすると、内側のループ本体は実際にはm*n回実行される必要があります。

5. 特殊キーワードの使用:#

break、continue#

特殊フロー制御文 1#

break
break文は特定の文ブロックの実行を終了するために使用されます
{ ......
break;
......
}
break文が多層のネストされた文ブロック内に出現する場合、ラベルを使用して終了する文ブロックのレベルを指定できます
label 1 : { ......
label 2 : { ......
label 3 : { ......
break label 2 ;
......
}
}
}
特殊フロー制御文 1#
break文の使用例
public class BreakTest{
public static void main(String args[]){
for(int i = 0; i < 10; i++){
if(i == 3)
break;
System.out.println(" i =" + i);
}
System.out.println("ゲームオーバー!");
}
}
特殊フロー制御文 2#

continue 文

continueはループ構造内でのみ使用できます
continue文は、その所在するループ文ブロックの1回の実行をスキップし、次のループを続行します
continue文が多層のネストされたループ文体内に出現する場合、ラベルを使用してスキップするループのレベルを指定できます

continue 文の使用例

public class ContinueTest{
public static void main(String args[]){
for(int i = 0; i < 100; i++){
if(i % 10 == 0)
continue;
System.out.println(i);
}
}
}
付録:特殊フロー制御文 3#
return:ループを終了するために特別に使用されるものではなく、その機能はメソッドを終了することです。
メソッドがreturn文に到達すると、そのメソッドは終了します。
breakやcontinueとは異なり、returnはメソッド全体を直接終了させます。これは、returnが何層のループ内にあっても関係ありません。
特殊フロー制御文の説明#
breakはswitch文とループ文の中でのみ使用できます。
continueはループ文の中でのみ使用できます。
両者の機能は似ていますが、continueは今回のループを終了し、breakはこのレベルのループを終了します。
break、continueの後には他の文を置くことはできません。なぜなら、プログラムはその後の文を決して実行しないからです。
ラベル文はループの先頭に直に続けなければなりません。ラベル文は非ループ文の前に使用できません。
多くの言語にはgoto文がありますが、goto文はプログラム内の任意の文に制御を移動させ、その文を実行します。しかし、これはプログラムを間違いやすくします。Javaのbreakとcontinueはgotoとは異なります。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。