JavaRush /Java Blog /Random-JA /コーヒーブレイク #154。Java には 3 種類のループがあります。JDK 19: Java 19 の新機能が...

コーヒーブレイク #154。Java には 3 種類のループがあります。JDK 19: Java 19 の新機能が 9 月に登場

Random-JA グループに公開済み

Java の 3 種類のループ

出典: Medium この投稿を読むと、Java でループするさまざまな方法について学ぶことができます。 コーヒーブレイク #154。 Java には 3 種類のループがあります。 JDK 19: 9 月に登場する Java 19 の新機能 - 1ループは、条件が true になるまでコードのブロックを実行するように設計されています。Java には 3 種類のループがあります。
  • その間
  • 一方を行います
  • のために

Whileループ

while ループは、指定されたブール条件が true と評価されるまで繰り返されます。以下の図に示すように、ステートメントは条件テストが true を返すまで実行されます。 コーヒーブレイク #154。 Java には 3 種類のループがあります。 JDK 19: Java 19 の新機能は 9 月に登場 - 2

構文

while (condition true) {
       // Блок codeа
}

ここで、while ループは、x が 3 より小さい場合に条件が true になるまで実行されます。
public class WhileLoop {
     static int x = 1;
     public static void main(String[] args) {
         while(x < 3) {
             System.out.println("x = "+x);
             x++;
         }
     }
}
結論:
x = 1 x = 2

do-while ループ

do-while ループは while ループに似ていますが、小さな違いが 1 つあります。do-while ループは、条件をテストする前に必ず 1 回実行されます。 コーヒーブレイク #154。 Java には 3 種類のループがあります。 JDK 19: Java 19 の新機能は 9 月に登場 - 3

構文

do {
     //  Блок codeа
   } while(condition);

この例では、条件が true か false かをテストする前に、do ステートメントまたはコード ブロックが常に 1 回実行されることがわかります。
static int x = 5;
        public static void main(String[] args) {
            do {
                System.out.println("x = "+x);
                x++;
            } while(x < 3);
        }
結論
x = 5

for ループ

for ループは、while ループや do-while ループとは大きく異なります。1 つのステートメント行で、初期化、条件 (true または false)、インクリメント/デクリメントを定義します。 コーヒーブレイク #154。 Java には 3 種類のループがあります。 JDK 19: Java 19 の新機能は 9 月に登場 - 4

構文

For (initialization; condition; increment/decrement) {
    // Блок codeа
}

public static void main(String[] args) {
     for(int i = 0 ; i < 2 ; i++) {
         System.out.println("i = " + i);
     }
}
結論:
i=0 i=1
初期化: int i = 0 はループの初期化条件です。 条件: for ループ内のブロックまたはコードを実行するための条件が true であるかどうかを確認します。条件が false の場合、これでループが終了します。 インクリメント/デクリメント:次の反復のために変数を更新します。

拡張 for ループ (for-each)

単純な for ループよりもコンパクトで読みやすい、別のバージョンの for ループがあります。これは拡張 for ループ (または for-each ループ) と呼ばれ、コレクションと配列を反復処理するために使用されます。Iterable インターフェイスを実装する任意のオブジェクトで使用できます。

class Main
{
    public static void main(String[] args)
    {
        int[] A = { 1, 2, 3, 4, 5 };

        for (int i: A) {
            System.out.println(i);
        }
    }
}
結論:
1 2 3 4 5

JDK 19: Java 19 の新機能が 9 月に登場

出典: Infoworld 以下は、今後の JDK リリースに登場する新機能のリストです。発売は2022年9月20日の予定です。 9 月に予定されている短期サポート リリースである Java Development Kit 19 は、リリース候補段階に達しました。注目すべき機能は 7 つあります。構造化並列処理、レコード テンプレート、外部 API とメモリ API のプレビュー、オープンソース Linux/RISC-V 命令セット アーキテクチャ (ISA) のサポートです。JDK 19 の新機能はすでに凍結されているため、ジェネリックや値オブジェクトなどの他の計画された機能は、プラットフォームの新しいバージョンに延期されます。通常、Java の新しいバージョンは 6 か月ごとにリリースされます。JDK 19 リリース候補は、6 月と 7 月の 2 回のランプダウン リリースに続き、8 月 11 日に公開されました。2 番目のリリース候補は 8 月 25 日に予定されています。JDK 19 の初期ビルドはjdk.java.net/19からダウンロードできます。JDK 19 の機能は次のとおりです。
  • 構造化された並列処理(インキュベーション段階中)。これは、Structured Concurrency API を使用してマルチスレッド プログラミングを簡素化するように設計されています。この並列処理は、異なるスレッドで実行される複数のタスクを単一の作業単位として扱います。したがって、エラー処理やエラー解除が容易になり、信頼性も向上します。

  • レコード テンプレートのプレビュー(レコード値の解析用)。レコード パターンと型パターンをネストできるようになり、宣言的で強力な構成可能な形式のナビゲーションとデータ操作が提供されます。新しい機能には、型パターンの構文やセマンティクスを変更せずに、より複雑な複合データ クエリを表現するためのパターン マッチングの拡張が含まれています。

    このイノベーションは、2021 年 3 月に JDK 16 で導入された instanceof のパターン マッチングに基づいています。将来のリリースでは、配列テンプレートや可変長引数テンプレートなどの機能を使用してレコード テンプレートを拡張することが必要になる可能性があります。

    投稿テンプレートは、パフォーマンス指向の小規模な Java 機能を調査および開発することを目的としたAmber プロジェクトの一部です。

  • 外部 API 関数とメモリ API 関数のプレビュー バージョン。新しいリリースでは、Java プログラムが Java ランタイムの外部でコードやデータと対話できるようにする API が導入されます。API は、サードパーティ関数 (つまり、JVM の外部のコード) を効率的に呼び出し、外部メモリ (JVM によって管理されないメモリ) に安全にアクセスすることにより、Java プログラムが Java の欠点なしにネイティブ ライブラリを呼び出し、ネイティブ データを処理できるようにします。ネイティブ インターフェイス (JNI)。

    外部 API とメモリ API は、外部メモリ アクセス API と外部リンカー API という 2 つの以前のインキュベーション API を組み合わせたものです。外部関数とメモリ API は、以前に JDK 17 でインキュベートされ、JDK 18 で再インキュベートされました。

  • 仮想スレッドのプレビュー。この機能により、高性能の並列アプリケーションの作成、保守、監視の労力が大幅に軽減される軽量スレッドが導入されます。この革新の目的は、シンプルなリクエストごとのスレッド形式で記述されたサーバー アプリケーションを拡張する機能を提供することです。この機能は、java.lang Thread API を使用して最小限の変更で仮想スレッドを挿入し、既存の JDK ツールを使用して仮想スレッドのトラブルシューティング、デバッグ、プロファイリングを行うコードを対象としています。

  • switch 式とステートメントのパターン マッチングの 3 回目のプレビュー。パターン マッチングをスイッチに拡張することで、それぞれが特定の効果を持つ多数のパターンに対して式をテストできるため、複雑なデータ中心のクエリを簡潔かつ安全に表現できます。

    この機能は、以前に JDK 17 および JDK 18 でプレビューされました。3 番目のプレビューでは、保護された when パターンを switch ブロック内の句で置き換えるなどの改善が加えられています。さらに、セレクター式の値が null の場合のスイッチ パターンの実行時セマンティクスが、従来のスイッチ セマンティクスをサポートするようになりました。

    このイノベーションにより、case ラベルにパターンを表示できるようになり、switch 式と演算子の表現力と適用性が拡張されます。また、開発者は、必要に応じて null や switch に対するこれまでの敵意を緩和し、switch ステートメントの安全性を向上させ、既存の switch ステートメントとステートメントを変更せずにコンパイルし続け、同一のセマンティクスで実行できるようにすることもできます。

  • ベクター API の4 回目のインキュベーション。これは、サポートされているプロセッサ アーキテクチャ上で実行時に最適なベクトル命令に確実にコンパイルされるベクトル計算を表現します。これにより、同等のスカラー計算よりも優れたパフォーマンスが得られます。API を使用する開発者は、HotSpot の自動ベクトル化機能を使用して、Java で複雑なベクトル アルゴリズムを作成できるようになりますが、ベクトル化をより予測可能で信頼性の高いものにするカスタム モデルを使用します。Vector API は、以前は JDK 16、JDK 17、および JDK 19 でインキュベートされていました。

    Vector API は、1 のビット数のカウント、ビットの順序の逆転、ビットの圧縮と拡張などの演算を含む、ビットごとの整数線形演算を拡張します。

  • Linux/RISC-V Java ポートでは、さまざまな言語ツールキットですでにサポートされているハードウェア命令セットのサポートが得られます。Linux/RISC-V ポートは、ベクトル命令を含む 64 ビット汎用 ISA である RV64GV RISC-V 構成をサポートするようになりました。

    このポートは、次の HotSpot 仮想マシン オプションもサポートします: テンプレート インタープリター、C1 JIT コンパイラー (クライアント)、C2 JIT コンパイラー (サーバー)、および ZGC や Shenandoah を含む現在の主要なガベージ コレクターすべて。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION