>  기사  >  Java  >  Java 인터뷰 질문: 세 가지 고전적인 질문에 대한 솔루션

Java 인터뷰 질문: 세 가지 고전적인 질문에 대한 솔루션

PHPz
PHPz원래의
2023-06-15 20:43:291047검색

인기 프로그래밍 언어인 자바의 면접 질문도 많은 주목을 받았습니다. 세 가지 전형적인 Java 면접 질문과 답변을 살펴보겠습니다.

1. 문자열은 어떻게 동일합니까?

Java에서 String은 특수 객체이므로 동등성에 특별한 주의가 필요합니다. 일반적으로 문자열 동등성을 판단하는 방법에는 두 가지가 있습니다.

  1. equals 메소드 사용

Java에서는 equals 메소드를 사용하여 두 String 객체가 동일한지 확인할 수 있습니다. 이 메서드는 두 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에서 == 연산자를 사용하여 두 개의 String 객체가 동일한지 확인할 수도 있습니다. 그러나 == 연산자를 사용하여 두 객체를 비교할 때 비교 대상은 문자열 내용이 동일한지 여부가 아니라 두 객체의 메모리 주소가 동일한지 여부입니다.

예:

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

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

출력 결과는 다음과 같습니다. str1과 str2 주소는 동일합니다.

문자열 개체를 할당할 때 Java의 문자열 풀은 자동으로 새 문자열 개체를 생성하므로 == 연산자를 사용하여 문자열을 비교할 때 특별한 주의가 필요합니다.

2. Java에서 Final이란 무엇입니까?

Java에서는 final 키워드를 사용하여 클래스, 메소드, 변수를 수정할 수 있습니다. final 키워드의 기능을 따로 설명해보자.

  1. Final 수정 클래스

클래스를 final로 수정하면 해당 클래스를 상속받을 수 없다는 의미입니다. 예를 들면 다음과 같습니다.

public final class MyClass{
    //...
}
  1. final Modified method

메서드가 final로 수정되면 이 메서드는 하위 클래스에 의해 재정의될 수 없음을 의미합니다. 예:

public class MyClass{
    public final void myMethod(){
        //...
    }
}
  1. final Modified Variable

final로 변수를 수정하면 변수를 다시 할당할 수 없다는 의미입니다. 예:

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

final 키워드로 수정된 변수는 선언 시 초기화되고 할당되어야 한다는 점에 유의해야 합니다.

3. Java의 다형성이란 무엇입니까?

Java에서 다형성은 동일한 인터페이스가 다른 개체를 구현할 수 있음을 의미합니다. 구체적으로 다형성에는 두 가지 형태가 있습니다.

  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 유형의 참조이지만 Dog 유형의 객체를 가리키므로 makeSound 메소드가 호출되면 실제로 Dog 유형 객체의 makeSound 메소드가 호출되고, 출력 결과도 "woof woof woof"입니다.

런타임 다형성은 런타임에 호출되는 메서드만 결정할 수 있으므로 런타임 오류가 발생할 수 있다는 점에 유의해야 합니다.

결론적으로 Java의 문자열 동등성 판단, 최종 키워드 및 다형성은 인터뷰에서 자주 묻는 질문입니다. 프로그래머는 이러한 질문에 대한 심층적인 이해와 숙달이 필요합니다.

위 내용은 Java 인터뷰 질문: 세 가지 고전적인 질문에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.