JAVAインタビューの質問の最新コレクション(6)

異常な

74.スローとスローの違いは?

Throwsは、メソッドによってスローされる可能性のあるすべての例外情報を宣言するために使用されます。Throwsは、例外を宣言することですが、それを処理しませんが、例外をアップロードします。また、throwは、スローされる特定のタイプの例外を指します。

75.ファイナル、ファイナル、ファイナライズの違いは何ですか?

  • Finalは、クラス、変数、およびメソッドを変更できます。変更されたクラスは、クラスを継承できないことを示し、変更されたメソッドは、メソッドをオーバーライドできないことを示し、変更された変数は、変数が定数であり、再割り当てできないことを示します。

  • finalは、通常、try-catchコードブロックで使用されます。例外を処理する場合、通常、finallyコードブロックでcodeメソッドを実行する必要があります。つまり、例外の有無に関係なく、コードブロックが実行されます。これは通常、いくつかのクローズドリソースコードを格納するために使用されます。

  • FinalizeはObjectクラスのメソッドに属するメソッドであり、Objectクラスはすべてのクラスの親クラスです。このメソッドは通常、ガベージコレクターによって呼び出されます。システムのgc()メソッドを呼び出すと、ガベージコレクターはfinalize()、recycletrashを呼び出します。

76. try-catch-finallyのどの部分を省略できますか?

回答:キャッチは省略できます

理由:

より厳密なステートメントは、実際には次のとおりです。tryは実行時例外の処理にのみ適しており、try + catchは実行時例外+通常の例外の処理に適しています。つまり、catch処理なしで通常の例外を処理しようとするだけの場合、コンパイルはパスしません。コンパイラには、通常の例外をキャッチすることを選択した場合、さらに処理するために宣言を表示するためにcatchを使用する必要があるという厳格なルールがあるためです。 。実行時例外はコンパイル時にそのように指定されていないため、catchを省略して、catchコンパイラーを追加できます。

理論的には、コンパイラーは見た目が良くないコードを調べ、潜在的な問題がある可能性があると感じます。したがって、すべてのコードにtryを追加しても、コードは通常の操作に基づく単なるスキンのレイヤーです。実行時。ただし、コードにtryを追加すると、このコードを上向きにスローするのではなくスローする可能性があるという例外をキャッチするというコンパイラーへの明示的な約束に相当します。それが通常の例外である場合、コンパイラーはそれをさらに処理するためにcatchでキャッチする必要があります。実行時に異常である場合は、キャッチしてから破棄し、+ finalで処理するか、さらに処理するためにcatchを追加します。

最後に追加するのは、例外がキャッチされたかどうかに関係なく実行する必要があるのは「終了」処理です。

77. try-catch-finallyで、catchが返された場合、最終的に実行されますか?

回答:実行され、戻る前に実行されます。

コード例1:

/*
 * java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 {
    
    
    public static void main(String[] args) {
    
    
        System.out.println(getInt());
    }

    public static int getInt() {
    
    
        int a = 10;
        try {
    
    
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
    
    
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
        } finally {
    
    
            a = 40;
        }

//      return a;
    }
}

実施結果:30

コード例2:

package com.java_02;

/*
 * java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 {
    
    
    public static void main(String[] args) {
    
    
        System.out.println(getInt());
    }

    public static int getInt() {
    
    
        int a = 10;
        try {
    
    
            System.out.println(a / 0);
            a = 20;
        } catch (ArithmeticException e) {
    
    
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
        } finally {
    
    
            a = 40;
            return a; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40
        }

//      return a;
    }
}

実施結果:40

78.一般的な例外クラスは何ですか?

  • NullPointerException:この例外は、アプリケーションがnullオブジェクトにアクセスしようとしたときにスローされます。

  • SQLException:データベースアクセスエラーまたはその他のエラー情報に関する例外を提供します。

  • IndexOutOfBoundsException:並べ替えインデックス(たとえば、配列、文​​字列、またはベクトルの並べ替え)が範囲外であることを示す場合にスローされます。

  • NumberFormatException:この例外は、アプリケーションが文字列を数値型に変換しようとしたが、文字列を適切な形式に変換できない場合にスローされます。

  • FileNotFoundException:この例外は、指定されたパス名で示されたファイルを開こうとして失敗した場合にスローされます。

  • IOException:特定のI / O例外が発生すると、この例外がスローされます。このクラスは、I / O操作の失敗または中断によって生成される例外の一般的なクラスです。

  • ClassCastException:この例外は、インスタンスではないサブクラスにオブジェクトをキャストしようとしたときにスローされます。

  • ArrayStoreException:間違ったタイプのオブジェクトをオブジェクト配列に格納しようとしたときにスローされる例外。

  • IllegalArgumentException:スローされた例外は、不正または不正なパラメーターがメソッドに渡されたことを示します。

  • ArithmeticException:この例外は、異常な動作条件が発生した場合にスローされます。たとえば、整数が「ゼロ除算」の場合、このクラスのインスタンスがスローされます。

  • NegativeArraySizeException:アプリケーションが負のサイズの配列を作成しようとすると、この例外がスローされます。

  • NoSuchMethodException:この例外は、特定のメソッドが見つからない場合にスローされます。

  • SecurityException:セキュリティマネージャーによってスローされた例外で、セキュリティ違反があることを示します。

  • UnsupportedOperationException:この例外は、要求された操作がサポートされていない場合にスローされます。

  • RuntimeExceptionRuntimeException:Java仮想マシンの通常の操作中にスローされる可能性のある例外のスーパークラスです。

おすすめ

転載: blog.csdn.net/weixin_42120561/article/details/114701030