2017-01-11 2 views
1

я просматривал эту функцию getLocationOnScreen()Как Android возвращает значения из функции void?

пустот getLocationOnScreen (INT [] outLocation)

Вычисляет координаты этой точки зрения на экране. Аргумент должен быть массивом из двух целых чисел. После возвращения метода массив содержит местоположение x и y в этом порядке.

То, что я не понимаю, в том, что если я что-то пропускании массива, как это,

int position[] = new int[2]; 

view.getLocationOnScreen(position); 

Функция является типом возвращаемого быть void, как делает мой массив содержит эти значения без функции, возвращающей его?

Примечание: Этот вопрос не является дубликатом нижеследующего, поскольку он объясняет работу двух методов.

getLocationOnScreen() vs getLocationInWindow()

+0

Я думаю, что сначала вы должны изучить разницу между _procedure_ и _function_ в языке программирования. –

+0

@AnggrayudiH Это пропускная функция, поэтому мне было интересно, как это возможно? –

+0

метод просто редактирует ваш массив. Поэтому ему не нужно что-то возвращать. Он просто редактирует аргумент. –

ответ

0

Примитивный типа будет проходить переменное копирование значения его, так что значение не изменится после того, как метода finished.But, как вы видите, вы создали тип массива, используя ключевое слово new (new int[2]), так эта переменная является типом объекта, когда вы передали параметр методу, это будет ссылка на массив.

В Java примитивного типа проход по значению в то время как тип объекта по ссылке, и вы не можете выбрать, чтобы передать адрес как С помощью операции &

0

Речь идет о ссылке объекта из памяти. Вы отправляете свой адрес объекта, что означает адрес, ссылающийся на ваш объект. И функция, использующая этот адрес вашего объекта. Таким образом, функция может изменить значение вашего объекта, но не может изменить адрес. Вот эта идея идет от C language

и использования в java:

Java работает точно так же, как C. Вы можете присвоить указатель, передать указатель на метод, следовать указатель на метод и изменения данные, на которые указывалось. Тем не менее, вы не можете изменить, где это указывает указатель

Смежные вопросы