In Java Boolean (like String) is immutable. That means if you use
Boolean x = new Boolean(true);
x = false;
x will point to a different Object after the "x = false" than it did before. So if you use the Boolean.valueOf() method Java will take care that there are only two Boolean objects at max, one representing true and the other representing false. If you use .valueOf(true) it will return a handle to the true-object and if you use .valueOf(false) it will return a handle to the false-object. Thus you don't create any unnecessary objects and thus they won't have to be deleted by the garbage collector.
If you use "new Boolean()" instead this doesn't work and Java will create a new Object every time. Thus you will have a ton of unnecessary objects that will probably be freed quite quickly and have to be cleaned by the garbage collector. So this costs you more memory (for all the objects), time for the allocation (when creating new Booleans) and time for the deallocation (when the objects are caught by the garbage collector), while giving you no advantages at all.