<style>.lazy{display:none}</style>Викторина по строкам в Java

Викторина по строкам в Java

Ответьте на вопросы нашей викторины, чтобы проверить свои знания по строкам на языке программирования Java.

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;
        }
    }
}

а) Эта программа приводит к ошибке компилятора в утверждении #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. Выберите все классы, которые наследуются от класса String 

a) StringBuffer
b) StringBuilder
c) StringWriter
d) None

Ответ:
d) None

Объяснение:
String – это final класс, поэтому от него нельзя наследоваться.

6. Что выведет программа ниже?

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

Объяснение:
В Java метод intern() вернет ссылку на объект String из пула строк. Если мы присваиваем результат метода intern() переменной s2, то это приводит к тому, что s1 и s2 теперь указывают на один и тот же объект.

7. Что выведет программа?

public class Test {

    public static void main(String[] args) {
        String s1 = "abc";
        StringBuffer s2 = new StringBuffer(s1);
        System.out.println(s1.equals(s2));
    }
}

а) false
b) true
c) ClassCastException во время выполнения
d) Compile-time error

Ответ:
a) false

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

8. Каков результат выполнения следующего кода? 

String s1 = "Java";
String s2 = "Java";
StringBuilder sb1 = new StringBuilder();
sb1.append("Ja").append("va");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(sb1.toString() == s1);
System.out.println(sb1.toString().equals(s1));

A. true выводится ровно один раз.
B. true выводится ровно два раза.
C. true выводится ровно три раза.
D. true выводится ровно четыре раза.
E. Код не компилируется.

Ответ:
C. true выводится ровно три раза.

Объяснение:
Строковые литералы извлекаются из пула строк. Это означает, что s1 и s2 ссылаются на один и тот же объект и равны между собой. Поэтому первые два вывода дают true. Третий вывод дает false, потому что метод toString()создает новую строку, а не берет ее из пула строк. Последний оператор печати снова выводит true, потому что equals() сравнивает содержимое объектов String.

9. В чем разница между StringBuilder и StringBuffer в Java? 

а) StringBuilder является mutable, а StringBuffer – immutable.
b) StringBuilder не является потокобезопасным, а StringBuffer является.
c) StringBuilder синхронизирован, а StringBuffer не синхронизирован.
d) Нет разницы; их можно использовать взаимозаменяемо.

Ответ:
b) StringBuilder не является потокобезопасным, а StringBuffer является.

10. Что происходит при объединении двух объектов типа данных String с помощью оператора + в Java?

a) Создается новый объект типа данных String.
b) Первый объект изменяется.
c) Изменяется второй объект.
d) Исходные объекты остаются неизменными.

Ответ:
a) Создается новый объект типа данных String.

Объяснение:

В Java строки являются неизменяемыми объектами. Это означает, что их значения не могут быть изменены после создания. Когда мы используем оператор + для объединения строк, Java создает новый объект String для хранения результата конкатенации. В этом новом объекте содержится комбинация символов из первой и второй строки.

11. Что выдает следующий фрагмент кода? 

String str = "Hello";
str += " World!";
System.out.println(str.length());

a) 5
b) 11
c) 12
d) Compile-time error

Ответ:
c) 12

Объяснение:
Когда “Hello” конкатенируется с ” World!”, образуется новая строка “Hello World!”. Длина этой строки равна 12 символам, поэтому выведется значение 12.

12. Что выдает следующий фрагмент кода?

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) Compile-time-error

Ответ:
a) Java

Объяснение:
Метод concat() возвращает новую строку, полученную в результате конкатенации указанной строки с исходной строкой. Однако в этом коде результат concat() не присваивается обратно переменной str. Поэтому исходная строка “Java” остается неизменной, и на выходе получается “Java”.

13. Какой из следующих методов используется для сравнения двух строк на равенство в Java? 

a) equals()
b) compareTo()
c) contains()
d) concat()

Ответ:
a) equals()

Объяснение:
Метод equals() используется для сравнения двух строк на равенство в Java. Он возвращает true, если две строки содержат одинаковую последовательность символов, и false в противном случае.

14. Какой метод используется для преобразования строки в верхний регистр в Java? 

a) toLowerCase()
b) toUpperCase()
c) trim()
d) replace()

Ответ:
b) toUpperCase()

Объяснение:
Метод toUpperCase() используется для преобразования строки в верхний регистр в Java. Он возвращает новую строку со всеми символами, преобразованными в заглавные буквы.

15. Каким будет вывод следующего кода?

public class Main{
     public static void main(String []args){
        String str1 = "Java";
        String str2 = "Java";
        String str3 = new String("Java");

        System.out.println(str1.equals(str2) && str1.equals(str3));
     }
}

A) true
B) false
C) Compile error
D) Runtime error

Ответ:
A) true

Объяснение:
В этом коде str1 и str2 ссылаются на один и тот же строковый литерал “Java”. Поэтому str1.equals(str2) возвращает true. Метод equals() сравнивает фактическое содержимое строк.

Перевод статьи «Java String Quiz – Multiple Choice Questions».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *