Java基础学习(七)

来源:互联网 发布:玉米田间调查数据 编辑:程序博客网 时间:2024/05/20 16:33

问:静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

静态变量不属于某个实例对象,而是属于类的,所以也成为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量也就可以被使用了。

总之,实例变量必须创建实例对象才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

public class VariantTest{    public static int staticVar=0;    public int instanceVar=0;    public VarianTest(){        staticVar++;        instanceVar++;    }}

对于上面这个程序,无论VariantTest类创建多少个实例对象,静态变量staticVar只有一份存储空间,并且每创建一个实例对象,staticVar变量就会加1;但是没创建一个实例对象,就会创建一个instanceVar变量并为其分配存储空间,并且每个instanceVar的值都会加1。

问:是否可以从一个static方法内部发出对非static方法的调用?

不可以

因为非static方法是要与对象连在一起的,必须创建一个对象之后,才可以在该对象上进行调用,而static方法调用时不需要创建对象,可以直接调用。

也就是说,当一个static方法被调用时,可能没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是要关联到哪个对象上呢?

0 0