Я думаю, что проблема, о которой вы говорите, заключается в выводе, который вы получаете для строковой функции.
Что-то вроде:
Concatenation of string=[Ljava.lang.String;@6d06d69c
На линии
System.out.println("Concatenation of string="+ str);
Вы печатаете переменную "str", но "str" - это не строка, это массив, а массив - это объект. Итак, для того, чтобы быть напечатанным, функция .toString () вызывается неявно для "str". Проблема здесь в том, что метод Object.toString () печатает не содержимое массива, а тип объекта и ссылку в памяти.
Для печати содержимого массива будет работать следующее (требуется как минимум JDK8)
System.out.println("Concatenation of string="+ String.join(",",str));