バブルソートとは バブルソートは、リストを繰り返し走査し、隣接する要素を比較して順序が間違っていれば交換する、古典的な比較ベースのアルゴリズムです。各パスで次の最大値が最終位置に「泡のように」浮かび上がることからこの名がつきました。シンプルですが、ソートの仕組みを理解するための確かな基礎となります。 Java実装 以下のプログラムは、整数配列に対するバブルソートを示します。アルゴリズムの動作が見えるよう、詳細なデバッグ情報を出力します。 package com.guru99; public class BubbleSort { public static void main(Stri
回文数とは 回文数とは、前から読んでも後ろから読んでも同じ数のことです。例として121、393、48084などがあります。これらは垂直軸対称性を持ち、アルゴリズムパズルでよく扱われます。 Javaでは、回文判定は面接問題やコーディング課題で頻出します。アルゴリズムはシンプルですが、複数の実装方法があります。 アルゴリズムの概要 入力整数を読み取る 桁を反転させ、結果を保存 反転した数と元の数を比較 一致すれば回文数、そうでなければ非回文数 while文を使った判定 以下は、while文を使って数を反転させ、回文数かどうかを判定する簡潔なJavaプログラムです。処理過程を理解しやすいよう
Javaで再帰を使って文字列を反転させる 再帰は、問題をより小さな類似の部分問題に分解できる場合に強力な技術です。文字列の反転は、シンプルな再帰関数がいかにエレガントに文字列操作を扱えるかを示す古典的な例です。 なぜ再帰を使うのか 概念的な明確さ – 関数が問題の定義を自然に反映します。 最小限のコード – わずか数行で反転を実現できます。 教育的価値 – 基底ケース/再帰ステップのパターン理解に役立ちます。 Java実装 以下のプログラムは文字列を読み取り、再帰的な反転メソッドを適用し、結果を出力します。 package com.guru99; public class Revers
アームストロング数とは アームストロング数(自己愛数、ナルシシスト数とも呼ばれる)とは、その数の各桁の数字を桁数乗した和が元の数と等しくなる数のことです。 数学的に、桁をx、y、…、z、桁数をnとすると、以下が成り立ちます: xy…z = xn + yn + … + zn アームストロング数の例: 0, 1, 4, 5, 9, 153, 371, 407, 8208, … 与えられた数がアームストロング数か判定するJavaプログラム 以下は、与えられた整数がアームストロング数かどうかを検証するコンパクトなJava実装です。アルゴリズムは各桁をイテレートし、各桁の3乗を累積(3桁の数に焦点を当
Javaにおけるフィボナッチ数列とは フィボナッチ数列とは、各数が直前の2つの数の和となる数列です。Javaでは通常、0と1から始まります: 0, 1, 1, 2, 3, 5, 8, 13, 21, … 数学的な興味深さだけでなく、フィボナッチ数列はアルゴリズム解析で頻繁に用いられます。例えば、再帰手順の実行時間見積もりや、最大公約数の計算などです。 for文による実装 while文による実装 再帰による実装 ユーザー入力による実装 for文を使ったフィボナッチ数列 // for文を使用 public class FibonacciExample { public static
学べること この簡潔なガイドでは、Javaにおける(1)charからStringへの変換と、(2)Stringからcharへの変換の一般的な方法を解説します。これらの技術は、文字列操作、ファイルI/O、API連携において不可欠です。 charをStringに変換 Stringをcharに変換 charをStringに変換する方法 Javaのcharは16ビットのUnicodeスカラ値です。内部的にStringはcharの配列であるため、変換は直感的です。Javaには2つのイディオマチックなアプローチがあります: 方法1: Character.toString() public clas
素数とは 素数とは、1より大きい自然数で、1とその数自身以外に正の約数を持たない数のことです。例として、2、3、5、7、11、13、17などがあります。 重要: 0と1は素数ではなく、2は唯一の偶数の素数です。 1から100までの素数を出力するJavaプログラム 以下は、1から100までの全ての素数を列挙する明確でコメント付きのJavaプログラムです: public class PrimeNumbersDemo { public static void main(String[] args) { int maxCheck = 100; StringBu
JSONとは JSON(JavaScript Object Notation)は、キーと値のペアを用いた軽量で言語非依存のデータ形式です。データ交換に広く採用されており、ファイルやデータベースへの格納も容易です。 { username: guru99user, email: guru99user@mail.com } 主な特徴: 中括弧 {} で囲まれる キーと文字列値はダブルクォートで囲む ペアはカンマで区切る キーには英数字とアンダースコアが使用可能(先頭に数字やスペースは不可) XMLとは XML(eXtensible Markup Language)は、W3C標準の構造化データ形
素数とは 素数とは、1より大きい自然数で、1とその数自身以外に正の約数を持たない数のことです。代表的な例として、2、3、5、7、11、13、17などがあります。 重要なポイント: 0と1は素数ではありません。 2は唯一の偶数の素数です。 Javaで素数判定を行うプログラム アルゴリズムの概要: 対象の数を2からその半分までの整数で割り、余りが0になるものがあれば合成数(素数でない)と判定します。 約数が見つかった時点でループを早期終了し、処理時間を短縮します。 最後まで約数が見つからなければ素数と判定します。 public class PrimeChecker { publ
Java 向け JasperReports とは? JasperReports は、開発者がアプリケーションにリッチで動的なレポートを埋め込める強力なオープンソース Java レポートエンジンです。HTML、PDF、XLS、RTF、CSV、XML、ODT、TXT などの出力形式をサポートし、Java EE、Spring、その他 Web フレームワークと統合可能です。 このステップバイステップガイドで学ぶこと: JasperReports の概要と核心概念 Jaspersoft Studio CE のインストールと設定 Java レポートでトップチョイスである理由 JasperReport
ビルドツールとは? ビルドツールは、ソースコードをデプロイ可能なアプリケーションに変換するプロセスを自動化し、コンパイル、テスト、パッケージング、ドキュメント生成などのタスクを処理します。開発者を反復的な手作業から解放し、環境間の一貫性を確保します。 なぜ Apache Ant か? Apache Ant は、ソースコードを実行可能アーティファクトに変換する軽量な Java ベースのコマンドラインユーティリティです。その名「Another Neat Tool」が示す通り、シンプルさと拡張性を兼ね備えています。Ant の XML ベースビルドスクリプトはプロセスを透明化し、チーム間での共有を容
Spring Framework とは? Spring は、エンタープライズアプリケーション構築を簡素化する軽量オープンソース Java フレームワークです。制御の反転(IoC)と依存性注入(DI)により疎結合を促進し、Hibernate、Struts、JSF、Tapestry など他の Java 技術の基盤として機能します。 このチュートリアルで学ぶ内容: Spring の核心目的とエコシステム 人気の理由となる主要機能 メジャーリリースを通じたフレームワークの進化 モジュールアーキテクチャと適切なコンポーネント選択 Spring MVC の基礎とリクエストフロー アスペクト指向プログ
Groovy とは? Apache Groovy は、Java 構文互換のオブジェクト指向言語で、JVM 上で動作します。Java バイトコードにコンパイルされるため、Java Runtime Environment があればどこでも実行可能です。Groovy は動的型付け、クロージャ、DSL サポート、簡潔な構文を追加し、Java の置き換えではなく理想的な伴侶となります。 なぜ Groovy を使うか? 動的でアジャイルな言語、高速プロトタイピングに最適 既存 Java ライブラリとシームレスに統合 Java 開発者にとって自然—学習曲線が最小限 Java より簡潔で表現力豊かなコード
Java のリフレクションとは? Java リフレクションは、クラスのあらゆる機能を実行時に分析・変更するプロセスです。Java のリフレクション API は、フィールド、メソッド、コンストラクタなど、クラスとそのメンバーを実行時に操作するために使用されます。 リフレクション API の利点の1つは、クラスの private メンバーも操作できることです。 java.lang.reflect パッケージはリフレクションを実装する多くのクラスを提供します。java.lang.Class クラスのメソッドを使って、特定クラスの完全なメタデータを収集します。 このチュートリアルで学ぶ内容:
Java でファイルを読み込むには? Java にはファイル操作用の多様な I/O クラスがあります。テキストファイルを効率的に読み込む最も一般的な方法は java.io.BufferedReader を使用することで、下位レベルの Reader をラップし、入力をバッファリングして高コストなシステムコールを削減します。 Java の BufferedReader とは? BufferedReader は、入力ストリーム(ファイルなど)から文字をバッファリングしながらテキストを読み込むクラスです。これにより、文字ごとにシステムコールを発生させず、高速な行単位またはブロック単位の読み込みが可能
Java の split() メソッドとは? String.split() メソッドは、正規表現で定義される指定された区切り文字に基づいて文字列を部分文字列の配列に分割します。日常的なユースケースでは区切り文字はスペースやカンマですが、任意の正規表現パターンを使用できます。 メソッドシグネチャ public String[] split(String regex) public String[] split(String regex, int limit) パラメータ regex:区切り文字を定義する正規表現 limit:返される配列要素の最大数。省略またはゼロの場合、すべての部分文字列
Java の Swing とは? Java Swing は、Abstract Window Toolkit(AWT)を拡張した洗練されたプラットフォーム非依存の GUI ツールキットです。ボタン、テーブル、ツリーなど豊富なウィジェットを提供し、基本コンポーネントを再発明せずに洗練されたデスクトップアプリケーションを作成できます。 Java Foundation Classes(JFC)の一部として、Swing は AWT のコア機能をベースにしつつ、軽量でカスタマイズ可能なコンポーネントを提供します。その結果、ルックアンドフィール変更、カスタムペインティング、データバインディングなど高度な
Java アプリケーションでは複数のタスクを同時に実行する必要がよくあります。このチュートリアルでは、シングルスレッドとマルチスレッド実行の違い、スレッドのライフサイクル、同期技術、各概念を説明する実践的なコード例を解説します。 シングルスレッドとは? Java のシングルスレッドは最小の実行単位です。Java ランタイムはアプリケーション開始時に ユーザースレッド を作成し、必要に応じて追加のユーザーまたは デーモンスレッド を追加できます。デーモンスレッドはバックグラウンドで実行され、JVM の終了を妨げません。 シングルスレッドの例: package demotest; public
このチュートリアルでは、Java での日付と時刻の扱いの基本をカバーします: 現在の日付と時刻の表示 SimpleDateFormat での日付フォーマットとパース 2つの日付の比較 Java の Date オブジェクトは以下のコンポーネントを表します: 年(2桁または4桁) 月(数値、3文字略称、フルネーム) 日 曜日(例:Sun, Mon, Tue) コンピュータはさらに多くの日付関連パラメータをサポートしており、後続セクションで説明します。 Java で現在日時を表示 Java の java.util.Date クラスは、現在のシステム日時を取得するシンプルな方法を提供しま
この簡潔なチュートリアルでは、Java で乱数値を生成する2つの最も一般的なアプローチ、java.util.Random と Math.random() を学びます。両方とも JDK の一部ですが、それぞれわずかに異なるユースケースに適し、独自の機能を提供します。 java.util.Random – あらゆるプリミティブ型の数値を生成可能。再現性のためにシード指定可。 Math.random() – オブジェクト作成なしで [0.0, 1.0) の範囲の double を素早く取得可能。 java.util.Random での乱数生成 Random クラスは int、long、floa
Java