Конечно, вы можете вернуть новую строку из вашего метода changeString вместо того, чтобы пытаться изменить ее на месте.
В качестве альтернативы, вы можете создать объект, который оборачивает или содержит строку, и передать ее внутрь. Метод ChangeString изменит строку, которая является внутренней для вашего объекта, и метод main все равно будет содержать ссылку на этот объект.
В противном случае, вы не можете сделать это. String является неизменным, и java всегда передает объекты как значение, которое является указателем на определенный объект. Измените, куда вы указываете, и вы больше не ссылаетесь на один и тот же объект.