Java supports lots of methods for converting objects and primatives to and from byte[] so it is certainly possible to avoid sending characters which have to be converted.
I would only recommend packing data into byte[] for socket transmission IF you are expecting very high data rates or have a very slow connection. Its just too much chance for bugs and errors for too little gain.
See javadocs for java.lang.Double class for discussion of formal representation of floating point numbers.
If you have Java on both ends, serializing objects is remarkably fast and simple.
Bill