…particularly
new String();
If you look for that
String constructor, it says there is usually no point in using it. String has
thirteen constructors, so presumably whoever wrote it is not superstitious
There are also two deprecated constructors and those thirteen include two which you are told not to use.
The reason for so many constructors is that library class design is rather different from designing your own classes. When you design your classes, you give them the smallest public interface consistent with their functioning at all.
When you design a library class, you tend to give it a larger public interface. If somebody goes and tells the designers, “Maybe somebody will need a String constructor taking a Cucumber and an Onion parameter,” and you will find
public String(Cucumber c, Onion o) appears as a constructor.