Well, in fact it doesn't create a new object. All it does is to load the class whose name was its parameter. (In your example it loads the java.lang.String class.) And if that class is already loaded, then it does nothing. But in any case it doesn't create any objects.
And if you're a beginner in Java then understanding how it works internally isn't going to be helpful. All you need to know is that the method you asked about loads a class. You need to know what it means to "load" a class, of course, but you don't need to know what pointers are set and how memory is assigned or any of that.
If the fully-qualified name of a class is available, it is possible to get the corresponding Class using the static method Class.forName(). This cannot be used for primitive types. The syntax for names of array classes is described by Class.getName(). This syntax is applicable to references and primitive types.
Class c = Class.forName("com.duke.MyLocaleServiceProvider");
This statement will create a class from the given fully-qualified name.
it sould not be written here to create a class , instead it will here , load a class.