📅  最后修改于: 2020-03-20 00:58:10             🧑  作者: Mango
实例方法
实例方法是需要先创建其类的对象才能调用的方法。要调用实例方法,我们必须创建在其内定义该类的Object。
public void mango(String name)
{
// 要执行的代码....
}
// 返回类型可以使int, float String或其他数据类型.
内存分配: 这些方法本身存储在堆的永久生成空间中,但是参数(传递给它们的参数)及其局部变量和要返回的值在堆栈中分配。可以在它们所驻留的同一类中调用,也可以在同一包或其他包中定义的不同类中调用它们,具体取决于提供给所需实例方法的访问类型。
重要事项:
// Java展示实例方法的例子.
import java.io.*;
class Foo{
String name = "";
// Instance method to be called within the same class or
// from a another class defined in the same package
// or in different package.
public void mango(String name){
this.name = name;
}
}
class GFG {
public static void main (String[] args) {
// create an instance of the class.
Foo ob = new Foo();
// 调用实例方法.
ob.mango("芒果文档");
System.out.println(ob.name);
}
}
输出:
芒果文档
静态方法
静态方法是Java中可以在不创建类对象的情况下调用的方法。它们由类名称本身或对该类的对象的引用来引用。
public static void mango(String name)
{
// 方法的代码....
}
// 必须有static关键字.
// 返回类型可以使int, float String或其他数据类型.
内存分配:它们存储在堆的永久生成空间中,因为它们与它们所在的类相关联,而不与该类的对象相关联。但是它们的局部变量和传递给它们的参数存储在堆栈中。由于它们属于该类,因此可以在不创建该类的对象的情况下调用它们。
重要事项:
// 实例展示静态方法.
import java.io.*;
class mango{
public static String mangoName = "";
public static void mango(String name){
mangoName = name;
}
}
class GFG {
public static void main (String[] args) {
// 访问静态方法
mango.mango("芒果文档");
System.out.println(mango.mangoName);
mango obj = new mango();
obj.mango("棒极了");
System.out.println(obj.mangoName);
}
}
输出:
芒果文档
棒极了
注意:类中定义的静态变量及其值存储在PermGen内存空间中。
如果静态变量引用一个对象怎么办?
static int i = 1;
static Object obj = new Object();
在第一行中,值1将存储在PermGen中。在第二行中,引用obj将存储在PermGen中,其引用的对象将存储在堆节中。
什么时候使用静态方法
实例方法与静态方法