Вопрос №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?
Рискну предположить что Java сама преобразовывает Объект Integer в примитив.
Действительно в лекции упустил этот момент, дело в том что + умеет складывать Integer и int (или на оборот), иначе бы в Java потерял бы смысл следующий пример:
Integer a = 2; int b = 3; int c = a + b; // + возвратит не String
Иными словами когда + встречает два типа которые он может сложить (не как строки а как числа) то он это делает. Другой вопрос какой тип он вернет, но в любом случае это будет не String. А вот если же хоть с одной из сторон у + стоит строка то и второе слагаемое он приведет у строке.
Добрый день. Не могу разобраться почему: if(chars == null || chars.length == 0) return 0; проходит тест, а if(chars.length == 0 || chars == null) return 0; падает с ошибкой NullPointer?
if(chars == null || chars.length == 0)
Сначала проверяется левая часть - chars == null
- и если она возращает true
то нет смысла вычислять правую - общий результат все равно будет true
, поэтому тут не происходит вычисления правой части chars.length == 0
Во втором случае у вас просто падает chars.length
с NPE
Спасибо. Теперь все понятно, даже обидно, что сам не дошел до ответа.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







