W języku Java symbole są łańcuchami wewnętrznymi. Oznacza to na przykład, że porównanie równości odniesień ( eqw Scali i ==Javie) daje taki sam wynik jak normalne porównanie równości ( ==w Scali i equalsJavie): 'abcd eq 'abcdzwróci wartość true, ale "abcd" eq "abcd"może nie, w zależności od kaprysów JVM (cóż, powinno dla literałów, ale nie dla łańcuchów tworzonych dynamicznie).
Inne języki, które używają symboli to Lisp (który używa 'abcdjak Scala), Ruby ( :abcd), Erlang i Prolog ( abcd; nazywane są atomami zamiast symboli).
Użyłbym symbolu, gdy nie obchodzi mnie struktura łańcucha i używam go wyłącznie jako nazwy czegoś. Na przykład, jeśli mam tabelę bazy danych reprezentującą płyty CD, która zawiera kolumnę o nazwie „cena”, nie obchodzi mnie, że drugi znak w polu „cena” to „r”, czy też konkatenacja nazw kolumn; więc biblioteka bazy danych w Scali mogłaby rozsądnie używać symboli dla nazw tabel i kolumn.