There seems to be no reason to replace new String(char[]) with String.valueOf(char[]), and in fact the latter is likely implemented by just doing the former - here's the source code of the String class from JDK 9, for example (link):
public static String valueOf(char data[]) {
return new String(data);
}
So the only difference would be one extra method call (which at best would be inlined by the JIT). On the other hand, if there is a difference then it would be extremely small, and not worth considering, so instead of thinking about performance you should probably choose based on which way you think is more readable.
That said, the code in your example is not using the new String(char[]) constructor, it is using the new String(String) constructor to copy a string. This is not needed, you can just write the expression which creates the string without calling the constructor, unless there is some reason your code requires the string object to not be interned (and if it does, that smells like a bad design to me.)
If you do think there might be some benefit in caching frequently-used strings, you should implement a cache yourself, design it to be optimised for the kind of strings your application is likely to be dealing with, and then benchmark it to see if it's actually faster. You'll have the cost of checking the cache every time, and this cost will likely be larger for strings than for integers, especially if it involves hashing and testing equality of strings; so if there are too many cache misses then the net effect would be negative. The cache miss rate will be highly dependent on your application, so you do want to benchmark with realistic data.
valkeyword isn't even java?var x = "A\u00ea\u00f1\u00fcC"