Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法

类方法与实例方法的区别

类方法

用static修饰的方法。

由于类方法是属于整个类的,所以类方法的方法体中不能有与类的对象有关的内容。
即类方法体有如下限制:
1.类方法中不能引用对象变量;
2.类方法中不能调用类的对象方法;
3.在类方法中不能调使用super,this关键字;
4.类方法不能被覆盖。

实例方法

当一个类创建了一个对象后,这个对象就可以调用该类的方法(对象方法)。

1.实例方法中可以引用对象变量,也可以引用类变量;
2.实例方法中可以调用类方法;
3.对象方法中可以使用super,this关键字。

区别和注意事项
区别:类方法可以通过类名调用,实例方法不能通过类名调用
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址
当该类创建对象后,类中的实例方法才分配入口地址,
从而实例方法可以被类创建的任何对象调用执行。
类方法在该类被加载到内存时,就分配了相应的入口地址。
从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。
类方法的入口地址直到程序退出时才被取消。

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

在Java语言中,类中的类方法不可以操作实例变量,也不可以调用实例方法,
这是因为在类创建对象之前,实例成员变量还没有分配内存,而且实例方法也没有入口地址

方法引用

Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法

对象::实例方法名Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法

构造器引用

Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法
Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法

数组引用

Java8新特性 方法引用和构造器引用和数组引用 类方法与实例方法