获得实例后用 实例名.方法名 这样的方式调用。
静态方法和非静态方法。区分就看关键字“static”。
在定义方法时候有这个关键字就是静态方法,没有就是非静态方法。
例:public static void test1(){} 静态方法
public void test2(){} 非静态方法
用法区别,静态方法调用时候直接类名加方法。非静态方法只能由类的实例来调用。
例:一个类A。它中有上面例子的2个方法。
你在main方法中,可以直接写A.test1()不能写A.test2()
想用test2方法,必须这样来。先A a = new A()a.test2()
java中静态方法和动态方法的区别:
1.静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收,
非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。
2.静态方法在初始化类时初始化,并分配内存;动态方法只有先创建类的实例对象后,才能调用动态方法
编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:最根本区别从编译角度来说吧:
1)静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public static main(args []){}方法,你能实例话吗?
静态方法不能被实例化,也不允许被实例化!
现在很多Java集成工具边写边编译的
因此 你可以通过“类名”+“.”+“静态方法的名()”来调用
2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在 内存的另一块区域 堆(heap)中。
也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用;
public class Student
{
private String name
/************************************************************
*下面两个方法是类的非静态方法封装 属性name,看一下在 main()
*如何调用
************************************************************/
public set(string init_name)
{
this.name = init_name
}
publc String get()
{
return this.name
}
//构造函数
public Student(){}
public Student(String init_name)
{
this.name = init_name
}
//下面是一个静态方法,看一下它在main()中如何调用
public static void PrintClassName()
{
System.out.print("该类的名字:Student")
}
}
//MainClass类
pubic class MainClass
{
public static void main(args[])
{
//先调用静态方法,不需要实例化对象
Student.PrintClassName()
//现在调用非静态方法,一定要实例化对象
Student stu1 = new Student()
stu1.set("Join")
String stu1_name = stu1.get()
}
}