Register now or log in to join your professional community.
Design wise, I think they shouldn't override equals nor hashcode methods since they are just builder objects. The state for these objects is just the character array from the AbstractStringBuidler. Logically, you wouldn't need to check the equality of two builder objects (someone shouldn't really care about the state of the builder) rather you need to check the equality of what is being built, which is the target String object in this case.
Because it is a mutable
Simplest reason is that because they are mutable in Java. Understand the concept of immutability in String, you get to know automatically why these methods are not overridden.