https://medium.com/@umutkarakus56/what-are-value-and-reference-types-in-java-programming-548dc0fcdb98