Java programs manipulate two fundamentally different kinds of values: primitive values and object values.