Dalam istilah Java, simbol adalah string yang diinternir. Ini berarti, misalnya, perbandingan persamaan referensi ( eqdi Scala dan ==Java) memberikan hasil yang sama seperti perbandingan persamaan normal ( ==di Scala dan equalsJava): 'abcd eq 'abcdakan 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 'abcdseperti 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.