java中static定义变量

运行结果为什么是0不是1?图片图片

把打印方法写在方法里面的x++后面试试

java中i=i++问题分析

请参考:http://www.importnew.com/17056.html

里面有详细的解释,与static无关,即使不用static还是0

    因为这个方法调用传入的是行参值0,方法中是对方法的参数x的自增操作,而不是静态成员变量的自增。如果修改方法不设置参数,改为name()就是1了。

因为你定义了参数x
根据就近原则,你的x++访问的是这个参数x变量,而不是成员变量x

 void name(int x){
   x++;//这里x累加的是局部变量x,不是类中定义静态变量x,所以累加和静态变量x无关,值不改变,还是0
 }

因为你的参数名也叫x,x++ 这里是将参数x自增,不是全局变量x。 所以全局变量x里面的值还是0.

class Test
{
public static int x = 9;

public static void name(int x)
{
    x ++;
    System.out.println(x);  //为10
}

public static void main(String[] args)
{
    name(x);
    System.out.println(x);  //为9
}

}

x++和main方法没有直接关系

这个其实是参数传递的问题,你只是把全局变量x的值传递给了形参x,x++只对形参也就是局部参数做了自增操作,全局变量x的值还是0,当name()方法
调用完毕后,这个形参就销毁了,而你输出的却是全局变量x