Q:

What is the exact difference between out.write() and out.print()

In my servlet I gave both out.print and out.write. but both prints in the browser.
What is the exact difference between these two and when to use out.print and out.write ?

A:

The basic difference is that out.write() explodes if you pass it a null:
String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException

A:

PrintWriter:

public void write(String s)
Write a string. This method cannot be inherited from the Writer class
  because it must suppress I/O exceptions.

print method has higher level of abstraction.

public void print(String s)
Print a string. If the argument is null then the string "null" is
  printed. Otherwise, the string's characters are converted into bytes
  according to the platform's default character encoding, and these
  bytes are written in exactly the manner of the write(int) method.

Hope this helps.

A:

There are three major differences:
1) If you try to print a null value of a String with out.write() , It will throw NullPointerException while out.print() will simply print NULL as a string.
 String name = null;
 out.write(name); // NullPointerException
 out.print(name); // 'Null' as text will be printed

2) out.print() can print Boolean values but out.write() can not.
boolean b = true;
out.write(b); // Compilation error
out.print(b); // 'true' will be printed 

3) If you are using out.write(), you simply can not place arithmetic operation code but out.print() provides the support.
out.write(10+20); // No output will be displayed.
out.print(10+20); // Output '30' will be displayed. 

