Результат. Массив перед вызовом метода

Массив перед вызовом метода:

1 2 -3 0 -4

Массив после вызова метода:

0 0 -3 0 -4

В примере в метод передается аргумент ссылочного типа – одномерный массив. Как видите, в данном случае действия внутри метода add() влияют на массив m[]. Элементы массива поменяли свое значение.

Теперь давайте рассмотрим другой пример передачи объекта.

class My {

int i;

static void changeIt(My value) {

value.i= 10;

}

public static void main(String[] arg)

{ My obj = new My();

obj.i = 20;

System.out.printf("Значение obj.iдо вызова метода%3d%n", obj.i);

changeIt(obj);

System.out.printf("Значение obj.i после вызова метода%3d", obj.i);

}}

Результат

Значение obj.i до вызова метода 20

Значение obj.i после вызова метода 10

Если программисту требуется, чтобы вызванный метод изменил переданные ему значения переменных примитивных типов, то эти переменные можно также обернуть специальным объектом (или использовать массив) и передать эту "обертку" в качестве аргумента.

Обратите внимание, несмотря на то, что тип String – ссылочный тип, изменение значения строковой переменной в теле метода не влияет на значение этой же переменной снаружи метода:

public class My {

static void changeIt(String value) {

value = new String("Hello!");

}

public static void main(String[] args){

String test = new String("HelloWorld!");

changeIt(test);

System.out.println("Новое значение: "+ test);

}}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: