Nie wiem, czy dobrze rozumiem podstawowe aspekty referencji, proszę, aby ktoś skomentował, czy w tych dwóch "teoriach" są błędy i poprawił je, jeśli tak jest.
Dlaczego referencje nie mogę być zmieniane (Czy tak jest w każdym języku programowania?):
Nazwa referencji symbolizuje pewien adres w pamięci pod którym "siedzi" dany obiekt. Jeśli zmienimy nazwę referencji to ona nie będzie już symbolizować tego samego adresu tylko inny, w którym nie ma tego samego obiektu, dlatego gdyby takie działanie było dozwolone konsekwencje tego byłyby nieprzewidywalne.
A powód dla którego trzeba koniecznie inicjalizować referencję zaraz po deklaracji:
Deklarując referencję tworzymy odnośnik do pewnego miejsca w pamięci. Jeśli nie powiemy programowi jasno jaki obiekt ma zostać przypisany do tego adresu a następnie będziemy kontynuować pisanie programu wówczas w to miejsce zostanie wpisany kolejno utworzony obiekt (jeśli miejsca w pamięci są zapełniane jedno po drugim - jest tak?) lub pozostanie w nim obiekt, który wcześniej się na nim znajdował.
Przy okazji ciekawią mnie też odpowiedzi na pytania w nawiasach.