java中带有方法的For循环迭代器

java中带有方法的For循环迭代器,java,Java,我正在尝试执行一个简单的for循环,通过方法完成迭代。未指定其返回值 public class DefaultC { public static void main(String[] args) { int i = 1; for(i= 10;i<=50; i=method(i)){ System.out.println(i); } } static int method(int i)

我正在尝试执行一个简单的for循环,通过方法完成迭代。未指定其返回值

    public class DefaultC {

    public static void main(String[] args) {
        int i = 1;
        for(i= 10;i<=50; i=method(i)){
            System.out.println(i);
        }
    }

    static int method(int i){
        return i++;
    }
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;

对于(i=10;i
++i
递增,然后返回
i


i++
返回
i
,然后递增它
++i
递增,然后返回
i

static int method(int i){
        return i++;
    }
i++
返回
i
,然后递增它

static int method(int i){
        return i++;
    }
此方法正在执行后增量,这意味着它将返回作为方法参数传递的
i
的值,之后它会增加
i
的值,这现在根本没有用,因为变量i的范围仅取决于此方法

尝试执行预增量

return ++i;
编辑:根据OP的评论


@Prashant by i++它是有效的,但为什么i=method(i)不能呢

for(i=10;i
此方法正在执行后增量,这意味着它将返回作为方法参数传递的
i
的值,之后它会增加
i
的值,这现在根本没有用,因为变量i的范围仅取决于此方法

尝试执行预增量

return ++i;
编辑:根据OP的评论


@Prashant by i++它是有效的,但为什么i=method(i)不能呢


for(i=10;i原因是
i++
有效,但
increment(i)
无效,这是因为要增加的变量不同

  • i++
    正在递增局部变量,因此可以看到其值的变化
  • increment(i)
    是将
    i
    复制到一个新变量,该变量恰好也被命名为
    i
    ,并在为return语句获取其值后,将其递增

    循环的局部变量由
    ++
    保持不变,正如
    int j=i;j++;
    不会更改
    i
    的值一样

在Java中,方法参数​ 是的


但同样重要的是要注意,即使Java确实通过引用传递方法参数,在
i++
i=i++
之间仍然存在语义差异(这类似于
i=increment(i)
情况)。另一个答案已经涵盖了为什么
i=i++
不起作用。

原因是
i++
起作用,但
increment(i)
不起作用,这是因为您增加的变量不同

  • i++
    正在递增局部变量,因此可以看到其值的变化
  • increment(i)
    是将
    i
    复制到一个新变量,该变量恰好也被命名为
    i
    ,并在为return语句获取其值后,将其递增

    循环的局部变量由
    ++
    保持不变,正如
    int j=i;j++;
    不会更改
    i
    的值一样

在Java中,方法参数​ 是的


但同样重要的是要注意,即使Java确实通过引用传递方法参数,在
i++
i=i++
之间仍然存在语义差异(这类似于
i=increment(i)
情况)。另一个答案已经说明了为什么
i=i++
不起作用。

i++返回i的值,然后它会递增。 你需要做的是,使用++i

举个例子说明

public class DefaultC {

public static void main(String[] args) {
    int i = 1;
    for(i= 10;i<=50; i=method(i)){
        System.out.println(i);
    }
}

 static int method(int i){
    return ++i;
 }
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;

for(i=10;ii++返回i的值,之后它会增加。 你需要做的是,使用++i

举个例子说明

public class DefaultC {

public static void main(String[] args) {
    int i = 1;
    for(i= 10;i<=50; i=method(i)){
        System.out.println(i);
    }
}

 static int method(int i){
    return ++i;
 }
}
公共类DefaultC{
公共静态void main(字符串[]args){
int i=1;

对于(i=10;i阅读了关于后增量运算符的内容。它不会返回您认为它会返回的内容。执行一个返回
i+1
i=method(i),它会返回每增加一次的值。但它没有赋值。为什么?@Prashant by i++它会工作,但为什么i=method(i)cant?@karthick请阅读更多关于变量范围的信息,然后是关于增量后运算符和增量前运算符的信息。阅读关于增量后运算符的信息。它不会返回您认为它会返回的内容。执行返回
i+1
i=method(i),它返回每增加一次的值。但它没有赋值。为什么?@Prashant by i++它可以工作,但为什么i=method(i)cant?@karchigh请阅读更多关于变量范围的信息,然后是关于增量后和增量前运算符的信息。