To read input from the user in Java, BufferedReader is used along with InputStreamReader. BufferedReader buffers input and allows reading characters, arrays, lines efficiently. It can read a single character, a string, integer and floating point literals. Character is read using read() and typecasting, string using readLine(). Numeric values are read as strings and parsed using parse methods of wrapper classes like Integer.parseInt.