Native methods are implemented mostly in C and compiled to native code which runs directly on the machine.
This is in contrast to normal methods, which are implemented in Java and compiled to Java byte code, which is executed by the Java Virtual Machine (JVM).
To interface to these methods from Java you need to use the Java Native Interface (JNI).
Native code is mostly needed for accessing low-level stuff. In the case of hashCode this is the address of the object in memory. My guess for clone is that it copies the raw memory from a give object to the cloned one. Other uses of native code are for access to OS features or hardware.
The drawback of using native code is that you lose the safety and security of the JVM, i.e. your program might crash or have security holes due to bugs in the native code.