A variable is a location in memory used to hold a data value. Variables must be declared with a type and can be assigned values that may later be changed. Each variable has a name according to certain naming conventions and a type that determines what operations can be performed. Common data types in Java include integers, floating-point numbers, booleans, characters, and strings. Variables are assigned values using operators like arithmetic, comparison, concatenation and more according to their types.