write(int) writes a single character (hence takes the Unicode character of the passed int).
print(datatype) on the other hand converts the datatype (int, char, etc) to a String by first calling String.valueOf(int) or String.valueOf(char) which is translated into bytes according to the platform's default character encoding, and these bytes are written in exactly the manner of the write(int) method.
For more details, you can refer the documentation of PrintWriter.