1. String being final is part of String's design as an immutable class.
2. System and Math are utility classes with only static methods. There are not meant to be instantiated (and that's why their constructors are private). To emphasize the fact they are not meant to be instantiated, they are marked as final, although the lack of an accessible constructor would have stopped you anyway.