https://medium.com/@emily.zy.lin/comparison-between-c-and-java-key-differences-and-similarities-part-2-abe7169c2bc2