متغییر ها می توانند immutable یا mutable باشند برای مثال در جاوا متغیر هایی که بصورت معمولی تعریف می شوند mutable هستند و آنهایی که بصورت final تعریف می شوند immutable می شوند یا در اسکالا متغیر هایی که با var تعریف می شوند mutable هستند و آنهایی که با val تعریف می شوند immutable هستند.
انواع داده یا کلاس immutable، ذاتا تغییر ناپذیر هستند و اشیائی که از آنها ساخته می شوند فقط در زمان ایجاد و با استفاده از constructor مقدار دهی اولیه می شوند و به هیچ وجه قابل تغییر نیستند حالا چه این اشیاء immutable درون متغیر های mutable قرار بگیرند چه متغیر های immutable. اما یک شئ mutable حتی اگر درون یک متغیر immutable قرار بگیرد این امکان وجود دارد که مقادیر درون شئ mutable تغییر کند.