Java实例方法和类方法_Java教程

内容摘要
实例方法和类方法的定义:在方法声明时,方法类型前面不加关键字static修饰的是实例方法,加关键字static修饰的是类方法,也称为静态方法。例如:class Main {
int a;
float
文章正文

实例方法和类方法的定义:

在方法声明时,方法类型前面不加关键字static修饰的是实例方法,加关键字static修饰的是类方法,也称为静态方法。

例如:

class Main {
    int a;
    float max(float b,float c) { //实例方法
        ……
    }
    static float max(float d,float e) { //类方法
        ……
    }
}

实例方法和类方法的区别:

(1)对象调用实例方法:

当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,只有该类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。

注意:当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。

实例方法中不仅可以操作实例变量,还可以操作类变量。当对象调用实例方法时,该方法中出现的实例变量和类变量都是分配给该对象的变量,只不过类变量和其他所有的对象共享而已。

(2)类名调用类方法:

对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址,从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出才被取消。

注意:实例方法不能通过类名调用,只能由对象来调用。而且因为在类创建对象之前,实例成员变量还没有分配内存,所以类方法不可以操作实例变量。

(3)类方法的设计原则:

如果一个方法不需要操作类中的任何实例变量,就可以满足程序的需要,就可以考虑将这样的方法设计为一个static方法。

对于static方法,不必创建对象就可以用类名直接调用它,如果创建对象会导致类中的实例变量被分配内存空间。

 

 

 

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!