String и null на собеседовании по Java


На собеседовании (экзамене) по основам языка Java вам могут задать такой вопрос: что выведет программа ниже?

package ru.upread.string.test;
 
public class TestString {
 
    public static void main(String[] args) {
 
        String str1 = null;
        str1 = str1 + " UpRead";
        System.out.println(str1);
    }
}
Ответ

null UpRead
Объяснение ответа

  • Изначально, строка str1 инициализируется null
  • На следующем шаге на линии 8 происходит конкатенация строк с помощью оператора “+”
  • Итак, теперь будет интересно посмотреть, какой будет точный вывод
  • Немало экзаменуемых считают, что программа выведет только UpRead, без null
  • Но на печать после конкатенации выводится "null UpRead"
  • Дело в том, что здесь мы работаем со ссылками, а если ссылка равна null, то она преобразуется в строку "null".
Если быть более точным, то в документации по Java для метода String.valueOf(Object) написано следующее: если аргумент имеет значение null, то возвращается строка, равная "null"; в противном случае возвращается значение obj.toString().

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, задачи, java, интересное в программировании




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 9. Определение и создание переменных PHP
Интересные книги про смерть
Лабиринты Java, часть 2: класс Waypoint