Dalam istilah Java, simbol adalah string yang diinternir. Ini berarti, misalnya, perbandingan persamaan referensi ( eq
di Scala dan ==
Java) memberikan hasil yang sama seperti perbandingan persamaan normal ( ==
di Scala dan equals
Java): 'abcd eq 'abcd
akan mengembalikan nilai true, sementara "abcd" eq "abcd"
mungkin tidak, bergantung pada keinginan JVM (yah, seharusnya untuk literal, tetapi tidak untuk string yang dibuat secara dinamis secara umum).
Bahasa lain yang menggunakan simbol adalah Lisp (yang menggunakan 'abcd
seperti Scala), Ruby ( :abcd
), Erlang dan Prolog ( abcd
; mereka disebut atom, bukan simbol).
Saya akan menggunakan simbol ketika saya tidak peduli dengan struktur string dan menggunakannya murni sebagai nama untuk sesuatu. Misalnya, jika saya memiliki tabel database yang mewakili CD, yang menyertakan kolom bernama "harga", saya tidak peduli bahwa karakter kedua dalam "harga" adalah "r", atau tentang nama kolom yang digabungkan; jadi pustaka database di Scala bisa menggunakan simbol untuk nama tabel dan kolom.