ホームページ >Java >&#&チュートリアル >Javaステートメントブロックの詳しい説明と使用例

Javaステートメントブロックの詳しい説明と使用例

高洛峰
高洛峰オリジナル
2017-01-23 13:20:251937ブラウズ

Java ステートメント ブロック

初めて C、C++、Java プログラミングの本を読んだとき、その中でステートメント ブロックが紹介されていたのを今でも覚えていますが、当時はステートメント ブロックが何なのかさえ理解していませんでした。 「コード百科事典」では、同様の機能を持つステートメントをまとめてステートメント ブロックを形成し、それらを空行で他のステートメント ブロックから分離することについても説明しています。しかし、これは人間の理解におけるステートメント ブロックにすぎず、プログラミング言語の本当の意味でのステートメント ブロックではありません。

私の理解では、プログラム定義は、制御構造内のロジックなど、同じ変数スコープを持つ関連するステートメントの集合である必要があるようです。最も重要な点は変数のスコープだと思います。つまり、同じローカル変数が使用できる場合、それはプログラムの意味でのステートメントブロックになります。例を見てみましょう:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
 switch (item.getItemId()) { 
 case MENU_GOTO_FILEANT: 
 Intent i = new Intent(); 
 i.setClass(this, FileAntActivity.class); 
 startActivity(i); 
 break; 
 case MENU_TEST_LINEARLAYOUT: 
 i.setClass(this, LinearLayoutTest.class); 
 startActivity(i); 
 break; 
 default: 
 break; 
 } 
 return true; 
}

2 番目の case ステートメントでは、前のケースで定義された変数を引き続き使用できるため、switch() {} 全体がステートメント ブロックになります。

しかし、各 case ステートメントにステートメント ブロック マークを追加すると、それは異なります:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case MENU_GOTO_FILEANT: {
 Intent i = new Intent();
 i.setClass(this, FileAntActivity.class);
 startActivity(i);
 break;
 }
 case MENU_TEST_LINEARLAYOUT: {
 Intent i = new Intent();
 i.setClass(this, LinearLayoutTest.class);
 startActivity(i);
 break;
 }
 default:
 break;
 }
 return true;
}

{} を追加すると 2 つの case ステートメントが分離され、2 つのステートメント ブロックが形成され、それぞれに独自の変数スコープがあります。同じ名前であっても、再度定義されても、相互に影響しません。

これらを説明する目的は、実際のステートメント ブロックを形成するためにできるだけ {} を使用することです。最大の利点は、変数のスコープを形成でき、変数のスコープが大きすぎることを回避できるため、可読性が向上することです。 、またエラーの可能性も軽減されます。

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

Java ステートメント ブロックの使用例と詳細な説明については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。