java里的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 06:48:59
public class a{
static int n;
public void method(int n){
n=10;
System.out.println("this.n="+this.n);
}
public static void main(String [] args){
a s=new a();
s.method(7);
System.out.println("n="+n);
}
}
运行出来的结果为什么会是:this.n=0
n=0

是这样的,首先我们来看方法
public void method(int n){
n=10;
System.out.println("this.n="+this.n);
}

这其实是形参与实参的区别。
这里传进来了一个参数n,这个n是形参,可以理解为只有method方法才有的参数,关键在于-----this.n,楼主可能还没有弄清this.n和n的区别,this在这里代表了a类,也就是楼主所写的类,而this.n就是a类的n参数,同时,a的参数n是static定义过的,也就是全局变量,同时这个n也就是实参,如果不直接对a类的n操作,对于this.n是没有影响的。

换种通俗的说法,a类有一个n,a类中的method方法有一个n,如果在method方法中使用a类的n就用this.n,用method方法的n,直接用n调用。

现在看上面的方法,如果这么写,也许楼主就很容易明白了。
public void method(int p){
p=10;
System.out.println("this.n="+this.n);
}

这里的p就是method方法中的形参n。结果是一样的。

希望我说明白了,谢谢。 祝你早日进步。

因为你输出的是静态变量n

int 基本类型,默认设置为0