`var` enables local variable type inference: the compiler infers the static type from the initializer. It does NOT make Java dynamically typed. You can use it only for local variables with an initializer (not for fields, method params, or without assignment).
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "java-`var`:-what-does-it-do-and-what-does-it-not"
function explain() {
// Start from the core idea:
// `var` enables local variable type inference: the compiler infers the static type from the
}