1. Assertions are used tipically when development to
test the application. Using assertions you can active or desactivate them when compiling and at runtime without changing the code. Without assertions you need to change your code and recompile to do/undo the test.
Assertions are a great tool to test your application 2. Public methods can be invoked from anywhere (another programmer can use your public methods) and if you want to be sure that your method works correctly you must [B]always[B] check the arguments. If the check is done using assertions you are not sure that the check will be always done because assertions can be desactivated at runtime