1:静态方法为什么不能访问类的实例变量
因为他俩跟本放的不是一个地方
静态方法存储在栈中,而其他的非静态方法存储在堆中
基本如图
栈 | 堆
静态 | 非静态
根本不属于一个系统....
2:按引用传递
import java.awt.Dimension; public class ReferenceTest { public static void main(String[] args) { Dimension d=new Dimension(5,10); ReferenceTest rt=new ReferenceTest(); System.out.println("Before modify d.height="+d.height); rt.modify(d); System.out.println("After modify d.height="+d.height); } void modify(Dimension dim){ dim.height=dim.height+1; System.out.println("dim.height="+dim.height); } }
输出:
Before modify d.height=10
dim.height=11
After modify d.height=11
引用变量d和dim都指向同一个对象。将对象变量传递到方法时,必须记住传递的是对象引用,而不是实际对象本身。根本没有传递实际的引用变量,而是该引用变量的一个副本。变量副本意味着获得该变量内的位副本,因此,当传递引用变量时,是在传递表示如何获取特定对象的位副本。换句话说,调用方法和被调用方法现在都具有该引用完全相同的副本,因此二者都将引用堆上完全相同的对象(这里不是副本)。
3:按值传递。
对于运行在单个JVM内的所有变量,Java实际上是按值传递的。按值传递意味着按变量的值传递,也就是传递该变量的一个副本。
原文:http://www.cnblogs.com/bulrush/p/5975263.html