Вопрос №735 от пользователя Михаил Соколовский в уроке «Модуль 6. Урок 3. Преобразование строк в числа и обратно.», курс «Введение в Java»

Михаил Соколовский

Почему в данном примере вначале происходит сложение двух целых чисел (int)?

public class ValueDemo {
    public static void main(String args[]) {
        final String str = "1234";
        int num;
        Integer i;

        num = Integer.parseInt(str);
        i = Integer.valueOf(str);
        System.out.println(i + num + "ab" + str);
    }
}

Из лекции следует, что i - объект типа Integer, а num - примитив типа int. Почему при их сложении получается 2468, а не 12341234?

5 0

Николай Артамонов

Рискну предположить что Java сама преобразовывает Объект Integer в примитив.

0

Вячеслав Ковалевский

Действительно в лекции упустил этот момент, дело в том что + умеет складывать Integer и int (или на оборот), иначе бы в Java потерял бы смысл следующий пример:

Integer a = 2; int b = 3; int c = a + b; // + возвратит не String

Иными словами когда + встречает два типа которые он может сложить (не как строки а как числа) то он это делает. Другой вопрос какой тип он вернет, но в любом случае это будет не String. А вот если же хоть с одной из сторон у + стоит строка то и второе слагаемое он приведет у строке.

2

Алексей Мацишевский

Добрый день. Не могу разобраться почему: if(chars == null || chars.length == 0) return 0; проходит тест, а if(chars.length == 0 || chars == null) return 0; падает с ошибкой NullPointer?

0

Николай Артамонов

if(chars == null || chars.length == 0)

Сначала проверяется левая часть - chars == null - и если она возращает true то нет смысла вычислять правую - общий результат все равно будет true, поэтому тут не происходит вычисления правой части chars.length == 0

Во втором случае у вас просто падает chars.length с NPE

0

Алексей Мацишевский

Спасибо. Теперь все понятно, даже обидно, что сам не дошел до ответа.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев