인기 프로그래밍 언어인 자바의 면접 질문도 많은 주목을 받았습니다. 세 가지 전형적인 Java 면접 질문과 답변을 살펴보겠습니다.
1. 문자열은 어떻게 동일합니까?
Java에서 String은 특수 객체이므로 동등성에 특별한 주의가 필요합니다. 일반적으로 문자열 동등성을 판단하는 방법에는 두 가지가 있습니다.
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 메서드를 사용할 때 비교되는 것은 메모리 주소가 같은지 여부가 아니라 문자열의 값이 같은지 여부라는 점에 유의해야 합니다.
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 키워드의 기능을 따로 설명해보자.
클래스를 final로 수정하면 해당 클래스를 상속받을 수 없다는 의미입니다. 예를 들면 다음과 같습니다.
public final class MyClass{ //... }
메서드가 final로 수정되면 이 메서드는 하위 클래스에 의해 재정의될 수 없음을 의미합니다. 예:
public class MyClass{ public final void myMethod(){ //... } }
final로 변수를 수정하면 변수를 다시 할당할 수 없다는 의미입니다. 예:
public class MyClass{ public final int MY_CONSTANT = 10; }
final 키워드로 수정된 변수는 선언 시 초기화되고 할당되어야 한다는 점에 유의해야 합니다.
3. Java의 다형성이란 무엇입니까?
Java에서 다형성은 동일한 인터페이스가 다른 개체를 구현할 수 있음을 의미합니다. 구체적으로 다형성에는 두 가지 형태가 있습니다.
컴파일 시간 다형성은 상위 클래스 유형에 대한 참조를 통해 하위 클래스 유형의 객체를 호출하는 방법을 나타냅니다. 예:
Parent parent = new Child(); parent.myMethod();
이 예에서 parent는 상위 클래스 유형의 참조이지만 하위 클래스 유형의 객체에서 myMethod 메서드를 호출합니다.
컴파일 시간 다형성은 상위 클래스와 상위 클래스의 메서드만 호출할 수 있지만 하위 클래스에 고유한 메서드는 호출할 수 없다는 점에 유의해야 합니다.
런타임 다형성은 프로그램 실행 중에 실제 객체의 유형에 따라 해당 메소드를 호출하는 것을 말합니다. 예:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!