웹사이트 검색

자바 문자열 퀴즈


Java 문자열 퀴즈에 오신 것을 환영합니다. 문자열은 Java에서 가장 중요한 클래스 중 하나입니다. Java로 프로그래밍을 했다면 사용해본 적이 있을 것입니다.

문자열은 자바 인터뷰 질문이나 퀴즈와 관련하여 매우 인기가 있습니다. 그래서 여러분이 시도해야 할 훌륭하고 까다로운 자바 문자열 퀴즈 질문을 모았습니다.

자바 문자열 퀴즈

이 퀴즈에는 21개의 질문이 있습니다. 15개 이상을 맞힐 수 있다면 자신이 문자열 개념에 정말 능숙하다고 생각하세요. 각 문항 뒤 "답변 공개\ 버튼을 클릭하시면 정답과 자세한 설명을 확인하실 수 있습니다.

문자열 퀴즈를 시작하고 행운을 빕니다.

1. 아래 진술의 결과는 무엇입니까?

String s = "Java String Quiz";
System.out.println(s.charAt(s.toUpperCase().length()));

A. "Z\를 int 90으로 변환하고 "90\을 출력합니다.

**정답: B

2. 아래 진술의 결과는 무엇입니까?

String s = "Java String Quiz";
System.out.println(s.substring(5,3));

A. \Str 출력

**정답: B

3. String 클래스의 유효한 메서드를 모두 선택합니다.

A. 트림()

정답: A, B

String 클래스의 유효한 메서드는 trim(), intern(), toLowerCase() 및 split(String regex)입니다.

4. 아래 진술의 결과는 무엇입니까?

String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");
System.out.print(s1 == s2);
System.out.print(s1 == s3);

A. 참거짓

**정답: A

그러나 new 연산자를 사용하여 String 클래스가 힙 공간에 새 String 객체를 생성하도록 강제합니다. 따라서 s1과 s2는 풀에서 동일한 문자열을 참조하는 반면 s3은 풀 외부의 다른 객체이므로 출력이 됩니다.

5. 다음 중 스위치 케이스의 문자열에 대해 참인 것은 무엇입니까?

A. Java 1.5 이상 버전에서는 스위치 케이스에 문자열을 사용할 수 있습니다.

정답: B, C

자바 스위치 케이스 문자열에서 자세히 알아보기

6. 다음 중 StringBuffer 및 StringBuilder에 대한 설명으로 옳은 것은 무엇입니까?

A. StringBuilder는 스레드로부터 안전하지 않습니다.

정답: A, B

StringBuffer 객체는 메서드가 동기화되기 때문에 스레드로부터 안전합니다. 그러나 대부분의 경우 오버헤드이므로 StringBuilder는 Java 1.5에서 도입되었습니다. StringBuilder는 스레드로부터 안전하지 않습니다. StringBuffer 및 StringBuilder는 변경 가능한 클래스입니다. String vs StringBuffer vs StringBuilder에서 자세히 알아보세요.

7. 문자열 구현은 다음 중 어떤 디자인 패턴을 따르나요?

A. 플라이웨이트 디자인 패턴

정답: A

스트링 풀 구현은 플라이웨이트 디자인 패턴을 따릅니다.

8. 아래 진술의 결과는 무엇입니까?

String s1 = "abc";
String s2 = "def";
System.out.println(s1.compareTo(s2));

A. 0

**정답: C

compareTo 메소드는 두 문자열을 사전순으로 비교합니다. 비교는 문자열에 있는 각 문자의 유니코드 값을 기반으로 합니다. 이 String 개체가 나타내는 문자 시퀀스는 사전순으로 인수 문자열이 나타내는 문자 시퀀스와 비교됩니다. 이 String 객체가 사전순으로 인수 문자열 앞에 오는 경우 결과는 음의 정수입니다. 이 String 개체가 사전순으로 인수 문자열 뒤에 오는 경우 결과는 양의 정수입니다. 문자열이 같으면 결과는 0입니다. compareTo는 equals(Object) 메서드가 true를 반환할 때 정확히 0을 반환합니다.

사전식 순서의 정의입니다. 두 문자열이 다른 경우 두 문자열에 대해 유효한 인덱스인 일부 인덱스에 다른 문자가 있거나 길이가 다르거나 둘 다입니다. 하나 이상의 인덱스 위치에 다른 문자가 있는 경우 k를 해당 인덱스 중 가장 작은 인덱스로 지정합니다. 그런 다음 < 연산자를 사용하여 결정된 대로 위치 k에 있는 문자의 값이 더 작은 문자열이 사전순으로 다른 문자열보다 앞에 옵니다. 이 경우 compareTo는 두 문자열의 k 위치에 있는 두 문자 값의 차를 반환합니다. 즉, 값:

this.charAt(k)-anotherString.charAt(k)

이 예에서는 "abc\가 "def\ 앞에 오므로 음의 정수가 반환됩니다. 그런 다음 문자가 다른 가장 낮은 인덱스는 0이고 ad는 -3과 같습니다.

9. 아래 프로그램의 출력은 무엇입니까?

public class Test {
	public static void main(String[] args) {
		String x = "abc";
		String y = "abc";
		x.concat(y);
		System.out.print(x);
	}
}

A. abc

정답: A

x.concat(y)는 새 문자열을 생성하지만 x에 할당되지 않으므로 x의 값은 변경되지 않습니다.

10. 아래 프로그램의 출력은 무엇입니까?

public class Test {
	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "abc";
		System.out.println("s1 == s2 is:" + s1 == s2);
	}
}

A. 거짓

정답: A

java + 연산자 우선 순위가 == 연산자보다 높기 때문에 주어진 명령문 출력은 "false\입니다. 따라서 주어진 표현식은 "s1 == s2 is:abc\ == "abc\ 즉 false로 평가됩니다.

11. 아래 진술의 결과는 무엇입니까?

String s = "Java"+1+2+"Quiz"+""+(3+4);
System.out.println(s);

A. 자바3퀴즈7

정답: B

먼저 대괄호 안의 표현식이 실행됩니다. 그런 다음 모두 + 연산자이므로 왼쪽에서 오른쪽으로 실행됩니다.

각 연결마다 문자열을 얻으므로 아래와 같이 출력이 생성됩니다.

\자바+1+2+\퀴즈+\+(3+4)

12. 아래 문장에서 생성된 String 객체는 몇 개입니까?

String s = "abc"; // statement 1
String s1 = new String("abcd"); // statement 2

A. 1

정답: C

문 1에서 문자열 풀에 "abc\가 생성됩니다.

문 2에서 먼저 "abcd\가 문자열 풀에 생성됩니다. 그런 다음 String new 연산자에 인수로 전달되고 다른 문자열이 힙 메모리에 생성됩니다.

따라서 총 3개의 문자열 객체가 생성됩니다.

13. 아래 진술의 결과는 무엇입니까?

String s1 = "abc";
String s2 = new String("abc");
System.out.print(s1==s2);
System.out.println(s1==s2.intern());

A. 거짓참

정답: A

s1은 문자열 풀에 있고 s2는 힙 메모리에 생성됩니다.

따라서 s1==s2는 false를 반환합니다.

s2.intern() 메서드가 호출되면 풀에 값이 "abc\인 문자열이 있는지 확인합니다. 따라서 s1의 참조를 반환합니다. 따라서 s1과 s2는 모두 이제 동일한 문자열 인스턴스.

따라서 s1==s2.intern()은 true를 반환합니다.

14. String 클래스에 의해 구현된 모든 인터페이스를 선택합니다.

A. 직렬화 가능

정답: A, B, C

문자열은 직렬화 가능하고 비교할 수 있습니다. Constable은 Java 12 릴리스의 새로운 인터페이스입니다.

15. String이 Map 키로 완벽한 후보가 되는 이유를 모두 선택하십시오.

A. 문자열은 변경할 수 없습니다

**정답: A, B, C

16. 아래 코드 조각의 출력은 무엇입니까?

String s1 = new String("java");
String s2 = new String("JAVA");
System.out.println(s1 = s2);

가. 자바

**정답: A

17. 아래 진술의 결과는 무엇입니까?

String s1 = "abc";
StringBuffer s2 = new StringBuffer(s1);
System.out.println(s1.equals(s2));

A. 거짓

정답: A

s2가 String 유형이 아니기 때문에 false를 인쇄합니다. String equals() 메서드 구현을 살펴보면 instanceof 연산자를 사용하여 전달된 개체의 유형이 String인지 확인하는 검사를 찾을 수 있습니다. 그렇지 않으면 false를 반환합니다.

18. 아래 코드 조각의 출력은 무엇입니까?

String s1 = "abc";
String s2 = new String("abc");
s2.intern();
System.out.println(s1 == s2);

A. 거짓

정답: A

까다로운 질문이며 결과는 거짓입니다. 우리는 intern() 메서드가 문자열 풀에서 String 개체 참조를 반환할 것이라는 것을 알고 있지만, s2에 다시 할당하지 않았기 때문에 s2에는 변경 사항이 없습니다. 따라서 s1과 s2는 서로 다른 참조를 갖습니다.

3행의 코드를 s2 = s2.intern();으로 변경하면 출력은 true가 됩니다.

19. String 클래스를 확장하는 모든 클래스를 선택합니다.

A. 스트링버퍼

**정답: D

20. 다음 중 Java의 문자열에 대한 설명으로 옳은 것은 무엇입니까?

A. StringBuffer처럼 String 클래스를 확장할 수 있습니다.

정답: C, D, E

String 클래스는 최종이기 때문에 확장할 수 없습니다. StringBuffer는 그것을 확장하지 않습니다. 문자열 클래스는 java.lang 패키지에서 정의됩니다. 문자열은 변경할 수 없으므로 Java에서 스레드로부터 안전합니다. 문자열은 대소문자를 구분하므로 "abc\는 "ABC\와 같지 않습니다.

21. 아래 진술의 결과는 무엇입니까?

String s1 = null;
System.out.print(s1); // line 2
System.out.print(s1.toString()); // line 3

A. 널널

정답: B

2행은 null을 인쇄합니다. print 메소드에 다음과 같은 null 검사가 있기 때문입니다.

if(s == null) { s=null;}

3행은 null에 대해 toString() 함수를 호출하려고 하기 때문에 NullPointerException을 발생시킵니다.

결론

이 퀴즈에서 String에 대한 대부분의 중요한 사항을 다루려고 노력했습니다. 재미있는 개념이 빠진 것 같다면 댓글로 알려주세요. 퀴즈가 마음에 들면 다른 사람과도 공유하세요.