https://medium.com/@ruturajjadhav122/mastering-java-essentials-unraveling-the-basics-and-core-concepts-i-e1a06b2901b0