-
Javaでprotectedメソッドはオーバーライドできる?アクセス修飾子のルールを解説
はい、スーパークラスのprotectedメソッドは、サブクラスでオーバーライドすることができます。ただし、アクセス修飾子に関する重要なルールがあります。スーパークラスのメソッドがprotectedである場合、サブクラスでオーバーライドするメソッドにはprotectedまたはpublicを指定できますが、デフォルト(パッケージプライベート)やprivateにすることはできません。つまり、サブクラスのオーバーライドメソッドは、元のメソッドよりも弱いアクセス修飾子を持つことができないのです。アクセス修飾子のルールまとめprotected → protected または public への変更は可能p
-
【Java入門】endsWith()メソッドで文字列が特定のサブ文字列で終わるかどうかを判定する方法
JavaにおけるString(文字列)は、不変(イミュータブル)な文字列の並びを表すオブジェクトです。一度生成された文字列インスタンスは、後から内容を変更することはできません。文字列オブジェクトを作成する際には、java.lang.Stringクラスを使用します。ある文字列が特定の文字列(サブ文字列)で終わっているかどうかを判定したい場合には、Stringクラスが提供するendsWith()メソッドを利用します。このメソッドは、末尾が指定した文字列と一致していればtrue、一致していなければfalseというboolean値を返します。構文public boolean endsWith(Stri
-
Javaでfloat型よりもdouble型が推奨されるのはどんなとき?精度の違いを解説
Javaにおけるfloat型とdouble型の基本的な違いJavaでは、double型とfloat型のどちらも浮動小数点数を表現するために使用できます。しかし、より高精度で正確な計算結果が求められる場合には、float型よりもdouble型が推奨されます。両者の最大の違いは精度です。double型の精度は小数点以下15〜16桁に達しますが、float型の精度はわずか6〜7桁程度しかありません。そのため、通常はすべての計算処理や一時変数(テンポラリ変数)にdouble型を使用し、大量の数値データを格納する配列など、メモリ使用量を抑えたい場面でfloat型を活用するのが一般的です。ビット構成とデフ
-
Java Swingで異なるルック・アンド・フィール(L&F)を設定する方法
Java Swingでは、ルック・アンド・フィール(Look and Feel:L&F)を変更することで、GUIの外観や操作感を自由にカスタマイズできます。「ルック」はコンポーネントの全体的な見た目を定義し、「フィール」はその動作(振る舞い)を定義します。各L&FはLookAndFeelクラスのサブクラスとして実装されており、それぞれが完全修飾クラス名によって識別されます。デフォルトでは、Swing標準のL&FであるMetal L&Fが適用されます。プログラムによるL&Fの設定方法L&Fをプログラムから設定するには、UIManagerクラスのse
-
Javaで実行中のスレッドを中断(割り込み)する方法をわかりやすく解説
スレッドへの割り込み(interrupt)とは Javaであるスレッドを中断したい場合、対象となるThreadオブジェクトに対してinterrupt()メソッドを呼び出します。つまり、スレッドの割り込みは、別のスレッドからinterrupt()メソッドが呼び出されることによって発生します。 なお、interrupt()はスレッドを強制的に停止させるものではなく、「割り込み要求が出された」というフラグを立てるだけです。実際に処理を中断するかどうかは、ターゲット側のスレッドがフラグを確認して自ら終了処理を行う、いわゆる「協調的なキャンセル」によって実現されます。 Threadクラスが提供する3つ
-
JavaでJButtonにさまざまなボーダー(境界線)を適用する方法
JButtonはAbstractButtonクラスのサブクラスであり、Java Swingアプリケーションにおいてプラットフォームに依存しないボタンを追加するために使用されます。ユーザーがボタンをクリックするとActionListenerインターフェースが発生し、さらにマウスによる操作ではMouseListenerが、キーボードによる操作ではKeyListenerがそれぞれ生成されます。 JButtonには、LineBorder(ラインボーダー)、BevelBorder(ベベルボーダー)、EtchedBorder(エッチドボーダー)、EmptyBorder(エンプティボーダー)、TitledB
-
Javaのpack()メソッドとは?使い方とsetSize()との違いを解説
pack()メソッドは、JavaのWindowクラスで定義されているメソッドで、フレーム内のすべてのコンポーネントがそれぞれの推奨サイズ(preferred size)以上で表示されるように、ウィンドウのサイズを自動的に調整します。 代替手段として、setSize()メソッドやsetBounds()メソッドを呼び出して、フレームのサイズを明示的に指定する方法もあります。しかし一般的には、pack()メソッドを使用する方がsetSize()よりも推奨されています。その理由は、pack()がフレームのサイズ決定をレイアウトマネージャーに委ねることができ、レイアウトマネージャーはプラットフォーム間の
-
Javaでboolean配列を初期化する方法をわかりやすく解説
Javaにおけるboolean配列は、boolean型の値のみを格納できる配列です。boolean配列のデフォルト値(初期値)はfalseであり、配列を作成した時点で、すべての要素が自動的にfalseで初期化されます。一方、参照型(クラス型)の配列の場合は、nullで初期化される点に注意が必要です。 実際の開発では、「配列のすべての要素をtrueまたはfalseで明示的に初期化したい」というケースがよくあります。そのような場合には、Arrays.fill()メソッドを使うと、1行のコードで全要素をまとめて初期化できて便利です。 boolean配列の宣言構文 boolean[] booleanA
-
JavaのStringTokenizerクラスとは?文字列をトークンに分割する方法を実例付きで解説
StringTokenizerはObjectクラスのサブクラスであり、アプリケーションが文字列をトークン(字句)に分割するための機能を提供します。区切り文字(デリミタ)は、インスタンス生成時に指定することも、トークンごとに個別に指定することも可能です。 StringTokenizerオブジェクトは、生成時にreturnDelimsフラグがtrueかfalseかによって動作が変わります。フラグがtrueの場合は区切り文字自体もトークンとして返され、falseの場合は区切り文字はスキップされます。また、StringTokenizerオブジェクトは内部で現在の解析位置(カーソル)を保持しており、順次
-
JavaのJRadioButtonMenuItemとは?メニュー項目の作成方法とサンプルコードを解説
JRadioButtonMenuItemは、Java SwingのJMenuItemクラスを継承したサブクラスです。同じグループに属する複数のメニュー項目の中から1つだけを選択できるラジオボタン形式のメニュー項目で、選択された項目にはその選択状態が表示されます。 複数のJRadioButtonMenuItemをButtonGroupオブジェクトに追加することでボタングループを形成できます。グループ内のいずれかの項目が選択されると、その他のすべてのラジオボタンメニュー項目は自動的に選択解除されます。この仕組みにより、設定画面などで「排他的な選択」を簡単に実現できます。 構文 public cla
-
【Java】TreeSetの要素をファイルに保存する方法を解説
TreeSetはAbstractSetクラスのサブクラスであり、重複する要素を許可しないコレクションです。デフォルトでは要素を昇順で自動的にソートして保持するため、特定の要素への検索・取得速度が速いという特徴があります。内部的にはTreeMapを使用して要素を格納しており、各要素はその自然順序付け(natural ordering)に従って並べ替えられます。 この記事では、TreeSetに格納された要素をファイルに保存する方法を紹介します。手順としては、Arrays.asList()メソッドを使ってセットを作成し、それをObjectOutputStreamクラスのwriteObject()メソ
-
JavaでJFrameを画面の中央に表示する方法
JFrameはFrameクラスのサブクラスであり、フレームに追加されたコンポーネントは「コンテンツ」と呼ばれ、contentPaneによって管理されます。JFrameにコンポーネントを追加する場合は、フレーム本体に直接追加するのではなく、contentPane経由で追加するのが推奨されています。JFrameは境界線・タイトルバー・ボタンを持つWindowのようなウィンドウであり、Java Swingアプリケーションの大部分はこのJFrameをベースに実装されています。 デフォルトの状態では、JFrameは画面の左上に表示されます。これを画面中央に表示したい場合は、Windowクラスが提供するs
-
JavaのgetClass()メソッドとは?使い方と実行例をわかりやすく解説
getClass()メソッドは、すべてのクラスの継承元となるObjectクラスで定義されており、Classクラスのインスタンスを返します。Javaでは、オブジェクトの新しいインスタンスを生成すると、そのインスタンスは必ず何らかのクラスに関連付けられます。JVM(Java仮想マシン)上では、同じクラスは1つだけロードされますが、そのクラスを参照するオブジェクトは複数存在できます。そのため、異なる2つのオブジェクトからクラス情報を取得した場合、両者が同じクラスを参照していることもあります。 構文 public final Class<?> getClass() 押さえておきたいポイント
-
JavaでJSON文字列をJSONオブジェクトに変換する方法を徹底解説
JSONとはJSON(JavaScript Object Notation)は、データの転送や保存に広く利用されている軽量なデータ交換フォーマットです。人間にとって読み書きしやすく、機械にとっても解析が容易なため、Web APIや設定ファイルなど、さまざまな場面で採用されています。JSONObjectとJSONArrayの役割JSONObjectクラスは、文字列からテキストを解析して、Mapのようなオブジェクトを生成します。このオブジェクトには、内容を操作するためのメソッドや、JSON仕様に準拠したオブジェクトのシリアライズを生成するメソッドが用意されています。一方、JSONArrayクラスは
-
JavaのIteratorとListIteratorの違いを徹底解説!特徴と使い分けのポイント
IteratorとListIteratorとは Javaでは、コレクションに格納された要素を1つずつ順番に取り出して処理するために、IteratorとListIteratorという2つのインターフェースが提供されています。 両者は内部実装こそ異なるものの、目的はどちらも「コレクション内のデータを順次走査する」ことです。しかし、利用できるコレクションの種類や、走査中に行える操作には大きな違いがあります。 IteratorとListIteratorの主な違い一覧 No.比較項目IteratorListIterator 1適用範囲List、Set、Queueなど、あらゆる種類のコレクションに対し
-
Javaアプレットとサーブレットの違いとは?実行環境・パッケージ・セキュリティを徹底比較
Javaには、アプレット(Applet)とサーブレット(Servlet)という2種類のプログラムがあります。どちらもJava環境上で動作するアプリケーションですが、最大の違いは処理が実行される環境にあります。アプレットはクライアント側で動作するのに対し、サーブレットはサーバー側で動作します。 以下の表に、アプレットとサーブレットの重要な違いをまとめました。 番号項目アプレットサーブレット 1実行環境クライアント側で実行されます。つまり、クライアントマシンのWebブラウザ内で動作します。サーバー側で実行されます。つまり、Webサーバー上で動作します。 2親パッケージjava.applet
-
JavaのArrayListとCopyOnWriteArrayListの違いを徹底解説
Javaにおいて、ArrayListとCopyOnWriteArrayListはどちらもListインターフェースの実装クラスですが、それぞれに重要な違いがあります。本記事では、両者の主な相違点を比較表とサンプルコードを交えてわかりやすく解説します。ArrayListとCopyOnWriteArrayListの主な違いNo.項目ArrayListCopyOnWriteArrayList1同期(スレッドセーフ性)非同期であり、複数スレッドからの同時アクセスは保証されません。同期化されており、ある時点でオブジェクトにアクセスできるのは1つのスレッドのみです。2パフォーマンス同期処理が不要なため、動作
-
JavaでのArrayListとHashSetの違いを徹底解説!使い分けのポイントも紹介
HashSetとArrayListは、どちらもJavaコレクションフレームワークにおいて最も重要なクラスの一つです。それぞれ特徴が異なるため、用途に応じた適切な使い分けが求められます。本記事では、ArrayListとHashSetの主な違いを6つの観点から比較し、実際のサンプルコードとともにわかりやすく解説します。ArrayListとHashSetの違い一覧No.項目ArrayListHashSet1実装インターフェースListインターフェースを実装しています。Setインターフェースを実装しています。2内部構造内部的には配列(動的配列)を使って実装されています。内部的にはHashMapを使って
-
JavaでJSONファイルを読み込む方法|json-simpleライブラリの使い方を解説
JSONは、広く利用されているデータ交換フォーマットの一つであり、軽量かつ言語に依存しないという大きな特徴を持っています。JavaでJSONを扱う際に便利なのが、軽量なJSON処理ライブラリであるjson-simpleです。このライブラリを使えば、JSONファイルの読み込み・書き出しはもちろん、JSONテキストのエンコードやデコードも簡単に行えます。さらに、JSON仕様(RFC4627)に完全準拠しているため、安心して利用できます。 JSONファイルを読み込むには、まずjson-simple.jarファイルをダウンロードし、プロジェクトのクラスパスに設定しておく必要があります。 読み込むJSO
-
JavaでJSONArrayをJSONObjectに追加する方法を解説
JSON(JavaScript Object Notation)は、データ交換に広く使われているテキストベースのフォーマットです。軽量でありながら言語に依存しないという特徴を持つため、多くのプログラミング環境で採用されています。 Javaでは、JSONArray(JSON配列)をJSONObject(JSONオブジェクト)に追加することができます。手順は以下の通りです。 JSONArrayをJSONObjectに追加する手順 ArrayListなどのリストに要素を追加します。 そのリストの内容をJSONArrayクラスのput()メソッドを使って配列に格納します。 最後に、作成したJSONA