A final class cannot have any subclasses. This just means that nobody can create a subclass that modifies behaviour of the final class by modifying internal data or overriding methods so they behave differently. A good example is java.lang.String; by making it final, it is ensured that String objects are and always will be immutable.
As for your example, this is a so-called utility class. It's final so nothing can subclass it, and it has only a private constructor so that no other code can instantiate it. This class most likely only contains static methods.
Actually, utility classes don't even need to be final themselves. Because there is only a private constructor and no public, protected or package visible one, subclasses cannot call super(...) because that just isn't visible. It is good practive to do so nonetheless.
A final class is one thing and private constructor is another.
A final class means that no one can extends it. It could not have subclasses.
From the comment of you first method(?), i guest that your class AppUtil provides utilities methods for the application. Those methods are usely static. You don't need to call them on an instance.For that reason the constructor is private.
If there was no constructor, the compiler would have provide a default one. Thus you can create an instance of AppUtil by new AppUtil();
SCJP 5.0 | SCWCD 1.4
what if we put solar panels on top of the semi truck trailer? That could power this tiny ad: