Т.е. это не dynamic из многих языков, где действительно может быть любое значение. В Java как int num = "5" не будет работать, так и var num = "5" никогда не будет скомпилирован как int, а будет приведен к тому типу, что указан справа, т.е. после компиляции будет String num = "5" вместо var num = "5"