So I take it
lcd.write(4); and
lcd.print(4);
are the same?
No, they are not. Why do you assume that they are? Have you read the documentation on the print() and write() methods? The documentation explains the differences. The write() method sends binary data to the serial port. The print() method converts the value to a string and sends that.