Добро пожаловать на нашу викторину по типу String в Java! Строки являются неотъемлемой частью программирования на Java, и понимание того, как манипулировать строками и обрабатывать их, имеет решающее значение для разработки надежных приложений. В этой викторине мы проверим ваши знания о различных операциях со строками. Давайте начнем и посмотрим, насколько хорошо вы справитесь с этими вопросами!
Для начала вам следует попробовать эти фрагменты кода в Eclipse IDE и понять, как работает программа (впрочем, ко всем вопросам даны ответы с пояснениями). Подобные вопросы могут задать на собеседовании, так что готовьтесь.
Для компиляции кода используйте свою IDE или онлайн Java Compiler IDE или любой другой аналог.
Ищете работу Junior QA? Тогда вам в наш телеграм канал QA Вакансии. Каждую неделю 7 лучших вакансий с телеграм контактом HR компании.
1. Рассмотрите следующую программу:
public class Test { public static void main(String[] args) { String str = null; System.out.println(str.valueOf(10)); } }
Какое из следующих утверждений правильно описывает поведение этой программы?
a) Эта программа приведет к ошибке компилятора
b) Эта программа выведет NullPointerException
c) Эта программа выведет 10 в консоль
d) Эта программа выведет null в консоль
Ответ:
c) Эта программа выведет 10 в консоль
Объяснение:
Метод valueOf(int)
является статическим методом в классе String. Он возвращает строковое представление целочисленного значения, переданного в качестве его аргумента. Поскольку вызов статического метода не требует разыменования ссылочной переменной, на которой он вызывается, эта программа не вызывает исключение NullPointerException.
2. Рассмотрите следующую программу и спрогнозируйте ее вывод:
public class Test { public static void main(String[] args) { String s = new String("5"); System.out.println(1 + 10 + s + 1 + 10); } }
a) 11511
b) 1105110
c) 115110
d) 27
Ответ:
c) 115110
Объяснение:
Оператор конкатенации строк работает следующим образом: если оба операнда – числа, он выполняет сложение; в противном случае он конкатенирует аргументы, вызывая при необходимости метод toString()
. Оператор оценивает строку слева направо. Следовательно, выражение в программе имеет значение 115110.
3. Рассмотрите следующую программу и спрогнозируйте ее вывод:
public class Test { public static void main(String[] args) { String str = null; switch (str) { // #1 case "null": System.out.println("null string"); // #2 break; } } }public class Test { public static void main(String[] args) { String str = null; switch (str) { // #1 case "null": System.out.println("null string"); // #2 break; } } }
a) Эта программа приводит к ошибке компилятора в утверждении #1
b) Эта программа приводит к ошибке компилятора в утверждении #2
c) Эта программа приводит к выводу NullPointerException
d) Эта программа выводит следующее: null string
Ответ:
c) Эта программа приводит к выводу NullPointerException
Объяснение:
Если в оператор switch
передается значение null, это приводит к выводу NullPointerException.
4. Каков будет результат следующих утверждений?
public class Test { public static void main(String[] args) { String s1 = null; System.out.println(s1); //line 2 System.out.println(s1.toString()); //line 3 } }
a) null null
b) null NullPointerException
c) NullPointerException NullPointerException
d) None
Ответ:
b) null NullPointerException
Объяснение:
В строке 2 будет выведен null, потому что метод println()
имеет проверку на null, как показано ниже.
if (s == null) { s = "null"; }
5. Что выдаст эта программа?
public class Test { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); s2 = s2.intern(); System.out.println(s1 == s2); } }
a) false
b) true
c) None
Ответ:
b) true
Объяснение:
Мы знаем, что метод intern()
вернет ссылку на объект String из пула строк, поскольку мы присвоили его обратно s2
и теперь и s1
и s2
имеют одну и ту же ссылку. Это означает, что ссылки s1
и s2
указывают на один и тот же объект.
6. Каков будет результат следующих утверждений?
public class Test { public static void main(String[] args) { String s1 = "abc"; StringBuffer s2 = new StringBuffer(s1); System.out.println(s1.equals(s2)); } }
a) false
b) true
c) ClassCastException во время запуска
d) Ошибка времени компиляции
Ответ:
a) false
Объяснение:
Выведет false, потому что s2
не относится к типу String. Если вы посмотрите на реализацию метода equals
в классе String, то найдете проверку с помощью оператора instanceof
, который устанавливает, является ли тип передаваемого объекта строкой. Если нет, то возвращается false
.
7. Каков результат следующего фрагмента кода?
public class Main { public static void main(String[] args) { String str = "Hello"; str += " World!"; System.out.println(str.length()); } }
a) 5
b) 11
c) 12
d) Ошибка времени компиляции
Ответ:
c) 12
Объяснение:
Когда “Hello” конкатенируется с ” World!”, образуется новая строка “Hello World!”. Длина этой строки равна 12 символам, поэтому на выходе получается 12.
8. Каков результат следующего фрагмента кода?
public class Main { public static void main(String[] args) { String str = "Java"; str.concat(" Programming"); System.out.println(str); } }
a) Java
b) Java Programming
c) Programming
d) Ошибка времени компиляции
Ответ:
a) Java
Объяснение:
Метод concat()
возвращает новую строку, полученную в результате конкатенации указанной строки с исходной строкой. Однако в этом коде результат concat()
не присваивается обратно переменной str
. Поэтому исходная строка “Java” остается неизменной, и на выходе получается “Java”.
9. Что выдает следующий фрагмент кода?
public class Main { public static void main(String[] args) { String str = "Hello, World!"; System.out.println(str.indexOf("o")); } }
a) 4
b) 5
c) 7
d) -1
Ответ:
a) 4
Объяснение:
Метод indexOf()
возвращает индекс первого вхождения указанной подстроки в строку.
Заключение
Поздравляем вас с завершением викторины по типу String в Java! Эти вопросы проверили ваше понимание операций работы со строками, таких как конкатенация, определение длины, поиск символов, сравнение, извлечение подстроки и преобразование регистра. Освоив эти понятия, вы будете лучше подготовлены к эффективной работе со строками в программировании на Java.
Перевод статьи «Java String Quiz – String Tricky Coding Questions».