java基础,请高手指教

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:39:08
public class dfsf{
static int j=20;
public static void main(String[] adf){
int i=10;
dfsf p= new dfsf();
p.amethod(i);
System.out.println(i);
System.out.println(j);
}
public void amethod(int i){
i=i*2;
j=j*2;
}
}
打印结果:
10
40
我就不知道下面两行是干什么的
dfsf p= new dfsf();
p.amethod(i);
还有打印结果为什么不是20,40呢?

dfsf p= new dfsf();
在内存中分配出一块空间,创建了类dfsf的对象
p.amethod(i);
是把i的值传入进去,最后输出i的时候为什么是10,是因为你传的只是值,并不是引用,所以你改变的也只是方法中i的值变成20了,但是出了这个方法,i的值仍然是10,可以用局部变量这个来想
j的值变成40的是因为j是静态的,静态变量在内存中只存在一个,所以当你局部改变它之后,它在内存中的值也就改变了

看好你哦,好好学

构造方法,,初始化用的。

1. 静态方法(main)想访问非静态成员需要实例化该类(dfsf)
2. amethod方法中把i的值(10)传了过去,但是并不是i本身,i本身还是10

dfsf p= new dfsf();
创建dfsf对象

p.amethod(i);

p调用方法amethod(i)

简单地说, i是局部变量,你传递的是值,不是i本身

鉴于楼主对创建对象和调用方法还不知道,可能是刚刚开始学吧,所以建议还是去弄一本书来看,都是很基础的知识,你看了以后,就明白为什么了

第一行是要实例化以后才能调用dfsf()的方法。
第二行是调用dfsf()的方法。
因为传过去的是值类型,只是作为参数传过去的,并不是引用类型,如果是引用类型的话就是20了,比如传指针过去就是引用类型。