ホームページ >Java >&#&はじめる >Java の古典的な面接質問集 (2)

Java の古典的な面接質問集 (2)

王林
王林転載
2020-07-07 16:19:121945ブラウズ

Java の古典的な面接質問集 (2)

1. int と Integer の違い

(関連チュートリアルの推奨事項: Java インタビューの質問)

1. Integer は Java の基本データ型である int のラッパー クラスです

2. 整数変数は使用する前にインスタンス化する必要がありますが、int 変数はインスタンス化する必要はありません

3 , Integer は実際にはオブジェクトへの参照です。新しい Integer が作成されると、そのオブジェクトを指すポインタが実際に生成されます。一方、int はデータ値

4 を直接保存します。デフォルト値Integer の値は null で、int のデフォルト値は 0

です。 値は 0

2. for each ループとは何ですか? ループできるデータ型は何ですか?

for ループの拡張バージョンは、記述が簡単で、エラーが発生しにくくなっています (配列が範囲外になることを心配する必要がないため)。最下層も次を使用して取得されます。イテレータですが、イテレータは jvm によって取得されます。取得する必要があるのはイテレータだけです。そのため、foreach ループ変数要素を使用するプロセスでは、コレクション オブジェクトを使用してコレクション内の要素の数を変更することはできません。 。

書き方:

for(String it : set){
    System.out.println("集合的元素:" + it);
}

欠点:

配列のインデックス操作やコレクションの追加・削除時にエラーが報告される場合があります。

(推奨学習:

java 入門プログラム )

3. オーバーロードと書き換えの違いは何ですか?

1. メソッドのオーバーロード

は、クラスがさまざまな種類のデータを統一された方法で処理するための手段です。パラメータの数や種類が異なる、同じ名前の関数が複数同時に存在します。オーバーロードは、クラス内のポリモーフィズムの現れで​​す。

Java におけるメソッドのオーバーロードとは、クラス内に複数のメソッドを作成できることを意味します。それらのメソッドは同じ名前ですが、異なるパラメータと異なる定義を持ちます。

メソッドを呼び出すとき、メソッドに渡される特定の数値とパラメーターの型を使用して、使用するメソッドが決定されます。これがポリモーフィズムです。

オーバーロードする場合、メソッド名は同じである必要がありますが、パラメーターの型と数は異なり、戻り値の型は同じでも異なっていても構いません。戻り値の型は、オーバーロードされた関数を区別するための基準として使用できません。

2. メソッドの書き換え

パラメータ リストはオーバーライドされたメソッドと完全に同じである必要があり、そうでない場合は書き換えとは言えず、オーバーロードと呼ばれます。

返される型は、オーバーライドされたメソッドの戻り型と常に同じである必要があります。そうでない場合、オーバーライドと呼ばれることはできず、オーバーロードと呼ばれます。

アクセス修飾子の制限は、オーバーライドされたメソッドのアクセス修飾子より大きくなければなりません (public>protected>default>private)

オーバーライドされたメソッドは、新しいチェック例外をスローしたり、次の値よりも大きくしてはなりませんオーバーライドされたメソッドは、より広範なチェック例外を宣言します。例: 親クラスのメソッドはチェック例外 IOException を宣言します。このメソッドをオーバーライドする場合、例外をスローすることはできません。スローできるのは IOException のサブクラスの例外のみであり、チェックされていない例外はスローできます。

注: コンストラクターは継承できないため、オーバーライドできませんが、オーバーロードすることはできます。

4. インターフェイスと抽象クラスの違いは何ですか?

1. 抽象クラスもインターフェイスも直接インスタンス化することはできません。インスタンス化する場合、抽象クラス変数はすべての抽象メソッドを実装するサブクラス オブジェクトを指し、インターフェイス変数はすべての抽象メソッドを実装するクラスを指す必要があります。すべてのインターフェイス メソッドを実装します。

2. 抽象クラスはサブクラスによって継承され、インターフェイスはクラスによって実装される必要があります。

3. インターフェイスはメソッド宣言にのみ使用できます。抽象クラスはメソッド宣言とメソッド実装に使用できます。

4. インターフェイスで定義された変数は、パブリック静的定数のみにすることができます。抽象クラスは通常の変数です。

5. 抽象クラス内のすべての抽象メソッドは、サブクラスによって実装する必要があります。サブクラスが親クラスのすべての抽象メソッドを実装できない場合、サブクラスは抽象クラスのみにすることができます。同様に、クラスがインターフェイスを実装する場合、すべてのインターフェイス メソッドを実装できない場合、そのクラスは抽象クラスのみになります。

6. 抽象メソッドは宣言のみ可能であり、実装はできません。インターフェイスは設計の結果であり、抽象クラスは再構築の結果です。

7. 抽象クラスには抽象メソッドは必要ありません。

8. クラスに抽象メソッドがある場合、そのクラスは抽象クラスのみになります

9. 抽象メソッドは実装する必要があるため、静的またはプライベートにすることはできません。

10. インターフェイスはインターフェイスや複数のインターフェイスを継承できますが、クラスは単一のルートからのみ継承できます。

クラスの多重継承が許可されない主な理由は、A が B と C を同時に継承し、b と c が同時に D メソッドを持っている場合、A はどちらを継承するかをどのように決定するかということです。継承しますか?

しかし、インターフェイスにはそのような問題はなく、インターフェイスはすべて抽象メソッドであり、誰が継承するかは問題ではないため、インターフェイスは複数のインターフェイスを継承できます。

(ビデオ チュートリアルの推奨:

java ビデオ チュートリアル)

5.final、finally、finalizeの違い

final : Java のキーワードと修飾子。

A) クラスがfinalと宣言された場合、そのクラスは新しいサブクラスを派生できず、親クラスとして継承できないことを意味します。したがって、クラスをabstractとfinalを同時に宣言することはできません。 ######B) 変数またはメソッドを Final として宣言すると、それらが使用中に変更されないことを保証できます。 ###

(1)被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

(2)被声明final的方法只能使用,不能重载。

finally:java的一种异常处理机制。

finally是对Java异常处理模型的最佳补充。finally结构使代码总会执行,而不管无异常发生。使用finally可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。

finalize,它是一个方法,属于java.lang.Object类,它的定义如下:

protected void finalize()throws Throwable{}

众所周知,finalize()方法是GC(garbagecollector运行机制的一部分,在此我们只说说finalize()方法的作用是什么呢?

finalize()方法是在GC清理它所从属的对象时被调用的,如果执行它的过程中抛出了无法捕获的异常(uncaughtexception,GC将终止对改对象的清理,并且该异常会被忽略;直到下一次GC开始清理这个对象时,它的finalize()会被再次调用。

以上がJava の古典的な面接質問集 (2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。