"native" means that the body of the method is not written in Java, but rather in a "native" language like C/C++. The mechanism through which you would do this (and yes, you can do this yourself in your own classes) is called the Java Native Interface, or "JNI". You can learn about JNI here.
Many methods in core classes like Object, Runtime, and Thread are native because these classes provide some "magic" that can't be implemented in Java itself. For example, methods like wait() and notify() in Object can only be implemented by using operating-system calls to the platform's thread library.
You have got a toString() method implemented in your class; it is inherited from the Object class, which you obviously know about. You mean you haven't overridden a toString() method. The hashCode method is implemented somewhere inside the JVM; I am not sure where. It was implemented by whoever wrote that part of the JVM, which means different people for different implementations of the JVM.
And EF-H has told you already where you can learn to write your own native methods.
here toString itself is calling hashCode(); of Object class which is a native method. then,who has implemented this hashCode() method and where it is implemented ? is that JVM?
I guess the "who" is the developers of the JVM. And depending on the platform, it is implemented in a shared object, or a DLL. If you really want to understand the plumbing, you should read the JNI that EFH recommended. But to try to answer your question in summary....
There is a method provided by the JVM to load a shared object (or DLL), and in general, classes use this method to load the libraries in the static initializer of the class (but it doesn't have to).
When you call a native method, Java knows that it is a share object method call, and sets up the call stack for it -- and then locates and calls the native method in the shared object.