Рубрики
Без рубрики

Тест по строкам Java

Тест на строки Java для проверки ваших знаний о классе строк. Существует 21 вопрос, связанный со строковыми концепциями и фрагментами кода для тестирования строкового программирования.

Автор оригинала: Pankaj Kumar.

Добро пожаловать в Java String Quiz. Строка-один из самых важных классов в Java. Если вы занимались каким-либо программированием на java, вы, должно быть, использовали его. Строка очень популярна, когда дело доходит до вопросов для интервью на 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. Исключение во время выполнения C. Выводит “z” D. Выводит “Z”

Нажмите, чтобы открыть ответ

Правильный ответ: B Это вызовет исключение времени выполнения. Исключение в потоке "основной" java.lang.Исключение StringIndexOutOfBoundsException: Строковый индекс вне диапазона: 16 Это потому, что значение индекса начинается с 0.

2. Каковы будут результаты приведенных ниже утверждений?

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

A. Выводит “Str” B. Исключение во время выполнения C. Исключение времени выполнения IndexOutOfBoundsException D. Ошибка компиляции StringIndexOutOfBoundsException

Нажмите, чтобы открыть ответ

Правильный ответ: B Это вызовет исключение runtimeexception с сообщением об ошибке как Исключение в потоке "main" java.lang.Исключение StringIndexOutOfBoundsException: начало 5, конец 3, длина 16 . Это потому, что конечный индекс меньше начального индекса.

3. Выберите все допустимые методы класса String.

А. трим() Б. стажер() С. тоЛауэр() Д. сплит()

Нажмите, чтобы открыть ответ

Правильный ответ: A, B Допустимыми методами класса String являются – trim(), intern(), toLowerCase () и split(регулярное выражение строки).

4. Каковы будут результаты приведенных ниже утверждений?

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

A. истинная ложь B. истинная ложь C. ложная ложь D. ложная ложь

Нажмите, чтобы открыть ответ

Правильный ответ: A Когда мы используем двойные кавычки для создания строки, она сначала ищет строку с тем же значением в пуле строк. Если он найден, то он возвращает ссылку, иначе он создает новую строку в пуле, а затем возвращает ссылку. Однако, используя оператор new, мы заставляем класс String создавать новый объект String в пространстве кучи. Таким образом, s1 и s2 будут ссылаться на одну и ту же строку в пуле, тогда как s3 будет другим объектом вне пула, следовательно, вывод.

5. Какие из следующих утверждений верны для строки в случае переключателя?

A. Строка разрешена в случае переключения для версий Java 1.5 или выше. B. Строка разрешена в случае переключения для Java 1.7 или более поздних версий. C. Метод equals() используется реализацией случая переключения, поэтому добавьте проверку null, чтобы избежать исключения NullPointerException.

Нажмите, чтобы открыть ответ

Правильный ответ: B, C Подробнее читайте в строка регистра переключателя java

6. Какие из следующих утверждений верны для StringBuffer и StringBuilder?

A. StringBuilder не потокобезопасен. B. StringBuffer потокобезопасен, потому что его методы синхронизированы. C. StringBuilder был представлен в Java 1.4 D. StringBuffer и StringBuilder неизменяемы.

Нажмите, чтобы открыть ответ

Правильный ответ: Объект A, B StringBuffer потокобезопасен, поскольку его методы синхронизированы. Но в большинстве случаев это накладные расходы, поэтому StringBuilder был представлен в Java 1.5. StringBuilder не является потокобезопасным. StringBuffer и StringBuilder являются изменяемыми классами. Подробнее читайте в String vs StringBuffer vs StringBuilder .

7. Реализация строки следует какому из приведенных ниже шаблонов проектирования?

A. Модель конструкции с летным весом B. Заводская модель C. Одноэлементная модель D. Ничего из вышеперечисленного

Нажмите, чтобы открыть ответ

Правильный ответ: Реализация пула строк соответствует шаблону проектирования flyweight .

8. Каковы будут результаты приведенных ниже утверждений?

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

A. 0 B. истинно C. -3 D. ложно

Нажмите, чтобы открыть ответ

Правильный ответ: C Из документации по методу сравнения строк (): Метод сравнения сравнивает две строки лексикографически. Сравнение основано на значении Юникода каждого символа в строках. Последовательность символов, представленная этим строковым объектом, лексикографически сравнивается с последовательностью символов, представленной строкой аргумента. Результатом является отрицательное целое число, если этот строковый объект лексикографически предшествует строке аргумента. Результатом является положительное целое число, если этот строковый объект лексикографически следует за строкой аргумента. Результат равен нулю, если строки равны; compareTo возвращает 0 ровно тогда, когда метод equals(объект) вернет значение true. Это определение лексикографического упорядочения. Если две строки разные, то либо они имеют разные символы в некотором индексе, который является допустимым индексом для обеих строк, либо их длины различны, либо и то, и другое. Если они имеют разные символы в одной или нескольких позициях индекса, пусть k-наименьшее такое

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 B. abcabc C. ноль

Нажмите, чтобы открыть ответ

Правильный ответ: 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. ложно B. s1 является:истинно C. s1 является:ложно D. истинно

Нажмите, чтобы открыть ответ

Правильный ответ: A Вывод данных операторов будет “ложным”, потому что в java + приоритет оператора больше, чем. Таким образом, данное выражение будет оценено как “s1 is:abc”, т. е. ложно.

11. Каковы будут результаты приведенных ниже утверждений?

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

A. Java3Quiz7 B. Java12Quiz7 C. Java12Quiz34 D. Java3Quiz34

Нажмите, чтобы открыть ответ

Правильный ответ: B Прежде всего, выполняется выражение в скобках. Тогда это все операторы+, поэтому они выполняются слева направо. Мы получаем строку с каждой конкатенацией, следовательно, вывод получается, как показано ниже. “Java”+1+2+”Викторина”+””+(3+4) = “Ява”+1+2+”Викторина”+””+7 = “Java1″+2+”Викторина”+””+7 = “Java12″+”Викторина”+””+7 = “Java12Quiz”+””+7 = “Java12Quiz”+7 = “Java12Quiz7”

12. Сколько строковых объектов создано в приведенных ниже операторах?

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

A. 1 B. 2 C. 3 D. 4

Нажмите, чтобы открыть ответ

Правильный ответ: 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. ложь B. ложь C. истина D. истина

Нажмите, чтобы открыть ответ

Правильный ответ: A s1 находится в пуле строк, тогда как s2 создается в памяти кучи. Следовательно, вернет значение false. Когда вызывается метод s2.intern () , он проверяет, есть ли в пуле какая-либо строка со значением “abc”. Таким образом, он возвращает ссылку на s1. Таким образом, и s1, и s2 теперь указывают на один и тот же экземпляр строки. Следовательно.intern() вернет значение true.

14. Выберите все интерфейсы, реализованные классом String.

A. Сериализуемый B. Сопоставимый C. Констебль D. Клонируемый

Нажмите, чтобы открыть ответ

Правильный ответ: Строка A, B, C сериализуема и сопоставима. Констебль-это новый интерфейс из выпуска Java 12.

15. Выберите все причины, которые делают Строку идеальным кандидатом на ключ карты?

A. Строка является неизменяемой B. Строка является окончательной C. Строка правильно реализует метод хэш-кода() и равна() C. Хэш-код строки кэшируется

Нажмите, чтобы открыть ответ

Правильный ответ: A, B, C Правильная реализация метода hashCode() и equals() является обязательной для ключа карты. Поскольку строка является окончательной и неизменяемой, нет никаких шансов на повреждение ключевых данных.

16. Каков будет результат приведенного ниже фрагмента кода?

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

A. JAVA B.java C. истинно D. ложно

Нажмите, чтобы открыть ответ

Правильный ответ: A Он напечатает “JAVA”, потому что аргумент внутри метода println() является назначением. Таким образом, он будет рассматриваться как System.out.println("JAVA") .

17. Каковы будут результаты приведенных ниже утверждений?

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

A. ложь B. истина C. Исключение ClassCastException во время выполнения D. Ошибка во время компиляции

Нажмите, чтобы открыть ответ

Правильный ответ: A Он выведет значение false, поскольку s2 не относится к типу String. Если вы посмотрите на реализацию метода String equals (), вы найдете проверку с использованием оператора instanceof , чтобы проверить, является ли тип передаваемого объекта строковым? Если нет, то верните значение false.

18. Каков будет результат приведенного ниже фрагмента кода?

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

A. ложь B. истина C. ноль

Нажмите, чтобы открыть ответ

Правильный ответ: A Это сложный вопрос, и вывод будет ложным. Мы знаем, что метод intern() вернет ссылку на строковый объект из пула строк, но поскольку мы не назначили его обратно s2, в s2 нет никаких изменений. Следовательно, и s1, и s2 имеют разные ссылки. Если мы изменим код в строке 3 на s2.intern (); , то вывод будет истинным.

19. Выберите все классы, расширяющие класс String.

A. Строковый буферчик B. Строковый конструктор C. Строковый писатель D. Нет

Нажмите, чтобы открыть ответ

Правильный ответ: D Это сложный вопрос. Строка является конечным классом, поэтому вы не можете ее расширить.

20. Какие из следующих утверждений верны относительно строки в java?

A. Мы можем расширить класс строк, как это делает StringBuffer. B. Класс строк определен в пакете java.util. C. Строка неизменяема в Java. D. Строка потокобезопасна в Java. E. Строка чувствительна к регистру в Java.

Нажмите, чтобы открыть ответ

Правильный ответ: C, D, E Мы не можем расширить класс строк, потому что он окончательный. StringBuffer не расширяет его. Класс String определен в java.lang пакете.Строка является неизменяемой и, следовательно, потокобезопасной в java. Строка чувствительна к регистру, поэтому “abc” не равно “ABC”.

21. Каковы будут результаты приведенных ниже утверждений?

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

A. nullnull B. null, за которым следует исключение NullPointerException C. Исключение NullPointerException

Нажмите, чтобы открыть ответ

Правильный ответ: B Строка 2 выведет null , потому что print метод имеет проверку на нуль следующим образом: если (ы) {;} | Строка 3 вызовет исключение NullPointerException, потому что мы пытаемся вызвать функцию toString() при нуле.

Вывод

Я попытался осветить большинство важных моментов, связанных со строкой, в этом тесте. Если вы считаете, что была упущена какая-то интересная концепция, пожалуйста, дайте мне знать через комментарии. Если вам понравилась викторина, поделитесь ею и с другими.