Seringkali berguna untuk mengkategorikan objek sebagai enkapsulasi nilai atau entitas, dengan perbedaan adalah bahwa jika sesuatu adalah nilai, kode yang menyimpan referensi padanya tidak boleh melihat statusnya berubah dengan cara apa pun yang tidak diawali oleh kode itu sendiri. Sebaliknya, kode yang menyimpan referensi ke suatu entitas dapat mengharapkannya berubah dengan cara di luar kendali pemegang referensi.
Meskipun dimungkinkan untuk menggunakan nilai enkapsulasi menggunakan objek dari tipe yang bisa berubah atau tidak dapat diubah, sebuah objek hanya dapat berperilaku sebagai nilai jika setidaknya satu dari kondisi berikut ini berlaku:
Tidak ada referensi ke objek yang akan pernah terpapar pada apa pun yang dapat mengubah status yang dienkapsulasi di dalamnya.
Pemegang setidaknya salah satu referensi ke objek mengetahui semua kegunaan yang mungkin ada referensi yang ada.
Karena semua instance dari tipe yang tidak dapat diubah secara otomatis memenuhi persyaratan pertama, menggunakannya sebagai nilai adalah mudah. Memastikan bahwa salah satu persyaratan terpenuhi ketika menggunakan tipe yang bisa berubah, sebaliknya, jauh lebih sulit. Sedangkan referensi ke tipe yang tidak dapat diubah dapat dengan bebas diedarkan sebagai cara untuk mengenkapsulasi keadaan yang dienkapsulasi di dalamnya, melewati keadaan yang tersimpan dalam tipe yang dapat berubah memerlukan baik membangun objek pembungkus yang tidak dapat diubah, atau menyalin keadaan yang dienkapsulasi dengan benda yang dipegang secara pribadi ke objek lain yang merupakan baik yang disediakan oleh atau dibangun untuk penerima data.
Tipe yang tidak dapat diubah bekerja dengan sangat baik untuk melewati nilai, dan seringkali paling tidak dapat digunakan untuk memanipulasinya. Namun, mereka tidak begitu baik dalam menangani entitas. Hal terdekat yang dapat dimiliki seseorang pada suatu entitas dalam suatu sistem dengan tipe yang murni tidak dapat diubah adalah fungsi yang, mengingat keadaan sistem, akan melaporkan bahwa atribut dari beberapa bagiannya, atau menghasilkan instance sistem-keadaan baru yang seperti disediakan satu kecuali untuk beberapa bagian tertentu yang akan berbeda dalam beberapa mode yang dipilih. Lebih lanjut, jika tujuan suatu entitas adalah untuk menghubungkan beberapa kode dengan sesuatu yang ada di dunia nyata, mungkin entitas tersebut tidak mungkin untuk menghindari mengekspos keadaan yang bisa berubah.
Misalnya, jika seseorang menerima beberapa data melalui koneksi TCP, seseorang dapat menghasilkan objek "keadaan dunia" baru yang memasukkan data itu dalam buffernya tanpa memengaruhi referensi apa pun ke "keadaan dunia" lama, tetapi salinan lama dari negara dunia yang tidak termasuk kumpulan data terakhir akan rusak dan tidak boleh digunakan karena mereka tidak lagi cocok dengan keadaan soket TCP dunia nyata.