-
Javaのヒープメモリと文字列定数プールの違いは何ですか?
ヒープメモリ ヒープメモリは、すべてのJavaクラスインスタンスと配列のメモリが割り当てられるランタイムデータ領域です。 ヒープはJVMの起動時に作成され、アプリケーションの実行中にサイズが増減する場合があります。 ヒープのサイズは、–XmsVMオプションを使用して指定できます。ヒープは、ガベージコレクション戦略に応じて、固定サイズまたは可変サイズにすることができます。最大ヒープサイズは、–Xmxオプションを使用して設定できます。 デフォルトでは、最大ヒープサイズは64MBに設定されています。 文字列定数プール Stringは、特別なメモリ位置を使用して、StringConsta
-
JavaでStringの代わりにStringBufferを使用する必要があるのはなぜですか?
StringBufferは、スレッドセーフで変更可能な文字シーケンスです。 Stringクラス(不変)とは異なり、StringBufferクラスは可変です。つまり、StringBufferオブジェクトの内容を変更できます。 StringBufferクラスの文字列を変更する場合、新しいStringオブジェクトを作成するのではなく、元の文字列自体を直接操作します。 このため、StringBufferクラスは、Stringクラスとは異なるメソッドのセットを提供します。これらのメソッドはすべて、文字列を含むバッファーを直接操作します。 StringBufferは、new演算子を使用し、Stri
-
Javaの文字列よりもStringBuffer/StringBuilderを使用する場所はどこですか?
Stringクラスオブジェクトは不変ですが、StringBufferオブジェクトとStringBuilderオブジェクトは変更可能です。 StringBuilderが同期されていないときに、StringBufferが同期されます。 連結演算子「+」は、StringBufferまたはStringBuilderのいずれかを使用して内部的に実装されます。 Stringオブジェクトは不変であるため、Object値が変更されない場合は、StringClassを使用してください。 Object値が変更される可能性があり、単一のスレッドからのみアクセスされる場合は、StringBuilderが同期され
-
Javaは多次元配列をサポートしていますか?
いいえ、Javaは多次元配列をサポートしていません。 Javaは配列の配列をサポートしています。 Javaでは、2次元配列は1次元配列の配列に他なりません。 int [] [] arr =new int [2] [4]; 式arr[i]は1次元配列を選択し、式arr[i][j]はその配列から要素を選択します。 各次元の配列インデックスは、ゼロから「長さ」までの範囲です。ここで、lengthは、指定された次元の配列の長さです。 配列代入演算子はありません。配列が割り当てられると、次元の数と各次元のサイズが固定されます。
-
JavaのExceptionクラスとErrorクラスの違いは何ですか?
ExceptionクラスとErrorクラスはどちらもjava.lang.Throwableクラスのサブクラスであり、実行時に例外を処理できますが、エラーは処理できません。 例外は、実行時に発生し、JVMを「あいまい」の状態にする論理エラーを表すオブジェクトです。 これらのランタイムエラーを表すためにJVMによって自動的に作成されるオブジェクトは、例外と呼ばれます。エラーはThrowableクラスのサブクラスであり、妥当なアプリケーションがキャッチしようとしてはならない重大な問題を示します。このようなエラーのほとんどは異常な状態です。 例外が発生した場合は、tryおよびcatchブロックを使用
-
Javaでcatchブロックなしのtryブロックを使用できますか?
はい、finalブロックを使用することで、catchブロックなしでtryブロックを作成できます。 ご存知のとおり、tryブロックで例外が発生した場合でも、System.exit()が常に実行されることを除いて、finalブロックは常に実行されます。 例1 public class TryBlockWithoutCatch { public static void main(String[] args) { try { System.out.println(&q
-
Javaで複数のcatchブロックを持つtryブロックを定義できますか?
はい、Javaで複数のcatchブロックを含む1つのtryブロックを定義できます。 すべての試行は、少なくとも1つのキャッチブロックに関連付ける必要があり、関連付ける必要があります。 tryブロックで例外オブジェクトが識別され、複数のcatchブロックがある場合は常に、catchブロックが定義された順序に基づいてcatchブロックの優先順位が与えられます。 常に最初のキャッチブロックが最優先されます。最初のcatchブロックが識別された例外オブジェクトを処理できない場合、すぐ次のcatchブロックが考慮されます。 例 class TryWithMultipleCatch {
-
Javaコードにさまざまなコメントを追加するにはどうすればよいですか?
Javaコメントは、コンパイラーおよびインタープリターによって実行されないステートメントです。コメントは、変数、メソッド、クラス、または任意のステートメントに関する情報を提供するために使用できます。また、特定の時間プログラムコードを非表示にするために使用することもできます。 Javaコメントの種類 Javaには3種類のコメントがあります。 1行のコメント 複数行のコメント ドキュメントのコメント 1行のコメント 1行のコメントは//で始まり、行の終わりで終わります。 例1 public class SingleLineComment { public stati
-
Javaでカスタム例外を作成するにはどうすればよいですか?
アプリケーションの要件に基づいて、意味のある例外を開発する必要がある場合があります。 JavaでExceptionクラスを拡張することで、独自の例外を作成できます Javaでのユーザー定義の例外は、カスタム例外とも呼ばれます。 例を使用してカスタム例外を作成する手順 CustomExceptionクラスは、このクラスがExceptionクラスを拡張しているカスタム例外クラスです。 ローカル変数メッセージを1つ作成して、例外メッセージをクラスオブジェクトにローカルに保存します。 カスタム例外オブジェクトのコンストラクターに文字列引数を渡します。コンストラクターは、引数文字列をプライベート文
-
キャッチにreturnステートメントを含めることはできますか、それともJavaで最後にブロックすることはできますか?
はい、catchとfinallyブロックでメソッドのreturnステートメントを記述できます。 メソッドに戻り型があり、条件に基づいてメソッドの任意の部分で何らかの値を返すことができる状況があります。 catchブロックに値を返し、メソッドの最後に値を返すことができる場合、コードは正常に実行されます。 catchブロックに値を返し、値を返した後にメソッドの最後にステートメントを記述できる場合、コードは実行されないため、Javaが到達不能コードをサポートしていないことがわかっているため、到達不能コードになります。 最後のブロックで値を返し、メソッドの最後に戻り値を保持する必要がない場合。
-
JavaのStackOverflowErrorとOutOfMemoryErrorの違いは何ですか?
Javaプログラムを実行するたびに、オペレーティングシステムはJVMにメモリを割り当てます。 JVMは、このメモリを2つの部分に分割します。 1つはスタックメモリで、もう1つはヒープメモリです。スタックはメソッドの実行に使用され、ヒープはオブジェクトの格納に使用されます。スタックがいっぱいになると、JVMはjava.lang.StackOverflowErrorをスローし、ヒープがいっぱいになると、JVMはjava.lang.OutOfMemoryErrorをスローします。 StackOverflowError スタックはメソッドの実行に使用されます。メソッド呼び出しごとに、スタックメモ
-
JavaのprintStackTrace()メソッドとgetMessage()メソッドの違いは何ですか?
例外の詳細を見つける方法は2つあります。1つはprintStackTrace()メソッドで、もう1つはgetMessage()メソッドです。 printStackTrace()メソッド これはjava.lang.Throwableクラスで定義されているメソッドであり、java.lang.Errorクラスとjava.lang.Exceptionクラスに継承されます。 このメソッドは、例外の名前、メッセージの性質、および例外が発生した行番号を表示します。 例 public class PrintStackTraceMethod { public static voi
-
最終的にブロックは常にJavaで実行されますか?
はい、JVMのクラッシュまたはSystem.exit()の呼び出しのいずれかが原因でプログラムが異常終了しない限り、finallyブロックは常に実行されます。 例外が発生したかどうかに関係なく、finallyブロックは常に実行されます。 ファイルやDB接続を閉じるなどの例外が発生した場合は、finallyブロックを使用してコードをクリーンアップします。 system.exit()などのステートメントがtryブロックに書き込まれると、プログラムが自動的に終了し、finallyブロックが実行されない場合があるため、finallyブロックが常に実行されるとは言えません。 tryブロックの電源障
-
JavaでNullPointerExceptionを解決する方法は?
NullPointerException アプリケーションコード、他の参照されているAPI、またはミドルウェアが次の条件に遭遇したときにJVMによってスローされるランタイム例外です nullオブジェクトのインスタンスメソッドを呼び出そうとしています。 nullオブジェクトの特定のフィールドにアクセスまたは変更しようとしています。 nullオブジェクトの長さを配列として取得しようとしています。 NullPointerExceptionを解決する手順: java.lang.NullPointerExceptionを確認します トレースをスタックし、例外がトリガーされる場所を特定します
-
Javaのアプリケーションとアプレットの違いは何ですか?
Javaプログラムは、アプリケーションとアプレットの2つのタイプに分類できます。 アプリケーション アプリケーションは、クライアント側またはサーバー側の仮想マシンのサポートで実行されるスタンドアロンのJavaプログラムです。 Javaアプリケーションは、コンピュータアーキテクチャに関係なく、Java互換の仮想マシンで実行する特定の機能を実行するように設計されています。 アプリケーションは、ユーザーまたは他のアプリケーションプログラムのいずれかに対して実行されます。 Javaアプリケーションの例には、データベースプログラム、開発ツール、ワードプロセッサ、テキストおよび画像編集プログラム、ス
-
SimpleDateFormatクラスを使用してJavaDateをフォーマットされた文字列に変換するにはどうすればよいですか?
Java SimpleDateFormatクラスは、Java文字列から日付への変換または日付から文字列への変換を提供します。 例 import java.util.Date; import java.text.SimpleDateFormat; import java.util.Calendar; public class SimpleDateFormatTest { public static void main(String[] args) { // get today's date &
-
JSliderでエクステントを設定するJavaプログラム
スライダーの範囲を設定するには、setExtent()メソッドを使用します。ノブがカバーする範囲のサイズを設定します- JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 70); slider.setMinorTickSpacing(5); slider.setMajorTickSpacing(20); slider.setPaintTicks(true); slider.setPaintLabels(true); slider.setExtent(20); 以下は、JSliderで範囲を設定する例です- 例 package m
-
Javaのアクセス修飾子と非アクセス修飾子の違いは何ですか?
アクセス修飾子 アクセス修飾子は、アクセスレベルを制御するためにクラス、変数、メソッド、およびコンストラクターで使用されるキーワードです。 Javaには4つのアクセス修飾子があります。 デフォルト アクセス修飾子が指定されていない場合、javaはデフォルトの修飾子として扱われます。デフォルトの修飾子の範囲は、パッケージ内に制限されています。 公開 public修飾子の範囲は、パッケージのどこにでも、さらにはパッケージの外にもアクセスすることです。 プライベート プライベート修飾子のスコープは、クラス自体の内部にアクセスすることです。 保護 保護された修飾子の範囲は、パッケージとす
-
JavaでSwingコンポーネントが軽量であるのに、なぜAWTコンポーネントは重量があるのですか?
AWT Abstract Window ToolKitの略で、JavaGUIプログラミングをサポートします。これは、スタンドアロンJavaアプリケーション/アプレット用のポータブルGUIライブラリです。 AWTは、 Java Swing を使用しながら、アプリケーションとネイティブGUI間の接続を提供します。 AWTテクノロジーに基づいて構築された一連のGUIコンポーネントを実装し、プラグイン可能なルックアンドフィールを提供できます。 。 Java Swingは、完全にJavaプログラミング言語で実装されています。 まず、重量が大きいということは、コードの読み込みに比較的時間がかかり、より多
-
Javaのダブルバッファリングとは何ですか?
ダブルバッファリングは、グラフィックを画面外の画像バッファに描画し、バッファの内容を一度に画面にコピーするプロセスです。 複雑なグラフィックの場合、ダブルバッファリングを使用すると、ちらつきの問題を減らすことができます。 Java Swingは、そのすべてのコンポーネントのダブルバッファリングを自動的にサポートします。 ダブルバッファリングはメモリを大量に消費します。その使用は、非常に頻繁に再描画されるコンポーネント、または表示するグラフィックが特に複雑なコンポーネントに対してのみ正当化されます。 コンテナがダブルバッファリングを使用している場合、コンテナのオフスクリーンバッファを共有してい