You're using the following method:
public static <T> String join(T... elements)
Joins the elements of the provided array into a single String containing the provided list of elements.
No separator is added to the joined String. Null objects or empty strings within the array are represented by empty strings.
So this method calls toString() on the list of Strings and on the char array, and joins the results.
You want to pass a char or String separator as second argument instead:
StringUtils.join(values, '.').getBytes();