(1) Here is the SDK 1.4.1 source code. As you can see, there is no difference.
(2)
There are 2 overloaded forms of String.copyValueOf.
public static
String copyValueOf(char data[])
public static String copyValueOf(char data[], int offset, int count)
There are 9 overloaded forms of String.valueOf.
public static String valueOf(char data[])
public static String valueOf(char data[], int offset, int count)
public static String valueOf(boolean b)
public static String valueOf(char c)
public static String valueOf(int i)
public static String valueOf(long l)
public static String valueOf(float f)
public static String valueOf(double d)
public static String valueOf(Object obj)
(3)
Notice that there are three ways to create a String from an array of char: the String contructor, valueOf and copyValueOf
public String(char value[])
public String(char value[], int offset, int count)
(4)
And finally, don�t confuse String.valueOf with the primitive type wrapper valueOf methods.