Когда вы связываете null
оператором +
, он всегда преобразуется в строку «null». Это объясняет первый выход Hellonull.
Функция CONCAT выглядит внутренне так:
public String concat(String s) {
int i = s.length();
if (i == 0) {
return this;
} else {
char ac[] = new char[count + i];
getChars(0, count, ac, 0);
s.getChars(0, i, ac, count);
return new String(0, count + i, ac);
}
}
Источник: String concatenation: concat() vs "+" operator
Как вы видите, он вызывает s.length(), который в вашем случае означает null.length(); который вызывает исключение NullPointerException для вашего оператора String abc= "Hello".concat(null);
.
Edit: Я просто декомпилированы свою собственную функцию String.Concat (String s) и его реализация выглядит немного по-другому, но причина NullPointerException остается тем же самым.