日期:2014-05-20  浏览次数:20703 次

【小白求解】关于静态变量的问题,问下代码的问题
public class x {
private static int a;

public static void main(String[] args) {

modify(a);
System.out.println(a);
}

public static void modify(int a) {
a++;
}
}
这个要怎么稍作修改能使a=1啊,还有就是private static int a;这一行 为什么与public static void main(String[] args)互换会产生错误?谢谢大虾。。

------解决方案--------------------
为什么不能打印1,是因为这里是值传递,并不是对象传递,int a,这里的a不是对象,只是代表了一个整数
改成这样:

public class x {


public static void main(String[] args) {

modify();
System.out.println(a);
}
private static int a=0;
public static void modify() {
a++;
}
}

至于你说的互换报错的问题, 没出现这个情况
------解决方案--------------------
引用:
关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number
            2、为什么private static int a = 0这一行不能放到main方法中

1、他处理的方法和你不一样。
你是想通过传参修改a(因为是基本数据类型,值传递,所以改不了a),而他的modify是直接修改全局变量a。
2、方法体内不能有权限修饰符
------解决方案--------------------
引用:
关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number
            2、为什么private static int a = 0这一行不能放到main方法中

1.思维,要面对对象,而不要面向过程,别几个方法把需要处理的数据传来传去了。
2.类里面声明的static变量为类变量,非static变量为对象变量;方法里声明的变量只能是临时变量。