当它作为参数传递给函数

时间:2015-10-15 06:29:58

标签: java

我试图在将变量作为参数传递给函数时更改变量的值,但是原始值保持不变,那么是否可以更改?(i,在下面的代码中我想要值x为11)

public  class Runy  {

public static void main(String [] args) 
{


    int x=10;
    int y=change(x);

    System.out.println(x);
    System.out.println(y);

}
public static int change(int a)
{
    a+=1;
    return a;
}

}

5 个答案:

答案 0 :(得分:1)

  

我,在下面的代码中我希望x的值为11)

使用您当前的代码,这是不可能的,但如果您想更改x的值,则不需要y,只需执行

 int x=10;
 x=change(x); // store the return value of change back to 'x'

答案 1 :(得分:1)

您可以更改作为参数传递的数组元素或作为参数传递的对象字段。

  <div class="container">

<ul class="tabs">
    <li class="tab-link current" data-tab="tab-1">Tab One</li>
    <li class="tab-link" data-tab="tab-2">Tab Two</li>
    <li class="tab-link" data-tab="tab-3">Tab Three</li>
    <li class="tab-link" data-tab="tab-4">Tab Four</li>
</ul>

<div id="tab-1" class="tab-content current">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div id="tab-2" class="tab-content">
     Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<div id="tab-3" class="tab-content">
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</div>
<div id="tab-4" class="tab-content">
    Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>

可以像这样使用:

public static void change(int[] a) {
    a[0] += 1;
}

int a[] = new int[1];
a[0] = 10;
change(a);
System.out.println("a[0] = " + a[0]);

可以像这样使用:

static class A {
    int val;
}

static void change(A a) {
    a.val += 1;
}

答案 2 :(得分:0)

你不能这样做......永远不要试图改变参数值!

做这样的事情:

public static int change(int a)
{
    return a + 1;
}

并在您的主要方法中:

x = change(x);

答案 3 :(得分:0)

传递具有基本数据类型的变量时(例如intbooleanfloat等)。 传递给方法,而不是引用传递给值。如果您想要更改原始变量,您有两个选择:从方法中传回新值;创建一个包装值的类。

选项1:

int x = 10;
x = change(x);

int change(int x) {
    return x + 1;
}

选项2:

class X {
    private int x;
    int getX() {
        return x;
    }

    void setX(int x) {
        this.x = x;
    }
}

X x = new X();
x.setX(10);
change(x);

void change(X x) {
    x.setX(x.getX() + 1);
}

答案 4 :(得分:0)

Java方法不可能将作为参数传递给它的变量更改为。运行此代码后:

int x = 10;
change(x);
System.out.println(x);

x 始终包含10 - 您无法在change中写任何内容以使其具有任何其他值。

作为替代方案,您可以让change返回新值,然后使用

x = change(x);