کلاس های immutable، کلاس هایی هستند که مقادیر فیلدهای داخلی آنها به هیچ وجه قابل تغییر نیستند، و متدهای آنها نیز در صورتی که بخواهند تغییری در مقادیر فیلدهای داخلی شئ داشته باشند، این تغییر اتفاق نمی افتد و بجای آن یک شئ تغییر کرده از همان کلاس توسط متد برگردانده می شود، برای مثال کد زیر را نگاه کنید:
String a = "java";
a.concat("-");
System.out.println(a);//java
String b = a.concat("-");
System.out.println(b);//java-
چون کلاس String یک کلاس immutable است وقتی متغییر a تعریف می شود دیگر نمی توان مقدار آن را تغییر داد و متد concat نیز یک String جدید بعنوان خروجی بر می گرداند.