naukaJavy.pl

  • Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Kurs języka Java

Parametry metod

Email Drukuj

Wywołując metodę przekazujemy pewną listę – potencjalnie pustą – parametrów typu prostego i referencji do obiektów. W języku Java wszystkie parametry (wszystkich rodzajów i typów) są przekazywane przez wartość. Zrozumienie, co się kryje za tym zdaniem jest absolutnie kluczowe dla zrozumienia języka Java. Co to więc oznacza, że parametry metod przekazywane są przez wartość?

Argumenty metody traktowane są dokładnie tak samo, jak zmienne zadeklarowane w jej ciele. Są to po prostu zmienne lokalne tej metody. To, że parametry wywołania przekazywane są przez wartość oznacza, że przekazywana jest sama wartość parametru, tj. wartości zmiennych użytych jako parametry wywołania są kopiowane do zmiennych lokalnych metody. Także przekazanie referencji do obiektu polega na skopiowaniu tej referencji do zmiennej lokalnej metody; nie samego obiektu, tylko referencji, a więc wskazania na ten obiekt. Zerknijmy na poniższy przykład.

public class TestClass {
public static void main(String[] args) {
String x = "Ola";

System.out.println("x: " + x);

someOp(x);

System.out.println("x: " + x);
}

public static void someOp(String y) {
System.out.println("y: " + y);

y = "Ela";

System.out.println("y: " + y);
}
}

Deklarujemy więc w metodzie main(…) zmienną referencyjną x typu String i przypisujemy jest obiekt reprezentujący napis „Ola”. Następnie wypisujemy wartość obiektu wskazywanego przez zmienną x. Wywołujemy metodę someOp(…) przekazując zmienną x jako argument wywołania. Wartość tej referencji jest kopiowana do zmiennej lokalnej y. Wyświetlamy wartość zmiennej y po czym przypisujemy do niej inny obiekt – obiekt reprezentujący napis „Ela”. Wyświetlamy jeszcze raz zmienną y i wywołanie metody się kończy. W metodzie main(…) jeszcze raz wyświetlamy wartość zmiennej x (de facto jest to wyświetlenie wartości obiektu wskazywanego przez referencję x) i widzimy, że rzeczywiście wskazuje ona teraz na ten sam obiekt. Efektem uruchomienia powyższego programu będzie wyświetlenie napisu:

x: Ola
y: Ola
y: Ela
x: Ola

Zwróćmy uwagę na fakt, że przypisanie w metodzie someOp(...) nowej wartości do zmiennej y nie pociąga w skutkach żadnej zmiany wartości zmiennej x. Co więcej, nawet jeśli byśmy chcieli to nie będziemy mogli zmienić w metodzie someOp(...) wartości zmiennej x. Nie jest w Javie możliwa zmiana wartości zmiennych przekazanych jako argumenty wywołania metody. Java nie wspiera znanej z innych języków koncepcji argumentów typu IN/OUT. Możemy natomiast z metody someOp(...) wywoływać metody obiektu wskazywanego zarówno przez zmienną x jak i y.

 

Wiadomości

Vishal Sikka, CTO w firmie SAP zaapelował o autentyczne, pełne przekazanie zarządzania rozwojem języka i platformy Java w ręce zrzeszenia firm działającego na zasadzie równoprawności - zrzeszenia nie zdominowanego przez firmę SUN, czy obecnie Oracle (SUN został kupiony przez Oracle).

Jednocześnie zaapelował o udostępnienie kodu źródłowego Maszyny Wirtualnej Javy na zasadach open-source.

SAP zdecydowany jest zainwestować znaczne środki w rozwój Javy, jeśli tylko postulaty te zostaną spełnione – dodał.

Reklama

Co to jest

Apache Lucene Java to biblioteka open-source napisana w języku Java. Lucene służy do implementacji mechanizmów wyszukiwania pełnotekstowego – taki mały Google, który możemy mieć we własnej aplikacji.


© Wszelkie prawa zastrzeżone dla Mariusza Lipińskiego

kontakt: mariusz.lipinski@naukajavy.pl | strona domowa: www.mariuszlipinski.pl