Wątek przeniesiony 2014-05-25 09:38 z Java przez bogdans.

Wyświetlenie adresu obiektu

0

Chciałam wypisać dane obiektu, nie dałam jednak konstruktorów i to chyba stąd taki wynik, ale zastanawia mnie co to jest.

To jest kod wynikowy:
student@1690726
W kolejnych wywołaniach było kolejno:
student@1f33675
student@1f33675
student@1690726
student@1690726
Domyślam się że ten numer to adres w pamięci, ale dlaczego wcześniej jest nazwa klasy a pośrodku (lepiej tu pasuje pomiędzy) @.
I dalsze pytaniana początku program dość długo myślał i "wypluł" kod wynikowy za drugim też, potem to już szło szybciej, domyślam się że na początku musiał znaleźć odpowiednie miejsce, potem je sprawdził, nie było w tym to szukał dalej znalazł i następnym razem sprawdzał te dwa Od razu.
Dlaczego te adresy się powtarzają?

To jest mój kod:




public class student{
String imie;
String nazwisko;
int numer_indeksu;

public static void main(String[] args)
{
student Maciek=new student();
//Maciek = new student("Maciek","Nowak",23123123);
Maciek.imie="Maciek";
Maciek.nazwisko="Nowak";
Maciek.numer_indeksu=12313;
System.out.println(Maciek);



}
}

Stworzyłam drugi obiekt i zrobiłam tak samo jak z poprzednim tylko inne dane dałam.
Uzyskałam to:

student@7c6768
student@1690726

Tym razem mimo że pojawił się nowy adres, program zadziałał błyskawicznie. Czemu?

1

Czas wykonania to raczej przypadek. student@...., to wynik działania metody toString() z klasy Object. Jeśli chcesz wypisywać inną informację, to nadpisz tę metodę w klasie student.

public String toString()
{
     return imie+" "++nazwisko+" "+numer_indeksu;
}
0

To nie jest adres tylko hashcode obiektu, bo tak domyślnie jest napisane toString

1 użytkowników online, w tym zalogowanych: 0, gości: 1