Przekazanie argumentu typu prostego
Przekazanie argumentu typu prostego:
01 class SimpleTypeArgumentClass {
02 static void modifyArg( int arg ) {
03 arg++;
04 System.out.println( "arg in SimpleTypeArgumentClass: " + arg ); // arg in SimpleTypeArgument: 2
05 }
06 }
07
08 public class SimpleTypeArgumentTestProgram {
09 public static void main( String[] args ) {
10 int arg = 1; //arg == 1
11 SimpleTypeArgumentClass.modifyArg( arg );
12 System.out.println( "arg in Program: " + arg ); // arg in Program: 1
13 }
14 }
Argument arg zosatał przekazany jako kopia wartości. W chwili wywołania metody SimpleTypeArgumentClass.modifyArg( int arg ) została utworzony na stosie nowa zmienna int arg dla metody modifyArg( int arg). W efekcie modyfikacja wartości tej zmiennej nie wpłynęła na wartość oryginalnej zmiennej arg w metodzie SimpleTypeArgumentClass.main.
Sekwencja zdarzeń:
- Sytuacja początkowa. Sterta i stos są puste. Nie utworzono dotychczas żadnego
obiektu ani zmiennej.

- Wiersz 10. W klasie SimpleTypeArgumentTestProgram w metodzie
main deklarujemy zmienną arg i inicjujemy ją przy użyciu
wartości 1. Zmienne są zapisywane na stosie. Dlatego na stosie pojawia
się element o wartości 1 odpowiadający zmiennej arg.

- Wiersz 11. Wywołanie metody statycznej
SimpleTypeArgumentClass.modifyArg( int arg ). Na stosie tworzona jest
kopia zmiennej arg - pojawia się element o wartości 1, związany z
parametrem arg w metodzie SimpleTypeArgumentClass.modifyArg( int arg
).

- Wiersz 03. Sterowanie programu przechodzi do metody modifyArg( int arg
) w klasie SimpleTypeArgumentClass. W metodzie
SimpleTypeArgumentClass.modifyArg( int arg ) zwiększamy wartość
parametru arg. Na stosie w drugim elemencie następuje zmiana
wartości.

- Wiersz 12. Sterowanie programu wraca do metody main w klasie
SimpleTypeArgumentTestProgram. Na stosie znika utworzona uprzednio
kopia zmiennej arg. Wyświetlamy wartość lokalnej zmiennej arg.
Wartość oczywiście nie uległa zmianie, ponieważ zmieniona została tylko kopia
tej zmiennej.
