ホームページ  >  記事  >  Java  >  Java での面接の質問: 3 つの古典的な質問に対する解決策

Java での面接の質問: 3 つの古典的な質問に対する解決策

PHPz
PHPzオリジナル
2023-06-15 20:43:291041ブラウズ

人気のあるプログラミング言語として、Java の面接の質問も大きな注目を集めています。 Java の面接でよくある 3 つの質問とその回答を見てみましょう。

1. String が等しいかどうかはどのように判断されるのでしょうか?

Java では、String は特別なオブジェクトであるため、その等価性の判断にも特別な注意が必要です。一般に、文字列の同等性を判断するには 2 つの方法があります。

  1. equals メソッドを使用する

Java では、equals メソッドを使用して、2 つの String オブジェクトが等しいかどうかを判断できます。このメソッドは、2 つの String オブジェクトに含まれる文字列が同じかどうかを比較し、同じであれば true を返し、異なる場合には false を返します。

例:

String str1 = "Hello";
String str2 = "Hello";

if(str1.equals(str2)){
    System.out.println("str1和str2相等");
} else {
    System.out.println("str1和str2不相等");
}

出力結果は次のようになります: str1 と str2 は等しい。

equals メソッドを使用して文字列が等しいかどうかを比較する場合、比較されるのはメモリ アドレスが等しいかどうかではなく、文字列の値が等しいかどうかであることに注意してください。

  1. == 演算子を使用する

Java では == 演算子を使用して、2 つの String オブジェクトが等しいかどうかを判断することもできます。ただし、== 演算子を使用して 2 つのオブジェクトを比較する場合、比較されるのは 2 つのオブジェクトのメモリ アドレスが等しいかどうかであり、文字列の内容が等しいかどうかではないことに注意してください。

例:

String str1 = "Hello";
String str2 = "Hello";

if(str1 == str2){
    System.out.println("str1和str2地址相等");
} else {
    System.out.println("str1和str2地址不相等");
}

出力結果は次のようになります: str1 アドレスと str2 アドレスは等しい。

String オブジェクトを割り当てる場合、Java の文字列プールは新しい文字列オブジェクトを自動的に作成するため、== 演算子を使用して文字列を比較する場合は特別な注意を払う必要があることに注意してください。

2. Java の Final とは何ですか?

Java では、final キーワードを使用してクラス、メソッド、変数を変更できます。 Final キーワードの機能を個別に説明しましょう。

  1. 最終変更クラス

クラスがfinalで変更された場合、そのクラスは継承できないことを意味します。例:

public final class MyClass{
    //...
}
  1. final 変更メソッド

メソッドが Final で変更されている場合、このメソッドはサブクラスによってオーバーライドできないことを意味します。例:

public class MyClass{
    public final void myMethod(){
        //...
    }
}
  1. final 変更変数

変数が Final で変更された場合、その変数は再割り当てできないことを意味します。例:

public class MyClass{
    public final int MY_CONSTANT = 10;
}

final キーワードによって変更された変数は、宣言時に初期化して割り当てる必要があることに注意してください。

3. Java のポリモーフィズムとは何ですか?

Java では、ポリモーフィズムは、同じインターフェイスが異なるオブジェクトを実装できることを意味します。具体的には、ポリモーフィズムには 2 つの形式があります。

  1. コンパイル時ポリモーフィズム

コンパイル時ポリモーフィズムとは、親クラス型への参照を通じてサブクラスを呼び出すことを指します。タイプのオブジェクト。例:

Parent parent = new Child();
parent.myMethod();

この例では、parent は親クラス型の参照ですが、サブクラス型のオブジェクト内の myMethod メソッドを呼び出します。

コンパイル時のポリモーフィズムでは、親クラスと親クラス内のメソッドのみを呼び出すことができ、サブクラスに固有のメソッドを呼び出すことはできないことに注意してください。

  1. 実行時ポリモーフィズム

実行時ポリモーフィズムとは、プログラムの実行中に実際のオブジェクトの型に応じて対応するメソッドを呼び出すことを指します。例:

public class MyClass{
    public static void main(String[] args){
        Animal animal = new Dog();
        animal.makeSound();
    }
}

class Animal{
    public void makeSound(){
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal{
    public void makeSound(){
        System.out.println("汪汪汪");
    }
}

この例では、animal は Animal タイプの参照ですが、Dog タイプのオブジェクトを指しているため、makeSound メソッドが呼び出されるとき、Dog タイプのオブジェクトの makeSound メソッドは実際にはと呼ばれ、出力結果も「ワンワンワン」になります。

実行時ポリモーフィズムは実行時に呼び出されるメソッドしか決定できないため、実行時エラーが発生する可能性があることに注意してください。

まとめると、Java における String の等価性判定、final キーワード、ポリモーフィズムは面接でよく聞かれる質問であり、プログラマーはこれらの質問を深く理解し、習得する必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。