Java/初級編
情報技術 > Java > Javaクイックツアー
Javaの基本的な特徴

Javaは、オブジェクト指向プログラミング言語の中でも特に広く使われています。その特徴を見ていきましょう。
Javaの基本的な概念と構文

これらはJavaの基本的な概念と構文の一部です。 Javaを学ぶ際には、これらの概念を実際のコードで試してみることが重要です。
ユースケース

Javaは非常に多様なユースケースで使用されています。以下はその一部です。
ユースケース

Javaはこれらのユースケースにおいて幅広く活用され、その堅牢性、安全性、クロスプラットフォーム性、豊富なライブラリなどの特徴により、多くの開発者に選択されています。
ベストプラクティス

Javaのベストプラクティスには、以下のようなものがあります。
ベストプラクティス

これらのベストプラクティスを遵守することで、より堅牢でメンテナブルなJavaプログラムを開発することができます。
イディオム

Javaのイディオム(慣用句)には、次のようなものがあります。
イディオム

これらのイディオムは、Javaのプログラミングスタイルやデザインパターンにおいてよく使用されます。 それぞれが特定の問題を解決するために設計されており、Java開発者が効果的にコードを記述するための重要なツールとなっています。
Hello World!

「Hello World!」は、プログラミングの世界で伝統的に使われる初心者向けの最初のプログラムです。 Javaでも同様に、「Hello World!」プログラムは、基本的な構文や開発環境の設定を理解するために使われます。
ソースコードの書き方

まず、テキストエディタや統合開発環境(IDE)を使用して、Javaのソースコードを書きます。
ソースコードの書き方

以下が「Hello World」のソースコード例です。
ソースコードの書き方

このコードでは、HelloWorldという名前のクラスを定義し、その中にmainメソッドを記述しています。 mainメソッドはJavaプログラムのエントリポイントであり、プログラムの実行が開始される場所です。System.out.printlnは、コンソールに文字列を出力するためのメソッドです。
コンパイル

Javaのソースコードをコンパイルするには、Java Development Kit(JDK)がインストールされている必要があります。 コンパイルは次の手順で行います。
コンパイル

これにより、HelloWorld.javaファイルがHelloWorld.classという名前のバイトコードファイルにコンパイルされます。
実行

コンパイルされたJavaプログラムを実行するには、以下の手順を実行します。
実行

これにより、コンソールに Hello, World! という文字列が表示されます。
実行

以上が、Javaでの「Hello World」プログラムの作成、コンパイル、実行の手順です。
実行

Javaでの「Hello World」プログラムは、単純な文字列の表示に過ぎませんが、その背後にはいくつかの興味深い蘊蓄があります。
実行

Javaの「Hello World」プログラムは、単なる最初のステップに過ぎませんが、Java言語の重要な特徴や原則を理解するのに役立ちます。
実行

情報技術 >Java>プログラミングのための準備
JDKのインストール

Javaのプログラムを作るには、Javaの開発キット「JDK(Java SE Development Kit)」をシステムにインストールしておく必要があります。
JDKのインストール

JDKが、お使いのシステムにすでにインストールされているかどうかは、次の手順で確認できます。
JDKのインストール

Windowsであればコマンドプロンプトや「ターミナル」(windows11以降)、 Mac OS Xであればターミナル、 LinuxであればGNOME端末やKonsole、Ktermなどを起動します。
JDKのインストール

Windowsのコマンドプロンプトは、スタートメニューの [プログラム]ー[アクセサリ] の中にあります。 Mac OS Xのターミナルは、[アプリケーション] フォルダの中にある [ユーティリティ] フォルダの中にあります。
JDKのインストール

起動したCUI環境で、次のように入力します。
JDKのインストール

「javac」というのは、Javaのコンパイラのことです。 上記のコマンドを実行して、javacのバージョン情報が表示されれば、 JDKがインストールされています。
JDKのインストール

以下は、実行結果の一例です。
もし、インストールされていなければ、

この項目はNFTC以前の内容です。
もし、インストールされていなければ、

かつてJava開発元のoracleは、JDKを無償で提供していた時期がありましたが、しかし現在では、JDKの商用利用は有償化されています。
もし、インストールされていなければ、

実はOracleと契約すれば非商用利用の範囲なら無償でJDKを使えるのですが、しかし手続きなど面倒です。
もし、インストールされていなければ、

実は現在のJDKには、通常のJDKとは別種類の、機能が制限されているものの無料かつ契約不要で使える openJDK という別エディションもあり、oracleがこれも協力しています。openJDKのサイトは こちら です。
もし、インストールされていなければ、

ですが、WindowsへのopenJDKはインストールが複雑です。Windows環境にインストールする場合、openJDKの公式サイトにあるバイナリをダウンロードしてインストールしても、既存の通常版Javaランタイムなどがパソコンにインストール済みだと、干渉して、うまくopenJDK が起動しない場合もあります。
もし、インストールされていなければ、

実はこのopenJDKをインストールしやすくなど改良したAdoptOpenJDKというのが別途、開発されており、IBMやマイクロソフトなどに支援されています。(Adoptium Marketplaceでスポンサー企業を確認できる)
もし、インストールされていなければ、

しかし、最新版などはAdoptOpenJDKでは使えません。
もし、インストールされていなければ、

最新版のopenJDKをどうしても使いたい場合、Windowsでの利用をあきらめてLinuxなどで試すのが簡単でしょう。
もし、インストールされていなければ、

初心者はWindowsの場合、このAdoptOpenJDKを使うのがラクです。
もし、インストールされていなければ、

なお、Oracleの公式サイトでは2023年時点では、通常版openJDKも無料で提供されています。 Java開発者向けページ をたどって探していけば、openJDKのサイトへのリンクも見つかります。
もし、インストールされていなければ、

インストールに必要なファイルをダウンロードし、ガイドに従ってインストールしてください。なお、このページは英語で書かれていますが、ページの右側に「Java SE」のダウンロードページへのリンクがあり、そのリンク先のページに行けば、日本語ページへのリンクを見つけることができます。
もし、インストールされていなければ、

「java」コマンドを実行するためのソフトウェアと、コンパイルの「javac」コマンドを実行するソフトウェアとは別物です。
もし、インストールされていなければ、

この両方のソフトウェアをインストールする必要があります。
もし、インストールされていなければ、

Fedora Linux の場合、コマンドラインの install などのコマンドでJavaをインストールすると同時にopenJDKのランタイムも入ります。つまり
もし、インストールされていなければ、

でopenJDKが入ります。なお、インストールコマンドで「openJDK」で検索をしてもヒットしないので、気をつけてください。「Java」で検索する必要があります。
もし、インストールされていなければ、

普通にインストールした場合、やや古いバージョンの長期サポート版の openjdk がインストールされます。
もし、インストールされていなければ、

ですが、これはJavaのコマンドラインでの実行環境(JRE に相当)であり、コンパイルツールは別です。
もし、インストールされていなければ、

さらに、Javaのコンパイラ一式をインストールするため、
もし、インストールされていなければ、

のコマンドで、openjdk-develをインストールする必要があります。バージョン番号は読者の時代に応じて変更してください。なお、パッケージマネージャの検索で「openjdk-devel」と探しても出ません。
もし、インストールされていなければ、

ともかくjava-1.8.0-openjdk-devel 相当のソフトウェアをインストールしないと、javacコマンドが使えません。
もし、インストールされていなければ、

最新版のテストなどには、上記のバージョンは使えません。もし最新のバージョンをインストールしたい場合、後述のセクションのようにlatest版をインストールします。
もし、インストールされていなければ、

Fedoraの場合、おそらく、
もし、インストールされていなければ、

で入ります(※ いろいろ試したあとに成功したので、まだ条件が限定できてない)。
もし、インストールされていなければ、

ただし、最新版をインストールしただけでは、javaコマンドやjavacコマンドを入力しても最新版はまだ動作せずに使えません。javaコマンドなどを実行しても、旧バージョンのJavaが動きつづけるだけです。
もし、インストールされていなければ、

なので、加えて下記の設定をしないと、既にインストールした長期サポート版(LTS)が実行されてしまいます。
もし、インストールされていなければ、

コマンド
もし、インストールされていなければ、

により、実行に使う java を最新版に切り替えれば、最新版javaを使えます。
もし、インストールされていなければ、

なお、このコマンドを実行しても、コンパイラの javac のバージョンはそのままです。上記コマンドで切り替わるのは java ランタイム側だけです。
プログラミングに必要なもの

JDKの他に必要なものは何でしょうか?
プログラミングに必要なもの

プログラミングには、ソースコードを書くためのテキストエディタが必要です。Windowsのメモ帳やMac OS Xのテキストエディットでもプログラミングをすることができます。 とりあえずであれば、そうしたテキストエディタを使うこともできるでしょう。
プログラミングに必要なもの

しかし、プログラマはエディタ(テキストエディタのこと)にこだわるものです。まだ愛用のエディタを持っていない方は、プログラミングの学習方々、ぜひ手に馴染むエディタを探してみてください。
変数

プログラミングにおける変数は、値やデータを格納するための記号的な名前です。変数は、メモリ内の特定の場所を参照し、その場所に値を保持します。これにより、プログラム内でデータを操作したり処理したりすることができます。
変数

変数は、プログラム内で使用されるデータの値を表現し、名前を介してそれらの値にアクセスする手段を提供します。また、変数は値を保持するだけでなく、値を変更することもできます。これにより、プログラムが動的に振る舞うことが可能になります。
変数

例えば、プログラムがユーザーの名前や年齢などの情報を取得し、それを後で使用する必要がある場合、変数を使用してその情報を格納し、必要に応じて変更や処理を行うことができます。
Javaにおける変数

Javaにおける変数とは、データを格納する箱のようなものです。変数は、プログラム内で使用されるデータを保持し、それに名前を付けることができます。これにより、プログラム内で値を簡単に参照したり変更したりできます。
Javaにおける変数

Javaでは、変数を使用する前に、その変数の型(データの種類)を宣言する必要があります。例えば、整数を格納する変数の場合はint型、小数を格納する変数の場合はdouble型、文字列を格納する変数の場合はString型などがあります。
Javaにおける変数

変数の宣言は次のように行います:
Javaにおける変数

これにより、age、height、nameという名前の変数が宣言されます。ただし、この時点ではまだ値は割り当てられていません。
Javaにおける変数

変数に値を代入するには、以下のようにします:
Javaにおける変数

これにより、それぞれの変数に値が割り当てられます。
Javaにおける変数

また、変数の宣言と初期化を同時に行うこともできます:
Javaにおける変数

これにより、変数の宣言と初期化を一度に行うことができます。
Javaにおける変数

Javaにおいて、再代入とは変数に新しい値を割り当てることを指します。Javaでは、再代入が可能な変数は、その型がプリミティブ型であるか、または参照型であるかによって挙動が異なります。
Javaにおける変数

変数に再代入された値の型は、変数が宣言された際に指定された型と一致する必要があります。たとえば、int型の変数には整数値を、double型の変数には浮動小数点数を再代入する必要があります。再代入された値の型が異なる場合、コンパイルエラーが発生します。
文字列

Javaにおける文字列は、文字のシーケンスを表現するためのデータ型です。Javaでは、文字列はjava.lang.Stringクラスを使用して表現されます。文字列は、ダブルクォーテーション(”)で囲まれた文字のシーケンスとして表現されます。
文字列

文字列はイミュータブル(変更不能)であり、一度作成されると変更することができません。つまり、文字列を変更する操作は、新しい文字列を作成することになります。
文字列

以下は、Javaで文字列を宣言する例です:
文字列

この例では、greetingという名前の変数に文字列"Hello, world!"が代入されています。
final 修飾された変数

Javaでは、final修飾子を使って宣言された変数は、イミュータブル(不変)です。final修飾子を使用すると、その変数に対する再代入ができなくなります。つまり、一度初期化された後はその値を変更することができません。
final 修飾された変数

以下は、final修飾子を使って宣言されたイミュータブルな変数の例です:
final 修飾された変数

これらの変数AGEとNAMEは、一度初期化された後に再代入することができません。このような変数は、プログラム内で定数として使用されることがあります。
final 修飾された変数

Javaにおいて、final修飾された参照型変数は、変数の参照先(オブジェクトへの参照)が不変であることを示します。つまり、一度初期化された後は、その変数が参照するオブジェクトを変更することはできませんが、オブジェクト自体の内容は変更可能です。
final 修飾された変数

以下は、final修飾子を使って宣言された参照型変数の例です:
final 修飾された変数

この例では、final修飾子が付けられたbuilder変数は、一度StringBuilderオブジェクトに初期化された後、その参照先を変更することができません。ただし、StringBuilderオブジェクト自体の内容を変更することは可能です。
キャスト

Javaにおけるキャスト(cast)は、データ型を変換する操作を指します。Javaでは、異なるデータ型の間で変換を行う際にキャストを使用します。キャストは、変換元のデータ型を指定し、変換後のデータ型に変換するための演算子です。
キャスト

キャストは基本的に2つの形式があります:
キャスト

キャストを行う際には、変換元のデータ型と変換後のデータ型が互換性があるかどうかを確認する必要があります。 たとえば、数値型同士のキャストや、参照型の継承関係に基づくキャストが可能ですが、互換性のない型同士のキャストはコンパイルエラーを引き起こします。
型推論 (var)

Java 10以降、Javaにはローカル変数の型推論機能が追加されました。これは、varキーワードを使用して変数を宣言する際に、コンパイラが変数の型を自動的に推論する機能です。この機能により、変数の型を明示的に指定する必要がなくなり、コードの冗長性を減らすことができます。
型推論 (var)

変数の宣言時に初期化子が提供される場合、その初期化子の型に基づいて変数の型が推論されます。推論された型は静的な型であり、実行時に変更されることはありません。
型推論 (var)

例えば、以下のようにvarを使用して変数を宣言することができます:
型推論 (var)

varを使用することで、変数の型が明確になる場合には冗長な型の記述を省略できます。ただし、可読性を損なわない範囲での使用が推奨されます。また、varを使用する場合でも、適切な変数名やコメントを追加することで、コードの理解を助けることが重要です。
型推論 (var)

Java 10以降、Javaにはループ変数の型推論機能が追加されました。 これにより、forループや拡張forループ(拡張for文、拡張forループ)で、ループ変数の型を自動的に推論することができます。 これにより、コードの冗長性を減らし、可読性を向上させることができます。
型推論 (var)

具体的には、forループの初期化部でループ変数を宣言し、その型をvarキーワードで指定することができます。 この際、初期化式によって型が明示的に指定される場合、その型を推論してループ変数の型を決定します。
型推論 (var)

拡張forループでは、コレクションや配列を反復処理する際に、ループ変数の型を指定せずに、varキーワードを使用してループ変数を宣言することができます。この場合、コレクションや配列の要素の型がループ変数の型として推論されます。
型推論 (var)

以下は、forループと拡張forループでのループ変数の型推論の例です:
型推論 (var)

varを使用することで、ループ変数の型を省略し、コードをよりシンプルにすることができます。ただし、適切な変数名やコメントを追加して、コードの可読性を確保することが重要です。
型推論 (var)

ラムダ式の型推論とは、Javaでラムダ式を使用する際に、コンパイラがラムダ式のパラメータの型や戻り値の型を自動的に推論する機能を指します。つまり、ラムダ式のパラメータや戻り値の型を明示的に指定せずに、コンパイラがコードの文脈から型を推測することができます。
型推論 (var)

例えば、次のコードでは、ラムダ式 (int i) -> i * i のパラメータ i の型が int として指定されています。しかし、Javaのコンパイラは、このコードの文脈から i の型が int 型であることを推論することができます。
型推論 (var)

var キーワードを使用することで、変数 x の型を明示的に指定せずに、コンパイラがラムダ式の型を推論することができます。そのため、コードをよりシンプルに記述することができます。
型推論 (var)

varキーワードを使わずに、ラムダ式の型を明示的に指定する場合は、次のようになります:
型推論 (var)

このコードでは、IntUnaryOperatorインターフェースを使用してラムダ式を宣言しています。IntUnaryOperatorは、int型の引数を受け取り、int型の値を返す関数型インターフェースです。ラムダ式の引数がint型であるため、このインターフェースを使ってラムダ式を宣言しています。
型推論 (var)

varによるラムダ式の型推論をつかうと、この調べごとをする必要がなくなります。
型推論 (var)

複雑な型を返すメソッドを受け取る場合にも、型推論は有用です。以下の例では、flatMap() メソッドを使用して、文字列のリストを1つの文字列に変換しています。
型推論 (var)

最後に、ループを用いた具体例を示します。以下の例では、リストを String[] に変換しています。
コメント

プログラミングにおけるコメントは、コード内に追加されるテキストであり、主に以下の目的で使用されます。
コメント

プログラミング言語によってコメントの書き方や形式は異なりますが、一般的な方法として、単一行コメントや複数行コメントがあります。単一行コメントは通常、行の先頭に // を置いて記述します。複数行コメントは、/* で始まり */ で終わるブロックを使用して記述します。
コメント

コメントは、コードの可読性やメンテナンス性を向上させる重要な手法であり、良いコメントを記述することは、プログラミングにおける良い実践の一部です。
Javaのコメント

Javaのコメントは、Javaプログラム内に追加されるテキストであり、コードの読みやすさや理解を助けるために使用されます。コメントはコンパイラによって無視され、プログラムの実行時には無視されます。主な目的は、以下の点にあります。
Javaのコメント

Javaでは、以下の2つの主なコメント形式が一般的に使用されます。
Javaのコメント

コメントは、効果的なコードの記述やメンテナンスに欠かせない要素であり、開発プロセスをスムーズにします。
JavaDoc

JavaDocは、Javaプログラミング言語において、ソースコード内のドキュメンテーションを生成するためのツールです。これは、Javaプログラムのソースコードに特定のコメント形式を記述し、それをJavaDocツールで処理することで、プログラムのAPIドキュメントを生成します。
JavaDoc

JavaDocコメントは通常、クラス、メソッド、フィールドなどの要素に対して記述され、特定の形式に従います。一般的には、以下のような形式で記述されます。
JavaDoc

JavaDocコメントには、概要や詳細な説明、パラメータ、戻り値、例などが含まれることがあります。JavaDocコメントを適切に記述することで、他の開発者がAPIを理解しやすくなり、プログラムの使用方法や機能を簡単に把握できるようになります。 情報技術 > Java > Java/初級編
式と演算子

プログラミングにおける式(Expression)は、値や演算子、関数呼び出し、変数などから構成される計算を表す文法構造です。式はプログラム内で評価され、結果の値を生成します。
式と演算子

演算子(Operator)は、式内で値や変数を操作するための記号またはキーワードです。演算子には算術演算子(加算、減算など)、比較演算子(等しい、大なり、小なりなど)、論理演算子(AND、ORなど)、代入演算子(変数に値を代入する演算子)などがあります。演算子は一般的に、式内で値を組み合わせて新しい値を生成するために使用されます。
式と演算子

例えば、以下のような式があります:
式と演算子

この式は、変数 a、b、c の値を使用して、乗算(*)と加算(+)の演算を行います。これにより、新しい値が生成されます。
Javaにおける式と演算子

Javaにおける式(Expression)は、値、変数、演算子、メソッド呼び出し、またはこれらの組み合わせから構成されるプログラム内の計算を表す文法要素です。式はプログラム内で評価され、結果の値を生成します。
Javaにおける式と演算子

Javaの演算子(Operator)は、式内で値や変数を操作するための特殊な記号またはキーワードです。
Javaにおける式と演算子

Javaの演算子は多岐にわたり、主な種類には以下のようなものがあります:
Javaにおける式と演算子

これらの演算子を使用して、Javaプログラム内で様々な計算や操作を行うことができます。
算術演算子

Javaにおける算術演算子は、基本的な数値計算を行うための演算子を指します。 Javaでは、整数型と浮動小数点型のデータを扱うための算術演算子が提供されています。
算術演算子

主な算術演算子には以下が含まれます:
算術演算子

Javaの算術演算は、整数型と浮動小数点型の両方で動作し、適切な結果を返します。 プログラマは、演算に使用される数値の型を適切に選択する必要があります。
多様な算術演算子

JavaのInfinityとNaNは、浮動小数点数の特殊な値であり、IEEE 754規格に基づいて定義されています。以下に、それぞれの意味と特性について説明します。
多様な算術演算子

JavaのInfinityとNaNは、浮動小数点数の計算において特殊な値として使用されます。これらの値は、次のような場面で発生します。
多様な算術演算子

isNaN()とisFinite()メソッド:
多様な算術演算子

IEEE 754規格に基づいて定義されたこれらの特殊な値は、浮動小数点数の算術演算においてエラー処理や特殊な状況を処理するために使用されます。これらの特性を理解することは、正確な数値計算を行う上で重要です。
多様な算術演算子

-0.0(マイナスゼロ)は、浮動小数点数の一部で、通常のゼロとは異なる概念です。IEEE 754規格では、ゼロを表現する方法として、符号付きゼロ(+0.0および-0.0)が導入されています。
多様な算術演算子

この区別は、通常の算術演算では影響を与えませんが、一部の特殊な状況で重要になります。例えば、次のような場面で符号つきゼロが役立ちます。
多様な算術演算子

JavaのDoubleとFloatのデータ型では、+0.0と-0.0は異なる値として区別されます。これは、JavaがIEEE 754規格に従っているためです。例えば、以下のようなコードを実行すると、+0.0と-0.0が等しいかどうかを確認できます。
多様な算術演算子

Double.compare() は、Java プログラミング言語において、2 つの double 値を比較するための静的メソッドです。このメソッドは、次のような形式で使用されます:
多様な算術演算子

Double.compare() メソッドは、以下のルールに従って比較を行います。
算術演算の注意事項

整数演算の桁あふれ(オーバーフロー)は、整数の演算結果がそのデータ型で表現可能な範囲を超える場合に発生します。Javaの整数型には、それぞれの範囲が定義されています。以下に、主な整数型とその範囲を示します。
算術演算の注意事項

たとえば、int型でのオーバーフローが発生する状況を考えてみましょう。以下のコードでは、整数の最大値に1を加えようとしています。
算術演算の注意事項

このコードを実行すると、overflow 変数は -2147483648 になります。これは、Integer.MAX_VALUE で表現される最大値に1を加えることで、オーバーフローが発生し、最小値(Integer.MIN_VALUE)に戻るためです。
算術演算の注意事項

同様に、他の整数型でも同様の挙動が発生します。オーバーフローを防ぐためには、適切な範囲内での演算を行うか、オーバーフローが発生する可能性がある場合には適切に処理する必要があります。
算術演算の注意事項

Javaでは、整数演算でオーバーフローを生じても例外は上がりません。 例外をあげオーバーフローを捕捉するために、Math.addExactと、そのファミリーが用意されています。
算術演算の注意事項

Math.addExact() メソッドは、Java 8 で追加された整数演算時のオーバーフローを検出するためのメソッドの一部です。このメソッドは、整数型の加算を行い、結果がそのデータ型で表現可能な範囲を超えた場合に ArithmeticException をスローします。
算術演算の注意事項

Math クラスには、他にもオーバーフローを検出するためのメソッドが用意されています。主なものには、次のようなものがあります:
算術演算の注意事項

これらのメソッドを使用することで、整数演算時にオーバーフローが発生した場合に、適切に例外を処理できます。
算術演算の注意事項

以下は、Math.addExact() メソッドを使用して整数値の加算を行い、オーバーフローが発生した場合に例外を処理する例です。
算術演算の注意事項

このコードでは、Integer.MAX_VALUE に 1 を加算しようとしています。Math.addExact() メソッドは、この加算がオーバーフローを引き起こす可能性があるため、例外をスローします。try-catch ブロックを使用して、ArithmeticException をキャッチし、オーバーフローが発生したことを示すメッセージを出力しています。
算術演算の注意事項

浮動小数点演算の桁あふれは、浮動小数点数を操作する際に、その値がデータ型で表現可能な範囲を超える場合に発生します。浮動小数点数は、指数部と仮数部から構成され、一定の精度を保ちつつ非常に大きな値や小さな値を表現するために使用されます。
算術演算の注意事項

Javaにおいて、浮動小数点数は主に以下の2つのデータ型で表現されます。
算術演算の注意事項

これらのデータ型は、それぞれ一定の範囲と精度を持っていますが、非常に大きな値や小さな値に対しても表現可能です。
算術演算の注意事項

桁あふれは、浮動小数点演算の結果が、そのデータ型で表現可能な範囲を超える場合に発生します。これにより、計算結果が無限大や無限小に発散する場合や、精度が失われる場合があります。また、浮動小数点数の演算において、有効桁数を超えた部分が切り捨てられることも桁あふれの一形態です。
算術演算の注意事項

例えば、次のコードでは、倍精度浮動小数点数の最大値に1を加える操作を行っています。
算術演算の注意事項

この場合、overflow 変数の値は Infinity になります。これは、最大値に1を加えた結果が倍精度浮動小数点数の表現可能な範囲を超えたため、桁あふれが発生したことを示しています。
算術演算の注意事項

Javaの浮動小数点数における誤差は、主に2つの要因によって生じます。
算術演算の注意事項

Javaの浮動小数点数における誤差を最小限に抑えるためには、次のような注意点があります。
算術演算の注意事項

計算の順序を適切に管理し、丸め誤差を最小限に抑える。
算術演算の注意事項

これらの対策を講じることで、Javaの浮動小数点数による誤差を最小限に抑えることができます。
算術演算の注意事項

また、浮動小数点数の演算における丸め誤差や演算誤差を最小限に抑えるためには、以下のような注意点があります。
算術演算の注意事項

これらの注意点を考慮することで、Javaの浮動小数点数による計算における誤差を最小限に抑えることができます。
算術演算の注意事項

さらに、浮動小数点数の計算における誤差を最小限に抑えるために、次のようなアプローチも考慮されます。
算術演算の注意事項

以上のようなアプローチを組み合わせることで、Javaの浮動小数点数を使用した計算における誤差を最小限に抑えることができます。ただし、特定の問題や要件に応じて、最適なアプローチを選択する必要があります。
算術演算の注意事項

浮動小数点数の内部表現により、一部の10進数を正確に表現することができません。たとえば、0.1を浮動小数点数として表現すると、厳密な値ではなく近似値になります。そのため、0.1を10回足しても厳密に1.0にはならない場合があります。
算術演算の注意事項

Javaでは、float型やdouble型を使用して浮動小数点数を表現しますが、これらの型は有限のビット数で浮動小数点数を表現するため、一部の10進数を正確に表現することができません。その結果、浮動小数点数の計算においては、丸め誤差や演算誤差が生じる可能性があります。
算術演算の注意事項

例えば、次のコードを見てみましょう。
算術演算の注意事項

このコードでは、0.1を10回足した結果が正確に1.0にならず、0.9999999999999999 という近似値になります。
算術演算の注意事項

このように誤差が生じるのは、内部的に浮動小数点数は2進数で扱われているためです(0.1は、2進数では循環小数になるため正確に表現できません)。
算術演算の注意事項

誤差を補正する方法はいくつかありますが、カハンの総和アルゴリズム( Kahan summation algorithm )が代表的です。
算術演算の注意事項

また、Java Stream API も補正アルゴリズムを実装しています。
優先順位と結合性

Javaの算術演算子には、優先順位と結合性があります。以下に、一般的な算術演算子の優先順位と結合性を示します。
優先順位と結合性

この優先順位と結合性に基づいて、式が評価されます。例えば、次の式を考えてみましょう。
優先順位と結合性

この式では、乗算 (*) が加算 (+) よりも高い優先順位を持つため、まず 3 * 2 が計算されます。結果は 6 です。その後、5 と 6 の加算が行われ、最終的な結果は 11 になります。
優先順位と結合性

結合性(associativity)は、演算子が式内で連続して出現する場合に、その演算子がどのような順序で評価されるかを示す性質です。結合性は通常、左から右への結合(左結合性)または右から左への結合(右結合性)のいずれかとして定義されます。
優先順位と結合性

算術演算子の結合性により、この式は左から右に評価されます。例えば、次の式を考えてみましょう。
優先順位と結合性

この式では、減算 (-) は左から右に結合するため、まず左側の 10 - 5 が計算されます。結果は 5 です。その後、5 から 3 を減算することで、最終的な結果は 2 になります。
優先順位と結合性

Javaの算術演算子の優先順位と結合性を理解することで、式を正しく評価することができます。
比較演算子

Javaの比較演算子は、異なる値や式の間で比較を行い、結果を真偽値(trueまたはfalse)で返します。以下は、Javaで使用される主な比較演算子です。
比較演算子

これらの比較演算子は、条件文やループ、その他の制御構造でよく使用されます。
論理演算子

論理演算子は、論理値(真偽値)を操作するために使用されます。Javaでは、3つの主要な論理演算子があります。
論理演算子

これらの演算子は、条件文やループなどの制御構造で論理式を組み立てるために使用されます。
ビット演算子

ビット演算子は、整数のビットレベルでの演算を実行します。Javaのビット演算子は、以下のようになります。
ビット演算子

これらの演算子は、ビット単位のデータ処理や、効率的なビットマスクの作成に使用されます。
代入演算子

代入演算子は、変数に値を割り当てるために使用されます。Javaの代入演算子には、単純な代入演算子と複合代入演算子があります。
代入演算子

これらの演算子は、変数の値を更新する際に使用され、簡潔なコードを記述するのに役立ちます。
if-else文

「条件分岐」は、プログラミングにおいて重要な概念の一つです。条件分岐を使うことで、プログラムは特定の条件に応じて異なる処理を実行することができます。
if-else文

この章では、Javaでの条件分岐の基本的な使い方から、より高度な使い方までを解説します。if-else文、switch文、switch式、論理演算子、三項演算子など、様々な種類の条件分岐について学ぶことができます。また、例外処理における条件分岐の使い方についても解説します。
if-else文

各セクションでは、実際のコード例を使って、どのように条件分岐を使えばよいかを説明します。また、練習問題も用意していますので、理解を深めるために挑戦してみてください。
if-else文

条件分岐は、プログラムの制御構造を理解する上で重要な概念です。本章を通して、条件分岐の基本的な使い方から応用までを学び、プログラムの制御構造を理解してください。
if-else文

Javaのif-else文は、プログラムの流れを条件分岐させるための文です。条件に応じて実行される文を切り替えることができます。
if-else文

if文は、指定された条件が真である場合に実行される文を指定します。if文が偽である場合に実行される文を指定するために、else節を組み合わせて使うことができます。
if-else文

if-else文の基本構文は以下の通りです。
if-else文

条件式は、真偽値を返す式です。もし条件式が真であれば、if文の中の文が実行され、偽であればelse節の中の文が実行されます。
if-else文

また、else節は省略することができます。省略した場合、条件式が偽である場合には何も実行されません。
if-else文

複数の条件を判定する場合には、else if節を使うことができます。
if-else文

複数の条件を判定する場合には、if-else文をネストして使うこともできます。
if-else文

このコードは、if-else文を使って変数nが負の数、正の数、零、またはNaN(非数)であるかを判定しています。
if-else文

まず、変数nに0.0を0.0で割った結果を代入しています。0.0を0.0で割るとNaNになるため、この変数はNaNになります。
if-else文

次に、if-else文を使って、nが負の数、正の数、零、またはNaNであるかを判定しています。
if-else文

まず、n < 0.0という条件を使って、nが負の数であるかを判定しています。もしnが負の数であれば、System.out.println("負の数です");が実行されます。
if-else文

次に、n > 0.0という条件を使って、nが正の数であるかを判定しています。もしnが正の数であれば、System.out.println("正の数です。");が実行されます。
if-else文

次に、n == 0.0という条件を使って、nが零であるかを判定しています。もしnが零であれば、System.out.println("零です。");が実行されます。
if-else文

最後に、else節を使って、nがNaNであるかを判定しています。NaNはどの数とも等しくならないため、n == 0.0やn < 0.0、n > 0.0のいずれの条件も成立しないため、else節が実行されます。else節では、nの値をそのまま表示するSystem.out.println(n + "です。");が実行されます。
if-else文

このように、if-else文を使うことで、複数の条件を判定し、条件に応じた処理を行うことができます。
if-else文

Javaのswitch文は、複数の条件分岐を処理するための構文です。特定の変数の値をチェックし、その値に応じて分岐することができます。
if-else文

基本的な構文は以下の通りです。
if-else文

式には、チェックする式を指定します。各caseには、変数が持つ値が一致する場合に実行される処理を記述します。defaultには、上記のいずれの値にも一致しない場合に実行される処理を記述します。
if-else文

式には、数値以外に文字列も使うことが出来ます。
if-else文

以下は、Javaのswitch文で文字列型を使用した例です。
if-else文

この例では、変数fruitに文字列型の「りんご」が代入されています。switch文の条件式であるswitch (fruit)では、文字列型の変数fruitを使用しています。
if-else文

switch文のcaseラベルには、文字列型の定数をカンマで区切って列挙しています。 また、caseラベルで果物として認識する文字列は、同じ文の中に複数記述することができます。 break文を使用して、該当するcaseラベルにマッチした場合は、それに続く文を実行するようにしています。
if-else文

また、Javaのswitch文では、Enumを使った網羅性の確保ができます。Enumは、プログラムで扱う定数を列挙するためのクラスです。
if-else文

以下は、Enumを使ったswitch文の例です。
if-else文

この例では、AnimalというEnumを定義し、それを使って動物の鳴き声を出力するプログラムを書いています。switch文のcaseには、Enumの要素を列挙しています。
if-else文

switch文は、if文と比べて複数の条件分岐をスッキリと書くことができるため、コードの可読性が向上するという利点があります。
if-else文

Java 12から、Javaにはswitch式という新しい構文が導入されました。switch式は、通常のswitch文と同様に、複数の値の比較に基づいて異なるコードブロックを実行するために使用されますが、式の値を返すこともできます。
if-else文

switch式は、通常のswitch文と同じように、いくつかのcaseブロックを持ちます。ただし、switch式では、個々のcaseラベルに式を直接使用できます。また、値を返すことができるため、式の値を変数に代入することもできます。
if-else文

Javaのswitch式の構文は以下の通りです。
if-else文

なお、switch式はJava 12から導入された新しい機能であり、以前のバージョンのJavaでは使用できません。
if-else文

以下は、switch式の例です。
if-else文

この例では、変数fruitに文字列型の「りんご」が代入されています。switch式では、変数fruitを評価しています。caseラベルには、直接式を使用しています。caseラベルで果物として認識する文字列は、同じ文の中にカンマで区切って複数記述することができます。->演算子を使用して、各caseラベルの式を実行します。
if-else文

switch式の最後には、値を返すことができます。この例では、式の結果を変数resultに代入しています。最後に、変数resultの値を出力しています。
if-else文

Javaにおいて、条件式は比較演算子や論理演算子を用いて、複数の条件を組み合わせた式を表現することができます。論理演算子は、2つのブーリアン値(trueまたはfalse)を受け取り、新しいブーリアン値を返します。
if-else文

Javaには、5つの論理演算子があります。
if-else文

以下は、論理演算子(AND、OR、NOT)の真理値表を表形式で示したものです。
if-else文

この表では、AとBがそれぞれ真(true)または偽(false)の場合に対する、NOT、AND、ORの結果が示されています。
if-else文

Javaの三項演算子は、条件式 ? 式1 : 式2 の形式を持ちます。この演算子は、条件式が true の場合は式1を、falseの場合は式2を評価して返します。例えば、以下のようなコードが考えられます。
if-else文

このコードでは、aとbの値を比較して、aがbよりも大きければaを、そうでなければbを最大値として選択します。 三項演算子を使って、if文を使う代わりに簡潔に書くことができます。 ただし、三項演算子は条件式と2つの式のみを評価するので、複雑な条件分岐を行う場合にはif文を使用することが推奨されます。
if-else文

Java 16で導入されたパターンマッチング式(Pattern Matching for instanceof)は、Java言語の制御構造の一つです。
if-else文

通常、オブジェクトの型を判定するためには instanceof 演算子を使用します。パターンマッチング式は、この instanceof 演算子をより簡潔かつ安全に使用できるようにしたものです。
if-else文

例えば、次のようなコードがあります。
if-else文

このコードは、オブジェクトが String クラスのインスタンスである場合に、そのオブジェクトを String 型にキャストして大文字に変換し、標準出力に出力するという処理を行っています。
if-else文

パターンマッチング式を使用すると、このコードを次のように書き換えることができます。
if-else文

このコードでは、オブジェクトが String クラスのインスタンスである場合に、そのオブジェクトを String 型にキャストせずに、変数 str に直接代入しています。また、変数 str は if 文の中でのみ有効なローカル変数となります。
if-else文

このように、パターンマッチング式を使用することで、より簡潔で安全なコードを書くことができます。
if-else文

switchのパターンマッチング拡張とは、Javaプログラミング言語において、switch文やswitch式においてパターンを使用して条件を指定できるようにする機能です。通常のswitch文やswitch式では、一致する値の厳密な等式比較しか行えませんでしたが、パターンマッチング拡張により、より柔軟な条件指定が可能になります。
if-else文

具体的には、switch文やswitch式のケースラベルで、従来の定数だけでなく、パターンも指定できるようになります。これにより、オブジェクトの型や構造に基づいて条件を指定することができます。例えば、オブジェクトが特定の型であるか、あるいは特定のフィールドの値を持つかどうかなどの条件を指定することができます。
if-else文

これにより、従来は複雑だった複数の条件分岐を一つのswitch文やswitch式で表現することができるようになり、コードの可読性が向上します。また、パターンマッチングにより、より安全な条件指定が可能になります。
if-else文

以下は、Java 21で導入されたswitch文のパターンマッチング拡張を使用したコード例です。
if-else文

この例では、formatterPatternSwitchメソッド内で、switch文を使用してobjの型に基づいて処理を分岐しています。各ケースラベルでは、オブジェクトが特定の型にマッチするかどうかをパターンで指定しています。例えば、case Integer iでは、objがInteger型にマッチする場合、iというパターン変数が導入され、その値がint %dのフォーマット文字列に埋め込まれます。他の型についても同様の処理が行われます。
if-else文

このように、switch文のパターンマッチング拡張を使用することで、よりシンプルで効率的なコードを記述することができます。
if-else文

以下は、Java 21で導入されたswitch文のパターンマッチング拡張で使用できるパターンの一覧を表形式で示したものです。
if-else文

これらのパターンを使用して、switch文やswitch式のケースラベルで条件分岐を行うことができます。それぞれのパターンは、特定の条件にマッチするかどうかをチェックするために使用されます。 反復 (Iteration) は、同じ処理を繰り返し実行することで、コードの簡潔さと再利用性を向上させるためによく使用されます。Javaには、様々な方法で反復処理を行うことができます。たとえば、for文、while文、do-while文、拡張for文、Iterator、forEachメソッドなどがあります。
if-else文

このチュートリアルでは、これらの反復処理方法を解説し、それぞれの使用方法や適切な場面について説明します。また、配列やコレクションに対する反復処理、ループ制御についても解説します。
if-else文

反復処理は、プログラミングにおいて非常に重要な概念であり、プログラムの処理効率や保守性を向上させるためにも、しっかりと理解しておく必要があります。本チュートリアルを通じて、反復処理について深く理解し、効果的に使用するための知識を身につけましょう。
if-else文

次のサンプルは、一応Hello worldの日本語版です。 Hello world同様、実用的な意味はありませんが、反復処理の例となっています。
if-else文

上の例はfor文と呼ばれる構文を使った例です(4行目にキーワード「for」があることに注意してください)。 コンパイルして実行してみましょう。
if-else文

このプログラムはwhile文を使って次のように書くこともできます。
if-else文

さらにdo-while文を使って次のような書き方もできます。
if-else文

またさらに、CharSequence#codePoints()でコードポイントのStreamを取得し、これのforEachメソッドで繰返しを行う次のような書き方も可能です。 これが最もシンプルな書き方です。
if-else文

各構文の詳細を説明する前に、共通する要素について説明します。
if-else文

反復には、必ず反復条件を伴います。反復は、反復条件が満たされている間だけ続けられ、条件が満たされなくなると終了する。
if-else文

反復条件は、比較演算子を使って表現されることがあります。 比較演算子は不等号などの数学記号に似ています。
if-else文

==演算子は、プリミティブ型の値またはオブジェクトの参照を比較するために使用されます。!=演算子は、==演算子と同じように使用されますが、2つの値が等しくない場合にtrueを返します。
if-else文

<、>、<=、>=演算子は、プリミティブ型の値の大小関係を比較するために使用されます。
if-else文

instanceof演算子は、オブジェクトの型を調べるために使用されます。左辺が右辺のクラスのインスタンスである場合、trueを返します。
if-else文

注意点としては、オブジェクトの比較に==演算子を使用すると、オブジェクトの参照を比較するため、同じ内容のオブジェクトでもfalseを返す場合があります。 オブジェクトの内容を比較する場合は、.equals()メソッドを使用する必要があります。
if-else文

Javaのfor文は、反復処理を行うための制御構造の一つで、指定された回数または条件を満たすまで繰り返します。一般的に、以下の形式で使用されます。
if-else文

for文の本体は、継続条件式がtrueを返す間、繰り返し実行されます。通常、変数の値を使って何らかの処理を行います。
if-else文

以下は、1から10までの整数を出力する例です。
if-else文

for文の学習と言えば、典型的な例が掛け算九九を表示するサンプルです。
if-else文

Javaにおいて、拡張for文(またはfor-each文)は、配列やコレクションなどの要素を繰り返し処理するための簡潔な方法を提供します。 標準的なforループとは異なり、ループカウンタを使用する必要がなく、ループ対象のデータ型に応じてループ変数を明示的に宣言する必要がありません。
if-else文

構文は以下のようになります。
if-else文

以下に、配列やコレクションを用いた拡張for文の例を示します。
if-else文

この例では、配列numsの要素を順に表示するためにint型のループ変数numを使用し、同様に、コレクションfruitsの要素を順に表示するためにString型のループ変数fruitを使用しています。 拡張for文を使用することで、コードがより簡潔で読みやすくなります。
if-else文

Javaにおけるwhile文は、指定した条件式がtrueである間、反復処理を続ける制御構造です。構文は以下の通りです。
if-else文

条件式がtrueである限り、中括弧内の文が繰り返し実行されます。条件式がfalseになった時点で、while文の実行は終了します。
if-else文

例えば、1から10までの整数を出力するプログラムは以下のように書けます。
if-else文

このプログラムでは、変数iを1で初期化し、iが10以下である限り、iを出力してiを1ずつ増やしています。
if-else文

これをStreamを使用して書き換えることができます。
if-else文

IntStream.rangeClosed(1, 10)は、1から10までの整数のストリームを生成します。そして、.forEach(System.out::println)で各要素を出力しています。
if-else文

rangeClosed()メソッドは指定された範囲(この場合は1から10まで)の整数ストリームを生成します。このストリームを使用して各要素に対して操作を行うことができます。
if-else文

Javaにおいて、whileループを使ってファイルを読み込む方法について説明します。
if-else文

以下は、例としてファイルの中身を1行ずつ読み込み、コンソールに出力するプログラムです。
if-else文

まず、BufferedReader クラスを使ってファイルを読み込むための準備をします。BufferedReader クラスは、テキストファイルを1行ずつ読み込むためのクラスで、FileReader クラスと組み合わせて使用します。
if-else文

while ループ内では、BufferedReader オブジェクトの readLine() メソッドを使って、ファイルから1行ずつデータを読み込みます。読み込んだ行が null でない場合は、読み込んだ行をコンソールに出力します。
if-else文

ファイルの読み込みが終了したら、ファイルを閉じるために close() メソッドを呼び出します。また、エラーが発生した場合は、例外処理を行います。
if-else文

このように、while ループを使ってファイルを読み込むことができます。ただし、ファイルの読み込みには例外処理が必要であることに注意してください。
if-else文

上記のサンプルでは、while文の反復条件が(line = in.readLine()) != nullと書かれています。 これは代入演算と比較演算を同時に行う書き方で、こうした類の処理によく使われるパターンですが、慣れない間は奇異に見えるかもしれません。
if-else文

なぜこうした書き方が可能なのかというと、代入演算の式は、その式で代入結果の値を返すからです。 念のため、処理の流れを追ってみましょう。
if-else文

まず括弧内の処理、つまりline = in.readLine()が実行されます。この式は、変数lineに代入された値を返します。要するに、全体でlineが返されると考えてよいでしょう。
if-else文

続いて、比較演算が行われます。括弧内をlineに置き換えるとわかりよいでしょう。つまりline != nullという判定が行われることになります。lineがnullになった場合、行はそれ以上ないというサインなので、ループから抜ける必要があります。
if-else文

上記のサンプルは、for文を使ってたとえば
if-else文

と書くこともできます。 コードの効率性や可読性、保守性なども考慮して判断する必要があります。
if-else文

さらに、ファイル読み込みのコードをStreamを使用して書き換えることができます。BufferedReaderからの行のストリームを取得し、それを使用して各行を処理する方法があります。
if-else文

このコードでは、Files.lines(Paths.get("input.txt"))を使用して、ファイルを行のストリームとして読み込んでいます。そして、.forEach(System.out::println)を使って、各行をコンソールに出力しています。
if-else文

Files.lines()はファイルを行のストリームとして読み込む便利な方法です。それを使用することで、BufferedReaderを明示的に使わずにファイルをストリームとして扱うことができます。
if-else文

Javaのdo-while文は、while文と同じくループ処理を行うための構文の1つです。ただし、while文と異なり、do-while文はループの最初に1度だけブロック内の処理を実行し、その後に条件式を評価します。条件式がtrueの場合、再びブロック内の処理を実行します。条件式がfalseの場合、ループから抜けます。
if-else文

do-while文の基本構文は以下のようになります。
if-else文

例えば、1から10までの整数を順番に出力する場合は、次のようにdo-while文を使用することができます。
if-else文

このコードでは、変数iを初期化してから、doブロック内でiを出力し、iを1増やしています。その後、while文でiが10以下である限り、doブロックを繰り返し実行します。結果として、1から10までの整数が順番に出力されます。
if-else文

do-while文は、ループの最初に必ず1度だけブロック内の処理を実行する必要がある場合に使用することができます。また、条件式がfalseであっても、ブロック内の処理を最低1回実行することが保証されるため、while文と異なり、特定の処理を必ず実行する必要がある場合にも適しています。
if-else文

JavaのIteratorは、コレクションオブジェクト内の要素を順番に取得するためのインターフェースです。Iteratorは、Javaのコレクションフレームワークの一部であり、java.utilパッケージに含まれています。
if-else文

Iteratorを使用することで、配列やリストなどのコレクションオブジェクトの要素を順番に取得し、処理を行うことができます。Iteratorは、以下の3つのメソッドを持っています。
if-else文

Iteratorの基本的な使い方は、以下のようになります。
if-else文

ここで、collectionは要素を持つコレクションオブジェクトです。まず、iterator()メソッドを使用してイテレータを取得し、hasNext()メソッドで次の要素があるかどうかを確認します。次の要素がある場合、next()メソッドで次の要素を取得し、処理を行います。
if-else文

また、Iteratorは、要素を削除するためのremove()メソッドを持っています。このメソッドを使用する場合は、必ずnext()メソッドで要素を取得した直後に呼び出す必要があります。例えば、次のように使用することができます。
if-else文

Iteratorを使用することで、コレクションオブジェクトの要素を順番に取得し、必要な処理を行うことができます。ただし、Iteratorは単方向のイテレーションしかサポートしていないため、要素の逆順の処理が必要な場合は、リストイテレータを使用することが推奨されます。
if-else文

JavaのforEachメソッドは、Java 8から導入された機能で、配列やコレクションの要素を繰り返し処理するためのメソッドです。forEachメソッドは、以下のように使用します。
if-else文

ここで、arrayOrCollectionは、要素を持つ配列またはコレクションオブジェクトです。forEachメソッドは、要素ごとに指定された処理を行うためのラムダ式を引数として受け取ります。
if-else文

ラムダ式は、->を用いて定義されます。上記の例では、elementという変数が要素を表し、{}内には要素に対する処理が記述されます。この場合、forEachメソッドは、配列またはコレクションの要素を繰り返し、各要素に対して指定された処理を行います。
if-else文

forEachメソッドは、拡張for文に比べて、コードを簡潔に書くことができます。また、複数の要素に対して同じ処理を行う場合にも適しています。
if-else文

forEachメソッドは、配列やコレクションの要素を順番に処理するため、要素の追加や削除などの操作を行う場合は、for文またはIteratorを使用する必要があります。また、forEachメソッドは、並列処理にも対応しており、parallelStreamメソッドと組み合わせて使用することで、複数のスレッドを使用した並列処理が可能です。
if-else文

Javaのコレクションフレームワークを使用してリスト(List)、セット(Set)、およびマップ(Map)を作成し、それらの要素を表示する例
if-else文

コードの概要:
if-else文

各コレクション(リスト、セット、マップ)は、Java 9で導入された List.of()、Set.of()、Map.of() メソッドを使用して作成されています。これらのメソッドは、不変のコレクションを作成し、指定された要素で初期化する便利な方法を提供します。そして、forEach メソッドは、各要素に対して指定されたアクション(この場合は表示)を実行するために使用されています。
if-else文

List.ofメソッドは、指定された要素から不変のリストを作成するために使用されます。つまり、この場合、"apple", "banana", "orange" の3つの要素を持つリストが作成されます。
if-else文

そして、forEachメソッドは、リスト内の各要素に対して指定されたアクションを実行します。System.out::printlnは、メソッド参照を使っています。これはprintlnメソッドへの参照を表しています。
if-else文

つまり、fruits.forEach(System.out::println);は、リストの各要素をSystem.out.printlnメソッドを使って出力するという意味です。
if-else文

メソッドチェインは、Javaで複数のメソッド呼び出しを1つの文でつなげて書く方法です。これにより、コードがより簡潔で読みやすくなります。例を見てみましょう。
if-else文

この例では、List.ofメソッドを使用してリストを作成し、それをストリームに変換しています。そして、メソッドチェインを使用していくつかの処理を行っています。
if-else文

これにより、1つのストリーム処理内で複数の操作を行い、最終的な結果を得ることができます。メソッドチェインを使うと、コードがシンプルで、各ステップが連続しているため、処理の流れがより明確になります。
if-else文

以下は、Javaで反復処理を行う際に使用する主要な文法とメソッドのチートシートです。
if-else文

プログラミングにおける「型」(または「データ型」)は、データの種類や性質を表す概念です。プログラミング言語において、変数、関数の引数や戻り値、オブジェクトなどの要素には、それぞれ特定の型が割り当てられます。型は、そのデータがどのような値や操作を持ち、どのようにメモリ上で表現されるかを決定します。
if-else文

プログラミングにおける型の役割は次のようなものがあります:
if-else文

プログラミングにおける型は、プログラムの構造や振る舞いを理解し、データを適切に扱うための基本的な概念です。適切な型の選択と使用は、プログラムの正確性、効率性、保守性を向上させるのに役立ちます。
if-else文

Javaにおける型は、プリミティブ型、クラス型、配列型の3つに大別されます。また、値型と参照型の2つのカテゴリーに分けることもできます。
if-else文

プリミティブ型は、Javaの基本的なデータ型で、値そのものを格納する値型です。
if-else文

Javaのプリミティブ型には、以下の8つがあります。
if-else文

Javaでは自動的に型変換が行われる場合があります。例えば、int型とdouble型の演算を行うと、int型の値が自動的にdouble型に変換されます。
if-else文

ただし、変換元の型よりも変換先の型が大きい場合、精度の低下や情報の欠落が発生する場合があるため、注意が必要です。
if-else文

また、Javaのプリミティブ型には、各データ型のラッパークラスが用意されています。 ラッパークラスを使用することで、プリミティブ型をクラスとして扱えるようになります。 例えば、int型の場合はIntegerクラスが対応しています。
if-else文

参照型には、クラス型、インタフェース型、配列型などがあります。 クラス型やインタフェース型は、それぞれ自分で定義して使用することができます。 配列型は、同じデータ型の値を複数格納するためのもので、以下のように宣言します。
if-else文

Javaのプリミティブ型は、値そのものを格納するのに対し、参照型はオブジェクトへの参照を格納するため、メモリの使用方法が異なります。 また、プリミティブ型は値渡し、参照型は参照渡しとして扱われます。 このため、値渡しの場合は、値そのものがコピーされ、オリジナルの変数に影響を与えませんが、参照渡しの場合は、オブジェクトそのものへの参照が渡されるため、オリジナルのオブジェクトに影響を与える可能性があります。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

Javaにおけるリテラル(literal)とは、ソースコード上で直接的に表現される値のことを指します。つまり、コード内に直接書かれた値そのものを指します。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 Javaでは、数値リテラルの中にアンダースコアを挿入することで、コードの読みやすさを向上させる事ができます。 数値リテラルへのアンダースコアの挿入は、Java 7 からサポートされました。
if-else文

たとえば、以下のような数値リテラルがある場合を考えてみましょう。
if-else文

このコードでは、aに1000000という値が代入されています。しかしこの数値は非常に大きく、どのような値であるかをすぐに理解するのは難しいかもしれません。
if-else文

そこで、アンダースコアを使用して数値リテラルを以下のように書き換えることができます。
if-else文

このように書くことで、数値が100万であることがすぐにわかります。
if-else文

アンダースコアは数値の途中でも使用することができます。たとえば、以下のように数値を書くことができます。
if-else文

このようにすることで、バイナリ表現された数値がより読みやすくなります。
if-else文

アンダースコアは、浮動小数点数にも使用することができます。たとえば、以下のように書くことができます。
if-else文

このようにすることで、円周率をより読みやすく書くことができます。
if-else文

ただし、アンダースコアを数値リテラルの先頭や末尾、小数点の前後に置くことはできません。また、同じ数値リテラル内で複数のアンダースコアを使用することはできません。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

プログラミングにおける「null」とは、値が存在しないことを表す特別な値です。nullはプログラムで使用されるさまざまなデータ型(オブジェクト、配列、ポインタなど)の初期値として設定されることがあります。
if-else文

主な用途としては以下のようなものがあります:
if-else文

nullは便利な概念ですが、誤った使用やnullポインター例外などのランタイムエラーを引き起こす可能性があります。そのため、nullの使用は慎重に行う必要があります。近年のプログラミング言語では、null安全性を向上させるためにオプショナル型やnull許容型などの機能が導入されています。
if-else文

Javaにおける「null」とは、参照型(Reference Type)の変数が参照するオブジェクトが存在しないことを示す特別な値です。Javaのすべてのオブジェクトはヒープ領域に保存され、変数はそのオブジェクトへの参照(アドレス)を保持します。nullは、そのような参照がオブジェクトを指していないことを示します。
if-else文

以下はnullの主な特徴です:
if-else文

Javaでは、nullを適切に扱うことが重要です。nullをチェックし、nullポインターエクセプションを防ぐための適切な手段があります。 例えば、条件付きのnullチェックやOptionalクラスの使用などが挙げられます。 Javaにはnull安全性を向上させるためのさまざまな手段があり、プログラマーはこれらの手段を活用してnull関連の問題を回避できます。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

JavaのOptionalは、Java 8で導入されたクラスで、nullセキュリティという問題に対処するための手段の1つです。Optionalは、値が存在するかどうかを示すラッパークラスであり、nullを明示的に処理することなく、値の有無を安全に操作するための手段を提供します。
if-else文

Optionalは以下のように使用できます:
if-else文

Optionalは、null値の扱いに関するバグを減らし、より安全で明確なコードを作成するのに役立ちます。 ただし、Optionalを過度に使用することは、コードを複雑にする可能性があるため、適切なバランスが必要です。
if-else文

以下は、JavaのOptionalクラスの一部の主要なメソッドとその説明を表形式で示したものです。
if-else文

これらのメソッドは、Java 8からOptionalクラスで導入され、nullを避けるために便利な方法を提供します。
if-else文

Optionalはnullを扱う際の安全性を向上させるための手段ですが、参照型には依然としてnullを取り得るという点に留意する必要があります。
if-else文

Optionalは、主にnullを返す可能性のあるメソッドの戻り値や、メソッドの引数として使用されます。しかし、既存のコードや外部ライブラリとの連携、あるいは一時的なnull値の許容など、様々な理由でnullが依然として存在することがあります。
if-else文

そのため、Optionalを使用することでnullの扱いを明確にすることができますが、すべてのnullを完全に排除することは難しい場合があります。したがって、プログラマーは依然としてnullの可能性に備えてコードを記述する必要があります。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

Javaの文字列は、java.lang.Stringクラスで表されるオブジェクト型のデータです。文字列は、文字のシーケンスであり、文字列中の各文字はUnicode文字を表します。Javaの文字列はイミュータブル(不変)であり、一度作成された文字列オブジェクトの内容は変更できません。
if-else文

以下は、Javaの文字列に関する基本的な操作を1つのソースコードにまとめたものです。
if-else文

このコードでは、文字列の作成、結合、長さの取得、部分文字列の取得、比較、検索、大文字・小文字変換、空白の削除、置換などの基本的な操作を行っています。これらの操作は、Javaの文字列処理においてよく使用されます。
if-else文

以下は、Javaの文字列クラス (java.lang.String) に含まれる主なメソッドの一覧です。
if-else文

これらのメソッドは、Javaの文字列を操作するために使用されます。それぞれのメソッドは、文字列に対して特定の操作を行います。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

Javaの配列は、同じ型の複数の要素を格納するためのデータ構造です。 配列は固定サイズであり、要素は0から始まるインデックスでアクセスされます。 Javaでは、配列はオブジェクトとして扱われます。
if-else文

以下のJavaのソースコードは、配列を宣言し、初期化し、要素へのアクセス、配列の長さの取得、拡張forループの使用、配列のコピー、ソート、比較など、様々な操作を行う方法を示しています。
if-else文

このコードでは、配列を宣言し、初期化する際に初期化リストを使用しています。そして、配列の要素へのアクセス、配列の長さの取得、拡張forループを使った要素の表示、Arrays.copyOfを使った配列のコピー、Arrays.sortを使った配列のソート、そしてArrays.equalsを使った配列の比較を行っています。
if-else文

このコードは、配列を操作するための基本的な手法を示しており、これらの手法を理解することで、Javaで配列を効果的に利用することができます。
if-else文

以下は、Javaの配列で使用できる主なメソッドの一覧です。この一覧には、配列の作成、要素の操作、配列のコピー、比較、ソートなど、さまざまな操作に関連するメソッドが含まれています。
if-else文

これらのメソッドは、Javaの java.util.Arrays クラスで定義されており、配列を効果的に操作するための便利なユーティリティを提供しています。
if-else文

Javaにおける多次元配列(Multidimensional Array)とは、配列の要素が配列である配列のことです。つまり、配列内に配列を持つことで、複数の次元を持つデータ構造を表現します。
if-else文

たとえば、2次元配列は行と列のような2つの次元を持ちます。3次元配列は、立方体のように3つの次元を持ちます。これにより、行列、立方体、テンソルなどの構造化されたデータを効率的に表現することができます。
if-else文

以下は、Javaで多次元配列を宣言および初期化する方法の例です。
if-else文

多次元配列は、ネストされたforループを使用して要素にアクセスすることが一般的です。例えば、2次元配列の要素にアクセスするには、2つのループを使用して行と列を反復処理します。
if-else文

Java 5以降では、拡張forループ(enhanced for loop)またはfor-eachループと呼ばれる新しいループ形式が導入されました。これは、コレクションや配列などの反復可能なオブジェクトを簡潔に反復処理するために使用されます。
if-else文

以下は、拡張forループを使用して多次元配列を反復処理する方法の例です。
if-else文

この方法では、2つまたは3つのネストされたループを使用する必要がなくなり、より簡潔で読みやすいコードが得られます。各ループでは、拡張forループを使用して配列の各要素を直接取得し、それを処理することができます。
if-else文

拡張forループは、配列やリストなどの反復可能なコレクションの要素を処理する場合に非常に便利です。これにより、ループの記述が簡素化され、コードの可読性が向上します。
if-else文

以下は、4x4のdouble配列を宣言し、それを単位行列にするJavaのコード例です。
if-else文

このコードは、4x4のdouble配列を宣言し、その要素を単位行列に初期化します。その後、単位行列を出力します。単位行列は、対角要素がすべて1で、それ以外の要素がすべて0の正方行列です。
if-else文

多次元配列は、行列や画像処理など、多次元のデータを扱う際に役立ちます。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

Javaのコレクションは、複数の要素を格納し、効率的なデータ操作を可能にするためのフレームワークです。Javaのコレクションフレームワークは、java.utilパッケージに含まれており、さまざまなインターフェースとそれらを実装するクラスが提供されています。主なコレクションインターフェースには、リスト、セット、マップなどがあります。
if-else文

以下は、Javaのコレクションフレームワークを使った例を1つのソースコードにまとめたものです。
if-else文

このコードでは、リスト、セット、マップ、キュー、デッキのそれぞれのコレクションを作成し、要素を追加しています。それぞれのコレクションの要素が出力されます。これにより、Javaのコレクションフレームワークの基本的な使い方を示しています。
if-else文

以下は、Javaのコレクションフレームワークに含まれる主要なクラスとインターフェースの一覧を、名前、クラス・インターフェースの別、説明の順に表組みで示したものです。
if-else文

これらのクラスとインターフェースは、Javaのコレクションフレームワークを構成し、さまざまなデータ構造を効率的に操作するための手段を提供します。
if-else文

Javaのコレクションフレームワークは、データを効率的に管理し、操作するための標準的なAPIセットです。これにより、プログラマーはリスト、セット、マップなどのさまざまなデータ構造を使用してデータを格納し、操作することができます。Javaのコレクションフレームワークは、java.utilパッケージに含まれており、多くのインターフェースとクラスから構成されています。
if-else文

コレクションフレームワークの主な特徴は次のとおりです:
if-else文

コレクションフレームワークは、Javaプログラミングにおいて非常に重要であり、さまざまなアプリケーションやライブラリで広く使用されています。プログラマーは、これらのAPIを十分に理解し、適切に活用することで、効率的で堅牢なコードを作成することができます。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

Javaでは、クラスはオブジェクト指向プログラミングの基本的な構成要素です。クラスは特定の属性(データフィールド)と動作(メソッド)を持つオブジェクトの設計図です。
if-else文

Javaでクラスを定義するには、以下のようにクラス名と中括弧で囲まれたクラス本体を宣言します。
if-else文

クラスのインスタンス化は、クラスからオブジェクトを生成するプロセスです。
if-else文

これがJavaのクラスの基本的な概念です。クラスはオブジェクト指向プログラミングの中心的な要素であり、Javaプログラムの構築において重要な役割を果たします。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。 スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。
if-else文

プログラミングにおける例外処理は、プログラムが実行中に発生する予期しないエラーや異常な状況に対処するための仕組みや手法を指します。プログラムが実行中にエラーが発生する可能性がある場合、例外処理はプログラムの安定性を維持し、クラッシュや異常終了を防ぎます。
if-else文

以下は、プログラミングにおける例外処理の基本的な概念です:
if-else文

例外処理は、プログラミングにおいて非常に重要です。適切に実装された例外処理は、プログラムの安定性を高め、ユーザーエクスペリエンスを向上させるのに役立ちます。また、例外処理はデバッグや問題解決の際にも役立ちます。
if-else文

Javaの例外処理は、プログラム実行中に予期しない状況やエラーが発生した場合に、その状況を適切に処理するための仕組みです。Javaの例外処理は、プログラムの安全性や信頼性を高めるために非常に重要です。
if-else文

例外は、実行時に発生するエラーの種類や条件を表します。例えば、ゼロ除算、配列の範囲外へのアクセス、ファイルが見つからないなどのエラーは、Javaの例外処理を使用して適切に処理することができます。
if-else文

Javaの例外処理は以下のような特徴を持ちます:
if-else文

Javaの例外処理は、プログラムのロバストさを向上させ、予期しない状況に対処するための重要な手段です。例外処理を適切に使用することで、プログラムの安全性や信頼性を向上させることができます。
if-else文

以下は、Javaの例外処理を1つのソースコードで解説したものです。
if-else文

この例では、次のような内容を含んでいます:
if-else文

Javaには throws キーワードがあります。throws キーワードは、メソッドが特定の例外をスローする可能性があることを宣言するために使用されます。
if-else文

メソッドが特定の例外をスローする可能性がある場合、そのメソッドのシグネチャに throws キーワードを使用して、その例外を指定します。これにより、メソッドを呼び出す際に、呼び出し元がその例外を適切に処理するか、またはさらに上位の呼び出し元に例外を伝播させるかを決定できます。
if-else文

例えば:
if-else文

この例では、readFile メソッドが IOException をスローする可能性があることが宣言されています。メソッド内で IOException が発生する可能性がある場合、その例外をキャッチして処理するか、または readFile メソッドの呼び出し元で try-catch ブロックを使用して例外を処理する必要があります。
if-else文

throws キーワードを使用することで、メソッドの呼び出し元がそのメソッドがスローする可能性がある例外に対処できるようになります。
if-else文

Javaの例外には、いくつかの主要なクラスがあります。
if-else文

以下に、Javaの例外クラスのいくつかを表組みで示します。
if-else文

これらはJavaの例外の一部であり、それぞれ特定の状況や条件で発生します。Javaの例外処理では、これらの例外クラスを適切にキャッチして処理することが重要です。また、必要に応じて独自の例外クラスを定義することもできます。
if-else文

スクリプトに割り当てた時間が終了しました。スクリプトに割り当てた時間が終了しました。