05/11/2012 | jiangws In String type we have several method valueOf static String valueOf(boolean b) static String valueOf(char c) static String valueOf(char[] data) static String valueOf(char[] data, int offset, int count) static String valueOf(double d) static String valueOf(float f) static String valueOf(int i) static String valueOf(long l) static String valueOf(Object obj) As we can see those method are capable to resolve all kind of numbers every implementation of specific method like you have presented: So for integers we have Integer.toString(int i) for double Double.toString(dobule d) and so on In my opinion this is not some historical thing, but is more useful for developer to use the method valueOf from String class than from proper type, because is less changes to make when we want to change the type that we operate on. Sample 1: public String doStaff(int num) { //Do something with num return String.valueOf(num); } Sample2: public String doStaff(int num) { //Do somenthing with num return Integer.toString(num); } As we see in sample 2 we have to do two changes, in contrary to sample one. My conclusion is that using the valueOf method from String class is more flexible and that why is available there. http://stackoverflow.com/questions/3335737/integer-tostringint-i-vs-string-valueofint-i