`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).
Advanced answer
Deep dive
Expanding on the short answer — what usually matters in practice:
Context (tags): java, var, type-inference, typing
JVM: memory (heap/stack), GC, and what drives latency.
Contracts: equals/hashCode/toString, mutability and consequences.
Explain the "why", not just the "what" (intuition + consequences).
Trade-offs: what you gain/lose (time, memory, complexity, risk).
Edge cases: empty inputs, large inputs, invalid inputs, concurrency.
Examples
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
}
Common pitfalls
Too generic: no concrete trade-offs or examples.
Mixing average-case and worst-case (e.g., complexity).