当前位置: 首页 > 面试题库 >

是否可以在Java中交换两个变量?

丁经国
2023-03-14
问题内容

给定两个值x和y,我想将它们传递给另一个函数,交换它们的值并查看结果。这在Java中可行吗?


问题答案:

不与原始类型(intlongchar等)。Java按值传递东西,这意味着函数传递的变量是原始变量的副本,并且您对该副本所做的任何更改都不会影响原始变量。

void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
    // a and b are copies of the original values.
    // The changes we made here won't be visible to the caller.
}

现在,对象有所不同,因为对象变量的“值”实际上是对对象的引用-复制该引用使其指向完全相同的对象。

class IntHolder { public int value = 0; }

void swap(IntHolder a, IntHolder b)
{
    // Although a and b are copies, they are copies *of a reference*.
    // That means they point at the same object as in the caller,
    // and changes made to the object will be visible in both places.
    int temp = a.value;
    a.value = b.value;
    b.value = temp;
}

局限性在于,您仍然无法以调用者可以看到的任何方式修改ab自身的值(即,不能将它们指向不同的对象)。但是您可以交换它们引用的对象的内容。

顺便说一句,从OOP的角度来看,上述内容相当荒唐。这只是一个例子。不要这样



 类似资料:
  • 问题内容: 是否可以使用javascript或Submit按钮同时提交两个表单? 表单结构可以如下所示: 并从两个数组中获取数据? 问题答案: 不,这是不可能的。您可以创建第三个隐藏表格,该表格将序列化这两个表格中的字段。 如果可以使用jQuery: 您需要确保str1和str2不为空,并且当然要避免两种形式之间的名称冲突。

  • 问题内容: 问题是:编写一个交换两个变量的方法。这两个变量应该是原语。它不需要是通用的,例如两个变量。有办法吗? 问题答案: 如果不使用数组或对象,不可以,无法在方法中进行操作。

  • 问题内容: 我有两个变量: 我的问题是如何交换它们?仅此变量,没有任何对象。 问题答案: 这是交换两个变量的值的单行代码。 给定变量和: 示范如下:

  • 问题内容: 在Python中,我已经看到使用此语法交换了两个变量值: 这是否被认为是交换两个变量值的标准方法,还是有其他一些习惯上最常用的交换两个变量的方法? 问题答案: Python从左到右计算表达式。请注意,在评估分配时,右侧的评估先于左侧。 http://docs.python.org/3/reference/expressions.html#evaluation-order 这意味着该表达

  • 问题内容: 是否可以在Gradle中声明一个可在Java中使用的变量?基本上,我想在build.gradle中声明一些var,然后在构建时(显然)获取它。就像C / C ++中的预处理器宏一样… 一个声明的例子就是这样: 有没有办法做这样的事情? 问题答案: 生成Java常量 你可以使用 产生Android资源 你可以使用或以通常的方式访问它们