-7

我是Java的初学者。

为什么此代码正常工作:

public class world{
 static int i=1
public static void main(String args[]){
 System.out.print(i+",");
          m();
          m();
System.out.print(i);}
public static void m(){
         i+=2;
}}

虽然这段代码的工作方式不同:

public class world{
      static int i=1
public static void main(String args[]){
    System.out.print(i+",");
          m(i);
          m(i);
   System.out.print(i);}
public static void m(int i){
           i+=2;
}}

请解释一下这个问题。

4

1 回答 1

0

您的问题是您在第二个块中声明了一个与静态变量同名的局部变量。

所以ii += 2;第二个块中是更新i传递给方法的,而不是静态字段。

所以每次调用m(i);都会更新i到 3,然后什么都不做。通过添加System.out.println(i);到方法来确认,它们都会打印3

如果您想在第二种方法中更新静态变量,您可以使用world.i += 2;.

例子

于 2018-10-12T13:44:48.910 回答