hiiiii....
as far as Class.forName() is concerned it is used to load a class at runtime. i.e. at the time of compilation we don't know which class should be loaded in memory but through programming we decide which class is to be loaded then we say
Class.forName("Foo");
this will load Foo into memory when this line is reached during runtime.
now if you want to make an instance of this at that time then you can call
now this will return an object of Class "Object" and you can typecast it to your class and then use it..
but new is used to create an object of the class when that class is already loaded in the memory. we use new for those classes which we have added in bytecode using import statement.
i hope i have answered your query.. if any doubt please revert back
Thanks
Amit