Java 面接の質問 Java での例外処理

Java例外クラス階層図 Javaでは、すべての例外に共通の祖先である java.langThrowableクラスがあります。投擲可能: 2 つの重みがあります

重要なサブクラス: Exception (例外)Error (エラー)。どちらも Java例外処理の重要なサブクラスであり、それぞれに大きな

量子クラス。

エラー(エラー) :プログラムが処理できないエラーであり、アプリケーションの実行に重大な問題があることを示します。ほとんどのエラーはコード ライターに関連しています

この行の動作は関係ありませんが、コードの実行中に JVM ( Java仮想マシン)に問題があることを示しています。たとえば、Java仮想マシンが正しく実行されない

( Virtual MachineError )、操作を続行するために必要なメモリー・リソースが JVMにない場合に発生します

OutOfMemoryError これらの例外が発生すると、Java仮想マシン ( JVM ) は通常、終了するスレッドを選択します。

これらのエラーは、仮想マシン自体で、または仮想マシンがアプリケーションを実行しようとしたときに障害が発生したことを示します ( Java仮想マシンの実行エラーなど)。

( Virtual MachineError )、クラス定義エラー ( NoClassDefFoundError ) など。これらのエラーはチェックできません。

それらは、アプリケーション プログラムの制御および処理能力の範囲外にあり、プログラムの実行中に発生することはほとんど許可されていません。デザイン的に妥当

アプリケーションに関する限り、エラーが発生したとしても、それによって引き起こされる異常な状態を本質的に処理しようとするべきではありません。 Javaでは、間違っている

 Errorのサブクラスによって誤って記述されています。

例外(Exception) :プログラム自体が扱える例外ですExceptionクラスには重要なサブクラスがあります

ランタイム例外 JavaによってRuntimeException

NullPointerException (この例外は、アクセスする変数がオブジェクトを参照していない場合にスローされます)、

ArithmeticException (整数を 0ときにスローされる算術演算例外

ArrayIndexOutOfBoundsException (範囲外の添字例外)。

注: 例外とエラーの違い: 例外はプログラム自体で処理できますが、エラーは処理できません。

Throwableクラスの共通メソッド

public string getMessage() :例外が発生したときに詳細情報を返します

public string toString() :例外が発生したときの簡単な説明を返します

public string getLocalizedMessage() :例外オブジェクトのローカライズされたメッセージを返します。 Throwableのサブクラスでオーバーライドする

このメソッドは、ローカリゼーション情報を要求できます。サブクラスがこのメソッドをオーバーライドしない場合、このメソッドによって返される情報は getMessage ()と同じです。

と同じ結果を返します

public void printStackTrace() :  Throwableオブジェクトによってカプセル化された例外情報をコンソールに出力する例外処理の概要

• tryブロック: 例外をキャッチするために使用されます。 catchがない場合は、その後に 0 個以上の catchブロックを続けることができます。

 ブロックの後には、 finallyブロックが続く必要があります

• catchブロック:  tryによってキャッチされた例外を処理するために使用されます。

• finallyブロック: 例外がキャッチされるか処理されるかに関係なく、finallyブロック内のステートメントが実行されます。

 tryブロックまたは catchブロックで returnステートメントが検出されるメソッドが戻る前に、finallyステートメント ブロックが実行されます。以下の4つのスペシャルで

この場合、finallyブロックは実行されません。

1. finally ステートメントブロックで例外が発生しました 。

2.前のコードでは、 System.exit()を使用してプログラムを終了しました。

3.プログラムが配置されているスレッドが終了します。

4.  CPU の電源をオフにします

Javaシリアライゼーションで一部のフィールドをシリアライズしたくない場合の対処方法

シリアル化したくない変数の場合は、 transientキーワードを使用して変更します。

transientキーワードの役割は、このキーワードで変更された変数がインスタンス内でシリアライズされるのを防ぐことです。オブジェクトがデシリアライズされると、

トランジェントによって変更された変数値は、永続化および復元されません。 transient は変数のみを変更でき、クラスやメソッドは変更できません。

キーボード入力によく使用される 2 つのメソッドを取得する

方法 1 : スキャナー経由

スキャナー入力 = new Scanner(System.in) ;

文字列 s = input.nextLine() ; input.close() ;

方法 2 :  BufferedReader経由

BufferedReader 入力 = 新しい BufferedReader(新しい InputStreamReader(System.in)) ;

文字列 s = input.readLine() ;

インターフェイスの継承と実装

コレクション クラスは Java.utilパッケージに格納されており、 set (セット)、リスト (リストに Queueが含まれる)、 マップ (マップ)の 3 つの主なタイプがあります

1. Collection : Collection は、コレクション List Set 、およびQueueの最も基本的なインターフェイスです。

2. イテレータ: イテレータ、イテレータを介してコレクション内のデータをトラバースできます

3. Map : 基本インターフェースマッピングテーブルのリスト

Java List は、非常に一般的に使用されるデータ型です。List は順序付けられた CollectionですJava Listには 3 つの実装クラスがあります。

ArrayList Vectorおよび LinkedList

ArrayList (配列)

ArrayListは最も一般的に使用される List実装クラスで、要素への高速ランダム アクセスを可能にする配列を介して内部的に実装されます。配列の欠如

ポイントは、各要素の間に間隔があいてはいけないということですが、配列のサイズが足りない場合は、記憶容量を増やす必要があり、配列に既に存在するデータをコピーする必要があります。

新しい収納スペースへ。 ArrayListの途中で要素を挿入または削除する場合、配列をコピー、移動、および置換する必要があります。

価格は比較的高いです。したがって、挿入と削除ではなく、ランダムな検索とトラバーサルに適しています。

Vector (配列実装、スレッド同期)

 ArrayListと同様に、 Vectorも配列を介して実装されます。違いは、スレッド同期をサポートすることです。つまり、1 つだけです。

複数のスレッドによる同時書き込みによる矛盾を避けるために、スレッドは Vectorを書き込むことができますが、同期にはコストがかかります。

 ArrayListにアクセスするよりも遅くなります

LinkList (リンクされたリスト)

LinkedList は、動的なデータの挿入と削除に非常に適した連結リスト構造でデータを格納します。また、ランダム アクセスとトラバーサルの速度は比較的遅くなります。他の

さらに、 Listインターフェイスで定義されていないメソッドも提供します。これらのメソッドは、スタック、キュー、および double として使用できるヘッダー要素とテール要素を操作するために特別に使用されます。

キューによって使用されます。

おすすめ

転載: blog.csdn.net/2301_76965813/article/details/130482557