【问题标题】:How does Android return the values from a void function?Android 如何从 void 函数返回值?
【发布时间】:2017-01-11 05:51:07
【问题描述】:

我正在浏览这个函数getLocationOnScreen()

void getLocationOnScreen (int[] outLocation)

计算此视图在屏幕上的坐标。参数必须是两个整数的数组。方法返回后,数组按顺序包含 x 和 y 位置。

我在这里不明白的是,如果我传递一个这样的数组,

int position[] = new int[2];

view.getLocationOnScreen(position);

返回类型为void的函数如何在没有函数返回的情况下包含这些值?

注意:这个问题不是以下问题的重复,因为它解释了 2 种方法的工作原理。

getLocationOnScreen() vs getLocationInWindow()

【问题讨论】:

  • 我觉得你应该先了解一下procedurefunction在编程语言中的区别。
  • @AnggrayudiH 这是一个按值传递的函数,所以我想知道这怎么可能?
  • 该方法只是编辑您的数组。所以它不必返回一些东西。它只是编辑参数。
  • @VladMatvienko 我只传递数组,因为在 Java 中只有按值传递,没有按引用传递,所以 Android 如何能够编辑
  • 您传递的是对数组的引用,而不是数组。 Java 中的一切都是参考。

标签: android


【解决方案1】:

原始类型将通过复制变量值来传递变量,因此方法完成后该值不会改变。但是正如您所见,您使用关键字newnew int[2])创建了一个数组类型,所以这个变量是一种对象类型,当您将参数传递给方法时,它将是数组的引用。

在 Java 中,原始类型通过值传递,而对象类型通过引用传递,您不能选择像 C 那样使用操作 & 传递地址

【讨论】:

    【解决方案2】:

    这是关于从内存中引用一个对象。您正在发送您的对象地址,这意味着引用您的对象的地址。以及使用您对象的此地址的功能。通过这种方式,函数可以更改对象的值,但不能更改地址。 这里,这个想法来自C language

    以及java中的用法:

    Java 的工作方式与 C 完全一样。您可以分配指针、将指针传递给方法、跟随方法中的指针并更改指向的数据。但是,您无法更改该指针指向的位置

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 1970-01-01
      • 2013-11-26
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2015-01-12
      • 2023-01-28
      相关资源
      最近更新 更多