Добро пожаловать на нашу викторину по типу 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».