Egzamin zerowy, zadanie 17

Ponieważ nikomu nie udało się zaznaczyć prawidłowej odpowiedzi (w tym zadaniu ok 1/3 osób udzieliła odpowiedzi i wybrana była każda poza prawidłową), więc zamieszczam to zadanie ze wszystkimi odpowiedziami do sprawdzenia przed następnym terminem egzaminu. Zwłaszcza proszę zwrócić uwagę w jaki sposób w Javie przechowywane są obiekty typu String.

Zadanie 17.

import java.util.HashSet;
public class HashTest {
    private String str;
    public HashTest(String str) { this.str = str; }
    
    public static void main(String args[]) {
        HashTest h1 = new HashTest("1");
        HashTest h2 = new HashTest("1");
        String s1 = new String("2");
        String s2 = new String("2");
        
        HashSet<Object> hs = new HashSet<Object>();
        hs.add(h1); hs.add(h2);
        hs.add(s1); hs.add(s2);
        System.out.print(hs.size());
    }
}        

Wynikiem działania będzie:
a) Błąd kompilacji. b) Zostanie wyrzucony wyjątek podczas wykonania.
c) 2        d) 3        e) 4

Możliwość komentowania jest wyłączona.