Dotcpp  >  编程教程  >  Java类和对象  >  Java实例方法和类方法

Java实例方法和类方法

点击打开在线编译器,边学边练

实例方法和类方法的定义

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


例如:

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


实例方法和类方法的区别

1. 对象调用实例方法:

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


注意:

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


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


2. 类名调用类方法:

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


注意:

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


3. 类方法的设计原则:

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

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



知识点标签:类和对象


本文固定URL:https://www.dotcpp.com/course/750

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)