Both use the current ClassLoader. As DNA correctly points out, http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#forName%28java.lang.String%29 states that Class.forName() uses the current class loader. A little experiment shows that a class loaded for instantiation using the new statement also uses the current ClassLoader:
public class Test
{
    public static void main(String[] args) throws Exception
    {
        Thread.currentThread().setContextClassLoader(new MyClassLoader());
        SomeClass someClass = new SomeClass();
        someClass.printClassLoader();
    }
    public static class MyClassLoader extends ClassLoader
    {
        public MyClassLoader()
        {
            super();
        }
        public MyClassLoader(ClassLoader parent)
        {
            super(parent);
        }
    }
}
public class SomeClass
{
    public void printClassLoader()
    {
        System.out.println(this.getClass().getClassLoader());
        System.out.println(Thread.currentThread().getContextClassLoader());
    }
}
In Test we set the current's thread ContextClassLoader to some custom ClassLoader and then instantiate an object of class SomeClass. In SomeClass we print out the current thread's ContextClassLoader and the ClassLoader that loaded this object's class. The result is
sun.misc.Launcher$AppClassLoader@3326b249
test.Test$MyClassLoader@3d4b7453
indicating that the current ClassLoader (sun.misc.Launcher.AppClassLoader) was used to load the class.